Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

some untested files

  • Loading branch information...
commit 5738d0e2b61cef5b86d6187f79b9cf0a1776ac6c 0 parents
@substack authored
Showing with 328 additions and 0 deletions.
  1. +4 −0 README.markdown
  2. +255 −0 entities.json
  3. +47 −0 index.js
  4. +22 −0 package.json
4 README.markdown
@@ -0,0 +1,4 @@
+
+
+HTML entity tables shamelessly lifted from perl's
+[HTML::Entities](http://cpansearch.perl.org/src/GAAS/HTML-Parser-3.68/lib/HTML/Entities.pm)
255 entities.json
@@ -0,0 +1,255 @@
+{
+ "amp" : "&",
+ "gt" : ">",
+ "lt" : "<",
+ "quot" : "\"",
+ "apos" : "'",
+ "AElig" : 198,
+ "Aacute" : 193,
+ "Acirc" : 194,
+ "Agrave" : 192,
+ "Aring" : 197,
+ "Atilde" : 195,
+ "Auml" : 196,
+ "Ccedil" : 199,
+ "ETH" : 208,
+ "Eacute" : 201,
+ "Ecirc" : 202,
+ "Egrave" : 200,
+ "Euml" : 203,
+ "Iacute" : 205,
+ "Icirc" : 206,
+ "Igrave" : 204,
+ "Iuml" : 207,
+ "Ntilde" : 209,
+ "Oacute" : 211,
+ "Ocirc" : 212,
+ "Ograve" : 210,
+ "Oslash" : 216,
+ "Otilde" : 213,
+ "Ouml" : 214,
+ "THORN" : 222,
+ "Uacute" : 218,
+ "Ucirc" : 219,
+ "Ugrave" : 217,
+ "Uuml" : 220,
+ "Yacute" : 221,
+ "aacute" : 225,
+ "acirc" : 226,
+ "aelig" : 230,
+ "agrave" : 224,
+ "aring" : 229,
+ "atilde" : 227,
+ "auml" : 228,
+ "ccedil" : 231,
+ "eacute" : 233,
+ "ecirc" : 234,
+ "egrave" : 232,
+ "eth" : 240,
+ "euml" : 235,
+ "iacute" : 237,
+ "icirc" : 238,
+ "igrave" : 236,
+ "iuml" : 239,
+ "ntilde" : 241,
+ "oacute" : 243,
+ "ocirc" : 244,
+ "ograve" : 242,
+ "oslash" : 248,
+ "otilde" : 245,
+ "ouml" : 246,
+ "szlig" : 223,
+ "thorn" : 254,
+ "uacute" : 250,
+ "ucirc" : 251,
+ "ugrave" : 249,
+ "uuml" : 252,
+ "yacute" : 253,
+ "yuml" : 255,
+ "copy" : 169,
+ "reg" : 174,
+ "nbsp" : 160,
+ "iexcl" : 161,
+ "cent" : 162,
+ "pound" : 163,
+ "curren" : 164,
+ "yen" : 165,
+ "brvbar" : 166,
+ "sect" : 167,
+ "uml" : 168,
+ "ordf" : 170,
+ "laquo" : 171,
+ "not" : 172,
+ "shy" : 173,
+ "macr" : 175,
+ "deg" : 176,
+ "plusmn" : 177,
+ "sup1" : 185,
+ "sup2" : 178,
+ "sup3" : 179,
+ "acute" : 180,
+ "micro" : 181,
+ "para" : 182,
+ "middot" : 183,
+ "cedil" : 184,
+ "ordm" : 186,
+ "raquo" : 187,
+ "frac14" : 188,
+ "frac12" : 189,
+ "frac34" : 190,
+ "iquest" : 191,
+ "times" : 215,
+ "divide" : 247,
+ "OElig;" : 338,
+ "oelig;" : 339,
+ "Scaron;" : 352,
+ "scaron;" : 353,
+ "Yuml;" : 376,
+ "fnof;" : 402,
+ "circ;" : 710,
+ "tilde;" : 732,
+ "Alpha;" : 913,
+ "Beta;" : 914,
+ "Gamma;" : 915,
+ "Delta;" : 916,
+ "Epsilon;" : 917,
+ "Zeta;" : 918,
+ "Eta;" : 919,
+ "Theta;" : 920,
+ "Iota;" : 921,
+ "Kappa;" : 922,
+ "Lambda;" : 923,
+ "Mu;" : 924,
+ "Nu;" : 925,
+ "Xi;" : 926,
+ "Omicron;" : 927,
+ "Pi;" : 928,
+ "Rho;" : 929,
+ "Sigma;" : 931,
+ "Tau;" : 932,
+ "Upsilon;" : 933,
+ "Phi;" : 934,
+ "Chi;" : 935,
+ "Psi;" : 936,
+ "Omega;" : 937,
+ "alpha;" : 945,
+ "beta;" : 946,
+ "gamma;" : 947,
+ "delta;" : 948,
+ "epsilon;" : 949,
+ "zeta;" : 950,
+ "eta;" : 951,
+ "theta;" : 952,
+ "iota;" : 953,
+ "kappa;" : 954,
+ "lambda;" : 955,
+ "mu;" : 956,
+ "nu;" : 957,
+ "xi;" : 958,
+ "omicron;" : 959,
+ "pi;" : 960,
+ "rho;" : 961,
+ "sigmaf;" : 962,
+ "sigma;" : 963,
+ "tau;" : 964,
+ "upsilon;" : 965,
+ "phi;" : 966,
+ "chi;" : 967,
+ "psi;" : 968,
+ "omega;" : 969,
+ "thetasym;" : 977,
+ "upsih;" : 978,
+ "piv;" : 982,
+ "ensp;" : 8194,
+ "emsp;" : 8195,
+ "thinsp;" : 8201,
+ "zwnj;" : 8204,
+ "zwj;" : 8205,
+ "lrm;" : 8206,
+ "rlm;" : 8207,
+ "ndash;" : 8211,
+ "mdash;" : 8212,
+ "lsquo;" : 8216,
+ "rsquo;" : 8217,
+ "sbquo;" : 8218,
+ "ldquo;" : 8220,
+ "rdquo;" : 8221,
+ "bdquo;" : 8222,
+ "dagger;" : 8224,
+ "Dagger;" : 8225,
+ "bull;" : 8226,
+ "hellip;" : 8230,
+ "permil;" : 8240,
+ "prime;" : 8242,
+ "Prime;" : 8243,
+ "lsaquo;" : 8249,
+ "rsaquo;" : 8250,
+ "oline;" : 8254,
+ "frasl;" : 8260,
+ "euro;" : 8364,
+ "image;" : 8465,
+ "weierp;" : 8472,
+ "real;" : 8476,
+ "trade;" : 8482,
+ "alefsym;" : 8501,
+ "larr;" : 8592,
+ "uarr;" : 8593,
+ "rarr;" : 8594,
+ "darr;" : 8595,
+ "harr;" : 8596,
+ "crarr;" : 8629,
+ "lArr;" : 8656,
+ "uArr;" : 8657,
+ "rArr;" : 8658,
+ "dArr;" : 8659,
+ "hArr;" : 8660,
+ "forall;" : 8704,
+ "part;" : 8706,
+ "exist;" : 8707,
+ "empty;" : 8709,
+ "nabla;" : 8711,
+ "isin;" : 8712,
+ "notin;" : 8713,
+ "ni;" : 8715,
+ "prod;" : 8719,
+ "sum;" : 8721,
+ "minus;" : 8722,
+ "lowast;" : 8727,
+ "radic;" : 8730,
+ "prop;" : 8733,
+ "infin;" : 8734,
+ "ang;" : 8736,
+ "and;" : 8743,
+ "or;" : 8744,
+ "cap;" : 8745,
+ "cup;" : 8746,
+ "int;" : 8747,
+ "there4;" : 8756,
+ "sim;" : 8764,
+ "cong;" : 8773,
+ "asymp;" : 8776,
+ "ne;" : 8800,
+ "equiv;" : 8801,
+ "le;" : 8804,
+ "ge;" : 8805,
+ "sub;" : 8834,
+ "sup;" : 8835,
+ "nsub;" : 8836,
+ "sube;" : 8838,
+ "supe;" : 8839,
+ "oplus;" : 8853,
+ "otimes;" : 8855,
+ "perp;" : 8869,
+ "sdot;" : 8901,
+ "lceil;" : 8968,
+ "rceil;" : 8969,
+ "lfloor;" : 8970,
+ "rfloor;" : 8971,
+ "lang;" : 9001,
+ "rang;" : 9002,
+ "loz;" : 9674,
+ "spades;" : 9824,
+ "clubs;" : 9827,
+ "hearts;" : 9829,
+ "diams;" : 9830
+}
47 index.js
@@ -0,0 +1,47 @@
+var fs = require('fs');
+var entities = JSON.parse(
+ fs.readFileSync(__dirname + '/entities.json', 'utf8')
+);
+
+var revEntities = {};
+Object.keys(entities).forEach(function (key) {
+ var e = entities[key];
+ var s = typeof e === 'number' ? String.fromCharCode(e) : e;
+ revEntities[s] = key;
+});
+
+exports.encode = function (str) {
+ return str.split('').map(function (c) {
+ var e = revEntities[c];
+ if (e) {
+ return e.match(/;$/) ? e : e + ';';
+ }
+ else {
+ return c;
+ }
+ }).join('');
+};
+
+exports.decode = function (str) {
+ str
+ .replace(/&#(\d+);?/, function (_, code) {
+ return String.fromCharCode(code);
+ })
+ .replace(/&([^;\W]+;?)/g, function (m, e) {
+ var ee = e.replace(/;$/, '');
+ var target = entities[e]
+ || (e.match(/;$/) && entities[ee])
+ ;
+
+ if (typeof target === 'number') {
+ return String.fromCharCode(target);
+ }
+ else if (typeof target === 'string') {
+ return target;
+ }
+ else {
+ return m;
+ }
+ })
+ ;
+};
22 package.json
@@ -0,0 +1,22 @@
+{
+ "name": "ent",
+ "description": "Encode and decode HTML entities",
+ "version": "0.0.1",
+ "repository": "https://github.com/substack/node-ent.git",
+ "author": "James Halliday <mail@substack.net> (http://substack.net)",
+ "main": "./index.js",
+ "keywords" : [
+ "entities",
+ "entitify",
+ "entity",
+ "html",
+ "encode",
+ "decode"
+ ],
+ "scripts": {
+ "test": "expresso"
+ },
+ "engines": {
+ node : ">=0.2.0"
+ }
+}

0 comments on commit 5738d0e

Please sign in to comment.
Something went wrong with that request. Please try again.