(function ()()

in assets/ion-widget.js [9:50]


(function () {
  var script = document.createElement("script");
  script.src = "assets/ion-bundle.min.js";
  document.head.appendChild(script);

  var ionSource = document.currentScript.previousSibling.previousSibling;
  var id = Math.floor(Math.random() * 1000);
  var widget = document.createElement("div");
  widget.innerHTML
      = '<table width="100%" style="border: 0px">'
      + '<tr>'
      + '<td width="50%" style="padding: 0px">'
      + '<textarea rows="20" cols="60" id="ion-source-' + id + '" style="border: 1px solid lightgrey; background: white; color: black; padding: 5px; line-height: 1.3em">' + ionSource.innerHTML + '</textarea></td>'
      + '<td width="50%" style="padding: 0px"><code id="ion-text-' + id + '" style="display: block; white-space: pre-wrap"></code></td>'
      + '</tr>'
      + '<tr><td align="center"><button id="btn-ion-parse-' + id + '">parse</button></td><td align="right"><font size="-1">made with <a href="https://github.com/amzn/ion-js">ion-js</a></font></td></tr>'
      + '</table>';
  ionSource.parentNode.replaceChild(widget, ionSource);

  document.querySelector("#btn-ion-parse-" + id).addEventListener("click", function () {
    var source = document.getElementById("ion-source-" + id).value;
    var out = document.getElementById("ion-text-" + id);
    while (out.firstChild) {
      out.removeChild(out.firstChild);
    }
    parse(source, out);
  });

  var parse = function (source, out) {
    try {
      var reader = ion.makeReader(source);
      var writer = ion.makePrettyWriter();
      writer.writeValues(reader);
      out.append(String.fromCharCode.apply(null, writer.getBytes()));
      writer.close();
    } catch (e) {
      var errorSpan = document.createElement("span");
      errorSpan.innerHTML = '<font color="red"><b>Error:  ' + e.message + '</b></font>';
      out.append(errorSpan);
    }
  };
})()