• Jump To … +
    asm-llvm.js bcompile.js binterp.js browsercanvas.js bytecode-table.js canvastest.js ccanvas.js crender-styles.js crender.js ctiles.js events.js eventtests.js extensions.js global-es5.js global.js html-escape.js jcompile.js json2.js nodemain.js parse.js render.js render2.js require.js stdlib.js str-escape.js tdop.js tests.js text.js tiles.js tokenize.js top-level.js ts.js write-lua-bytecode.js write-lua-ops.js write-php-bytecode.js write-php-ops.js write-rust-bytecode.js write-rust-ops.js
  • str-escape.js

  • ¶

    A simple string escape function.

    define(function() { return function str_escape(s) {
            if (s.toSource) {
  • ¶

    If available, abuse toSource() to properly quote a string value.

                return s.toSource().slice(12,-2);
            }
  • ¶

    Erg, use hand-coded version.

            var quotes = '"';
            if (s.indexOf('"') !== -1 && s.indexOf("'") === -1) {
                quotes = "'";
            }
    
            var table = {};
            table["\n"] = "n";
            table["\r"] = "r";
            table["\f"] = "f";
            table["\b"] = "b";
            table["\t"] = "t";
            table["\\"] = "\\";
            table[quotes] = quotes;
    
            var result = "", i=0;
            while (i < s.length) {
                var c = s.charAt(i);
                if (table.hasOwnProperty(c)) {
                    result += "\\" + table[c];
                } else if (c < ' ' || c > '~') {
  • ¶

    XXX allow some accented UTF-8 characters (printable ones)?

                    var cc = c.charCodeAt(0).toString(16);
                    while (cc.length < 4) {
                        cc = "0" + cc;
                    }
                    result += "\\u" + cc;
                } else {
                    result += c;
                }
                i += 1;
            }
            return quotes + result + quotes;
        };
    });