User:Ais523/bf2ul.js

From Esolang
Jump to navigation Jump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
//<pre><nowiki>
function bf2ul(a)
{
  var i;
  var b='';
  i=0;
  while(i<256)
  {
    var c=String.fromCharCode(i);
    if(c=='('||c==')'||c=='<'||c=='>'||c=='['||c==']'||c=='"'||(i<32&&i!=9&&i!=10))
      b+="((?)";
    else
      b+="(("+c+")";
    i++;
  }
  b+="(a(:^~)*(?)):^~"
  while(i--) b+=")";
  b+="(((a(:^~)*(!())):^~)((a(:^~)*(!())):^~))"
  a=a.split(/[^][.+<>-]/).join('');
  b+=a.split("+").join(":^~!^!~^^~!a~a~*~(:)~*(*)*a*^a~a*a~a~*")
      .split("-").join(":^~!^!~^^~!a~a~*~:(:)~^(!!()())*~(*)~^*a*^a~a*a~a~*")
      .split("<").join(":^~!^!~^^~!a~a*~a*^a~a*a~a*")
      .split(">").join("^a~a*:^~!^!~^^~!a~a*~a*^a~a*a~a~*")
      .split(".").join("(:)~a*^~(:^~!^!)~a*^~(^~!)~^^^!S")
      .split("[").join("(a(")
      .split("]").join(")~*(:^)*a(:^~!^!(!())~(!())~^^)~*(~^^)*^):^");
  return b;
}
//</nowiki></pre>