react / react-0.13.3 / node_modules / coffee-react / node_modules / coffee-react-transform / lib / stringescape.js
80760 views1var hex = '0123456789abcdef'.split('');23module.exports = function stringEncode(input, opts) {4opts = opts || {};5var escaped = "";67for (var i = 0; i < input.length; i++) {8escaped = escaped + encodeChar(input.charAt(i), opts.preserveNewlines);9}1011return escaped;12}1314function encodeChar(inputChar, preserveNewlines) {15var character = inputChar.charAt(0);16var characterCode = inputChar.charCodeAt(0);1718switch(character) {19case '\n':20if (!preserveNewlines) return "\\n";21else return character;22case '\r':23if (!preserveNewlines) return "\\r";24else return character;25case '\'': return "\\'";26case '"': return "\\\"";27case '\&': return "\\&";28case '\\': return "\\\\";29case '\t': return "\\t";30case '\b': return "\\b";31case '\f': return "\\f";32case '/': return "\\x2F";33case '<': return "\\x3C";34case '>': return "\\x3E";35}3637if (characterCode > 127) {38var c = characterCode;39var a4 = c % 16;40c = ~~(c/16);41var a3 = c % 16;42c = ~~(c/16);43var a2 = c % 16;44c = ~~(c/16);45var a1 = c % 16;4647return ["\\u", hex[a1], hex[a2], hex[a3], hex[a4]].join('');48} else {49return inputChar;50}51}525354