| var punycode = require('punycode'); |
| var revEntities = require('./reversed.json'); |
| function encode (str, opts) { |
| if (typeof str !== 'string') { |
| throw new TypeError('Expected a String'); |
| if (opts.named) numeric = false; |
| if (opts.numeric !== undefined) numeric = opts.numeric; |
| var special = opts.special || { |
| var codePoints = punycode.ucs2.decode(str); |
| for (var i = 0; i < codePoints.length; i++) { |
| var c = punycode.ucs2.encode([ cc ]); |
| if (e && (cc >= 127 || special[c]) && !numeric) { |
| chars.push('&' + (/;$/.test(e) ? e : e + ';')); |
| else if (cc < 32 || cc >= 127 || special[c]) { |
| chars.push('&#' + cc + ';'); |