{"id":137,"date":"2011-06-28T06:11:20","date_gmt":"2011-06-28T06:11:20","guid":{"rendered":"http:\/\/patternweaver.com\/blog\/?p=137"},"modified":"2011-12-19T07:39:04","modified_gmt":"2011-12-19T07:39:04","slug":"string-entityencode-string-entitydecode-and-string-regexencode","status":"publish","type":"post","link":"http:\/\/patternweaver.com\/blog\/2011\/06\/string-entityencode-string-entitydecode-and-string-regexencode\/","title":{"rendered":"String.entityEncode, String.entityDecode and String.regexEncode"},"content":{"rendered":"<p>So as I do all this nifty client side content generation I found the need for a clean entity encode\/decode process. I was pretty shocked I couldn&#8217;t find anything to suit my needs so I built one. It builds it&#8217;s reverse lookup on load to minimize the total size, then generates the regex to encode\/decode. To this end, it also includes String.regexEncode, which encodes special characters in strings, for the purpose of generating a selector.<\/p>\n<div id=\"gist1495921\" class=\"gist\">\n    <div class=\"gist-file\">\n      <div class=\"gist-data\">\n        <div class=\"js-gist-file-update-container js-task-list-container file-box\">\n  <div id=\"file-mootoolsentityencoding-js\" class=\"file\">\n    \n\n  <div class=\"blob-wrapper data type-javascript\">\n      <table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L1\" class=\"blob-num js-line-number\" data-line-number=\"1\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC1\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">if<\/span>(<span class=\"pl-k\">!<\/span><span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">regexEncode<\/span>){<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L2\" class=\"blob-num js-line-number\" data-line-number=\"2\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC2\" class=\"blob-code blob-code-inner js-file-line\">    <span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">regexChars<\/span> <span class=\"pl-k\">=<\/span> [<span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span><span class=\"pl-cce\">\\\\<\/span><span class=\"pl-pds\">&#39;<\/span><\/span>, <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>&amp;<span class=\"pl-pds\">&#39;<\/span><\/span>,<span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>^<span class=\"pl-pds\">&#39;<\/span><\/span>, <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>$<span class=\"pl-pds\">&#39;<\/span><\/span>, <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>*<span class=\"pl-pds\">&#39;<\/span><\/span>, <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>+<span class=\"pl-pds\">&#39;<\/span><\/span>, <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>?<span class=\"pl-pds\">&#39;<\/span><\/span>, <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>.<span class=\"pl-pds\">&#39;<\/span><\/span>, <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>(<span class=\"pl-pds\">&#39;<\/span><\/span>, <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>)<span class=\"pl-pds\">&#39;<\/span><\/span>, <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>|<span class=\"pl-pds\">&#39;<\/span><\/span>, <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>{<span class=\"pl-pds\">&#39;<\/span><\/span>, <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>}<span class=\"pl-pds\">&#39;<\/span><\/span>, <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>[<span class=\"pl-pds\">&#39;<\/span><\/span>, <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>]<span class=\"pl-pds\">&#39;<\/span><\/span>];<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L3\" class=\"blob-num js-line-number\" data-line-number=\"3\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC3\" class=\"blob-code blob-code-inner js-file-line\">    <span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">regexEncodeRegexObject<\/span> <span class=\"pl-k\">=<\/span> <span class=\"pl-k\">new<\/span> <span class=\"pl-en\">RegExp<\/span>(<span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>([<span class=\"pl-cce\">\\\\<\/span><span class=\"pl-pds\">&#39;<\/span><\/span><span class=\"pl-k\">+<\/span><span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">regexChars<\/span>.<span class=\"pl-c1\">join<\/span>(<span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>|<span class=\"pl-cce\">\\\\<\/span><span class=\"pl-pds\">&#39;<\/span><\/span>)<span class=\"pl-k\">+<\/span><span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>])<span class=\"pl-pds\">&#39;<\/span><\/span>, <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>g<span class=\"pl-pds\">&#39;<\/span><\/span>);<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L4\" class=\"blob-num js-line-number\" data-line-number=\"4\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC4\" class=\"blob-code blob-code-inner js-file-line\">    <span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">implement<\/span>({<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L5\" class=\"blob-num js-line-number\" data-line-number=\"5\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC5\" class=\"blob-code blob-code-inner js-file-line\">        <span class=\"pl-en\">regexEncode<\/span> <span class=\"pl-k\">:<\/span> <span class=\"pl-k\">function<\/span>(){<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L6\" class=\"blob-num js-line-number\" data-line-number=\"6\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC6\" class=\"blob-code blob-code-inner js-file-line\">            <span class=\"pl-k\">return<\/span> <span class=\"pl-v\">this<\/span>.<span class=\"pl-c1\">replace<\/span>(<span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">regexEncodeRegexObject<\/span>, <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span><span class=\"pl-cce\">\\\\<\/span>$1<span class=\"pl-pds\">&#39;<\/span><\/span>);<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L7\" class=\"blob-num js-line-number\" data-line-number=\"7\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC7\" class=\"blob-code blob-code-inner js-file-line\">        }<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L8\" class=\"blob-num js-line-number\" data-line-number=\"8\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC8\" class=\"blob-code blob-code-inner js-file-line\">    });<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L9\" class=\"blob-num js-line-number\" data-line-number=\"9\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC9\" class=\"blob-code blob-code-inner js-file-line\">}<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L10\" class=\"blob-num js-line-number\" data-line-number=\"10\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC10\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L11\" class=\"blob-num js-line-number\" data-line-number=\"11\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC11\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-k\">if<\/span>( (<span class=\"pl-k\">!<\/span><span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">entityEncode<\/span>) <span class=\"pl-k\">&amp;&amp;<\/span> (<span class=\"pl-k\">!<\/span><span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">entityDecode<\/span>) ){<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L12\" class=\"blob-num js-line-number\" data-line-number=\"12\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC12\" class=\"blob-code blob-code-inner js-file-line\">    <span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">entities<\/span> <span class=\"pl-k\">=<\/span> {};<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L13\" class=\"blob-num js-line-number\" data-line-number=\"13\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC13\" class=\"blob-code blob-code-inner js-file-line\">    String.entities.byCode = { 38: &#39;&amp;amp;&#39;, 60: &#39;&amp;lt;&#39;, 62: &#39;&amp;gt;&#39;, 160: &#39;&amp;nbsp;&#39;, 161: &#39;&amp;iexcl;&#39;, 162: &#39;&amp;cent;&#39;, 163: &#39;&amp;pound;&#39;, 164: &#39;&amp;curren;&#39;, 165: &#39;&amp;yen;&#39;, 166: &#39;&amp;brvbar;&#39;, 167: &#39;&amp;sect;&#39;, 168: &#39;&amp;uml;&#39;, 169: &#39;&amp;copy;&#39;, 170: &#39;&amp;ordf;&#39;, 171: &#39;&amp;laquo;&#39;, 172: &#39;&amp;not;&#39;, 173: &#39;&amp;shy;&#39;, 174: &#39;&amp;reg;&#39;, 175: &#39;&amp;macr;&#39;, 176: &#39;&amp;deg;&#39;, 177: &#39;&amp;plusmn;&#39;, 178: &#39;&amp;sup2;&#39;, 179: &#39;&amp;sup3;&#39;, 180: &#39;&amp;acute;&#39;, 181: &#39;&amp;micro;&#39;, 182: &#39;&amp;para;&#39;, 183: &#39;&amp;middot;&#39;, 184: &#39;&amp;cedil;&#39;, 185: &#39;&amp;sup1;&#39;, 186: &#39;&amp;ordm;&#39;, 187: &#39;&amp;raquo;&#39;, 188: &#39;&amp;frac14;&#39;, 189: &#39;&amp;frac12;&#39;, 190: &#39;&amp;frac34;&#39;, 191: &#39;&amp;iquest;&#39;, 192: &#39;&amp;Agrave;&#39;, 193: &#39;&amp;Aacute;&#39;, 194: &#39;&amp;Acirc;&#39;, 195: &#39;&amp;Atilde;&#39;, 196: &#39;&amp;Auml;&#39;, 197: &#39;&amp;Aring;&#39;, 198: &#39;&amp;AElig;&#39;, 199: &#39;&amp;Ccedil;&#39;, 200: &#39;&amp;Egrave;&#39;, 201: &#39;&amp;Eacute;&#39;, 202: &#39;&amp;Ecirc;&#39;, 203: &#39;&amp;Euml;&#39;, 204: &#39;&amp;Igrave;&#39;, 205: &#39;&amp;Iacute;&#39;, 206: &#39;&amp;Icirc;&#39;, 207: &#39;&amp;Iuml;&#39;, 208: &#39;&amp;ETH;&#39;, 209: &#39;&amp;Ntilde;&#39;, 210: &#39;&amp;Ograve;&#39;, 211: &#39;&amp;Oacute;&#39;, 212: &#39;&amp;Ocirc;&#39;, 213: &#39;&amp;Otilde;&#39;, 214: &#39;&amp;Ouml;&#39;, 215: &#39;&amp;times;&#39;, 216: &#39;&amp;Oslash;&#39;, 217: &#39;&amp;Ugrave;&#39;, 218: &#39;&amp;Uacute;&#39;, 219: &#39;&amp;Ucirc;&#39;, 220: &#39;&amp;Uuml;&#39;, 221: &#39;&amp;Yacute;&#39;, 222: &#39;&amp;THORN;&#39;, 223: &#39;&amp;szlig;&#39;, 224: &#39;&amp;agrave;&#39;, 225: &#39;&amp;aacute;&#39;, 226: &#39;&amp;acirc;&#39;, 227: &#39;&amp;atilde;&#39;, 228: &#39;&amp;auml;&#39;, 229: &#39;&amp;aring;&#39;, 230: &#39;&amp;aelig;&#39;, 231: &#39;&amp;ccedil;&#39;, 232: &#39;&amp;egrave;&#39;, 233: &#39;&amp;eacute;&#39;, 234: &#39;&amp;ecirc;&#39;, 235: &#39;&amp;euml;&#39;, 236: &#39;&amp;igrave;&#39;, 237: &#39;&amp;iacute;&#39;, 238: &#39;&amp;icirc;&#39;, 239: &#39;&amp;iuml;&#39;, 240: &#39;&amp;eth;&#39;, 241: &#39;&amp;ntilde;&#39;, 242: &#39;&amp;ograve;&#39;, 243: &#39;&amp;oacute;&#39;, 244: &#39;&amp;ocirc;&#39;, 245: &#39;&amp;otilde;&#39;, 246: &#39;&amp;ouml;&#39;, 247: &#39;&amp;divide;&#39;, 248: &#39;&amp;oslash;&#39;, 249: &#39;&amp;ugrave;&#39;, 250: &#39;&amp;uacute;&#39;, 251: &#39;&amp;ucirc;&#39;, 252: &#39;&amp;uuml;&#39;, 253: &#39;&amp;yacute;&#39;, 254: &#39;&amp;thorn;&#39;, 255: &#39;&amp;yuml;&#39;, 264: &#39;&amp;#264;&#39;, 265: &#39;&amp;#265;&#39;, 338: &#39;&amp;OElig;&#39;, 339: &#39;&amp;oelig;&#39;, 352: &#39;&amp;Scaron;&#39;, 353: &#39;&amp;scaron;&#39;, 372: &#39;&amp;#372;&#39;, 373: &#39;&amp;#373;&#39;, 374: &#39;&amp;#374;&#39;, 375: &#39;&amp;#375;&#39;, 376: &#39;&amp;Yuml;&#39;, 402: &#39;&amp;fnof;&#39;, 710: &#39;&amp;circ;&#39;, 732: &#39;&amp;tilde;&#39;, 913: &#39;&amp;Alpha;&#39;, 914: &#39;&amp;Beta;&#39;, 915: &#39;&amp;Gamma;&#39;, 916: &#39;&amp;Delta;&#39;, 917: &#39;&amp;Epsilon;&#39;, 918: &#39;&amp;Zeta;&#39;, 919: &#39;&amp;Eta;&#39;, 920: &#39;&amp;Theta;&#39;, 921: &#39;&amp;Iota;&#39;, 922: &#39;&amp;Kappa;&#39;, 923: &#39;&amp;Lambda;&#39;, 924: &#39;&amp;Mu;&#39;, 925: &#39;&amp;Nu;&#39;, 926: &#39;&amp;Xi;&#39;, 927: &#39;&amp;Omicron;&#39;, 928: &#39;&amp;Pi;&#39;, 929: &#39;&amp;Rho;&#39;, 931: &#39;&amp;Sigma;&#39;, 932: &#39;&amp;Tau;&#39;, 933: &#39;&amp;Upsilon;&#39;, 934: &#39;&amp;Phi;&#39;, 935: &#39;&amp;Chi;&#39;, 936: &#39;&amp;Psi;&#39;, 937: &#39;&amp;Omega;&#39;, 945: &#39;&amp;alpha;&#39;, 946: &#39;&amp;beta;&#39;, 947: &#39;&amp;gamma;&#39;, 948: &#39;&amp;delta;&#39;, 949: &#39;&amp;epsilon;&#39;, 950: &#39;&amp;zeta;&#39;, 951: &#39;&amp;eta;&#39;, 952: &#39;&amp;theta;&#39;, 953: &#39;&amp;iota;&#39;, 954: &#39;&amp;kappa;&#39;, 955: &#39;&amp;lambda;&#39;, 956: &#39;&amp;mu;&#39;, 957: &#39;&amp;nu;&#39;, 958: &#39;&amp;xi;&#39;, 959: &#39;&amp;omicron;&#39;, 960: &#39;&amp;pi;&#39;, 961: &#39;&amp;rho;&#39;, 962: &#39;&amp;sigmaf;&#39;, 963: &#39;&amp;sigma;&#39;, 964: &#39;&amp;tau;&#39;, 965: &#39;&amp;upsilon;&#39;, 966: &#39;&amp;phi;&#39;, 967: &#39;&amp;chi;&#39;, 968: &#39;&amp;psi;&#39;, 969: &#39;&amp;omega;&#39;, 977: &#39;&amp;thetasym;&#39;, 978: &#39;&amp;upsih;&#39;, 982: &#39;&amp;piv;&#39;, 8194: &#39;&amp;ensp;&#39;, 8195: &#39;&amp;emsp;&#39;, 8201: &#39;&amp;thinsp;&#39;, 8204: &#39;&amp;zwnj;&#39;, 8205: &#39;&amp;zwj;&#39;, 8206: &#39;&amp;lrm;&#39;, 8207: &#39;&amp;rlm;&#39;, 8211: &#39;&amp;ndash;&#39;, 8212: &#39;&amp;mdash;&#39;, 8216: &#39;&amp;lsquo;&#39;, 8217: &#39;&amp;rsquo;&#39;, 8218: &#39;&amp;sbquo;&#39;, 8220: &#39;&amp;ldquo;&#39;, 8221: &#39;&amp;rdquo;&#39;, 8222: &#39;&amp;bdquo;&#39;, 8224: &#39;&amp;dagger;&#39;, 8225: &#39;&amp;Dagger;&#39;, 8226: &#39;&amp;bull;&#39;, 8230: &#39;&amp;hellip;&#39;, 8240: &#39;&amp;permil;&#39;, 8242: &#39;&amp;prime;&#39;, 8243: &#39;&amp;Prime;&#39;, 8249: &#39;&amp;lsaquo;&#39;, 8250: &#39;&amp;rsaquo;&#39;, 8254: &#39;&amp;oline;&#39;, 8260: &#39;&amp;frasl;&#39;, 8364: &#39;&amp;euro;&#39;, 8472: &#39;&amp;weierp;&#39;, 8465: &#39;&amp;image;&#39;, 8476: &#39;&amp;real;&#39;, 8482: &#39;&amp;trade;&#39;, 8501: &#39;&amp;alefsym;&#39;, 8592: &#39;&amp;larr;&#39;, 8593: &#39;&amp;uarr;&#39;, 8594: &#39;&amp;rarr;&#39;, 8595: &#39;&amp;darr;&#39;, 8596: &#39;&amp;harr;&#39;, 8629: &#39;&amp;crarr;&#39;, 8656: &#39;&amp;lArr;&#39;, 8657: &#39;&amp;uArr;&#39;, 8658: &#39;&amp;rArr;&#39;, 8659: &#39;&amp;dArr;&#39;, 8660: &#39;&amp;hArr;&#39;, 8704: &#39;&amp;forall;&#39;, 8706: &#39;&amp;part;&#39;, 8707: &#39;&amp;exist;&#39;, 8709: &#39;&amp;empty;&#39;, 8711: &#39;&amp;nabla;&#39;, 8712: &#39;&amp;isin;&#39;, 8713: &#39;&amp;notin;&#39;, 8715: &#39;&amp;ni;&#39;, 8719: &#39;&amp;prod;&#39;, 8721: &#39;&amp;sum;&#39;, 8722: &#39;&amp;minus;&#39;, 8727: &#39;&amp;lowast;&#39;, 8729: &#39;&amp;#8729;&#39;, 8730: &#39;&amp;radic;&#39;, 8733: &#39;&amp;prop;&#39;, 8734: &#39;&amp;infin;&#39;, 8736: &#39;&amp;ang;&#39;, 8743: &#39;&amp;and;&#39;, 8744: &#39;&amp;or;&#39;, 8745: &#39;&amp;cap;&#39;, 8746: &#39;&amp;cup;&#39;, 8747: &#39;&amp;int;&#39;, 8756: &#39;&amp;there4;&#39;, 8764: &#39;&amp;sim;&#39;, 8773: &#39;&amp;cong;&#39;, 8776: &#39;&amp;asymp;&#39;, 8800: &#39;&amp;ne;&#39;, 8801: &#39;&amp;equiv;&#39;, 8804: &#39;&amp;le;&#39;, 8805: &#39;&amp;ge;&#39;, 8834: &#39;&amp;sub;&#39;, 8835: &#39;&amp;sup;&#39;, 8836: &#39;&amp;nsub;&#39;, 8838: &#39;&amp;sube;&#39;, 8839: &#39;&amp;supe;&#39;, 8853: &#39;&amp;oplus;&#39;, 8855: &#39;&amp;otimes;&#39;, 8869: &#39;&amp;perp;&#39;, 8901: &#39;&amp;sdot;&#39;, 8968: &#39;&amp;lceil;&#39;, 8969: &#39;&amp;rceil;&#39;, 8970: &#39;&amp;lfloor;&#39;, 8971: &#39;&amp;rfloor;&#39;, 9001: &#39;&amp;lang;&#39;, 9002: &#39;&amp;rang;&#39;, 9642: &#39;&amp;#9642;&#39;, 9643: &#39;&amp;#9643;&#39;, 9674: &#39;&amp;loz;&#39;, 9702: &#39;&amp;#9702;&#39;, 9824: &#39;&amp;spades;&#39;, 9827: &#39;&amp;clubs;&#39;, 9829: &#39;&amp;hearts;&#39;, 9830: &#39;&amp;diams;&#39; };<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L14\" class=\"blob-num js-line-number\" data-line-number=\"14\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC14\" class=\"blob-code blob-code-inner js-file-line\">    <span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">entities<\/span>.<span class=\"pl-c1\">byName<\/span> <span class=\"pl-k\">=<\/span> {};<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L15\" class=\"blob-num js-line-number\" data-line-number=\"15\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC15\" class=\"blob-code blob-code-inner js-file-line\">    <span class=\"pl-c1\">Object<\/span>.<span class=\"pl-c1\">each<\/span>(<span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">entities<\/span>.<span class=\"pl-c1\">byCode<\/span>, <span class=\"pl-k\">function<\/span>(<span class=\"pl-smi\">entity<\/span>, <span class=\"pl-smi\">code<\/span>){ <span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">entities<\/span>.<span class=\"pl-c1\">byName<\/span>[entity] <span class=\"pl-k\">=<\/span> code; });<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L16\" class=\"blob-num js-line-number\" data-line-number=\"16\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC16\" class=\"blob-code blob-code-inner js-file-line\">    <span class=\"pl-k\">var<\/span> charSelectorString <span class=\"pl-k\">=<\/span> <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>(<span class=\"pl-pds\">&#39;<\/span><\/span><span class=\"pl-k\">+<\/span><span class=\"pl-c1\">Object<\/span>.<span class=\"pl-c1\">keys<\/span>(<span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">entities<\/span>.<span class=\"pl-c1\">byCode<\/span>).<span class=\"pl-c1\">map<\/span>( <span class=\"pl-k\">function<\/span>(<span class=\"pl-smi\">code<\/span>){ <span class=\"pl-k\">return<\/span> <span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">fromCharCode<\/span>(code).<span class=\"pl-c1\">regexEncode<\/span>() }, <span class=\"pl-v\">this<\/span>).<span class=\"pl-c1\">join<\/span>(<span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>|<span class=\"pl-pds\">&#39;<\/span><\/span>)<span class=\"pl-k\">+<\/span><span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>)<span class=\"pl-pds\">&#39;<\/span><\/span>;<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L17\" class=\"blob-num js-line-number\" data-line-number=\"17\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC17\" class=\"blob-code blob-code-inner js-file-line\">    <span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">entities<\/span>.<span class=\"pl-c1\">charSelector<\/span> <span class=\"pl-k\">=<\/span> <span class=\"pl-k\">new<\/span> <span class=\"pl-en\">RegExp<\/span>( charSelectorString, <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>g<span class=\"pl-pds\">&#39;<\/span><\/span> );<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L18\" class=\"blob-num js-line-number\" data-line-number=\"18\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC18\" class=\"blob-code blob-code-inner js-file-line\">    <span class=\"pl-k\">var<\/span> entitySelectorString <span class=\"pl-k\">=<\/span> <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>(<span class=\"pl-pds\">&#39;<\/span><\/span><span class=\"pl-k\">+<\/span><span class=\"pl-c1\">Object<\/span>.<span class=\"pl-c1\">keys<\/span>(<span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">entities<\/span>.<span class=\"pl-c1\">byName<\/span>).<span class=\"pl-c1\">map<\/span>(<span class=\"pl-k\">function<\/span>(<span class=\"pl-smi\">entity<\/span>){ <span class=\"pl-k\">return<\/span> entity.<span class=\"pl-c1\">regexEncode<\/span>() }, <span class=\"pl-v\">this<\/span>).<span class=\"pl-c1\">join<\/span>(<span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>|<span class=\"pl-pds\">&#39;<\/span><\/span>)<span class=\"pl-k\">+<\/span><span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>)<span class=\"pl-pds\">&#39;<\/span><\/span>;<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L19\" class=\"blob-num js-line-number\" data-line-number=\"19\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC19\" class=\"blob-code blob-code-inner js-file-line\">    <span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">entities<\/span>.<span class=\"pl-c1\">entitySelector<\/span> <span class=\"pl-k\">=<\/span> <span class=\"pl-k\">new<\/span> <span class=\"pl-en\">RegExp<\/span>( entitySelectorString, <span class=\"pl-s\"><span class=\"pl-pds\">&#39;<\/span>gi<span class=\"pl-pds\">&#39;<\/span><\/span>);<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L20\" class=\"blob-num js-line-number\" data-line-number=\"20\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC20\" class=\"blob-code blob-code-inner js-file-line\">    <span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">implement<\/span>({<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L21\" class=\"blob-num js-line-number\" data-line-number=\"21\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC21\" class=\"blob-code blob-code-inner js-file-line\">        <span class=\"pl-en\">entityEncode<\/span> <span class=\"pl-k\">:<\/span> <span class=\"pl-k\">function<\/span>(){<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L22\" class=\"blob-num js-line-number\" data-line-number=\"22\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC22\" class=\"blob-code blob-code-inner js-file-line\">            <span class=\"pl-k\">return<\/span> <span class=\"pl-v\">this<\/span>.<span class=\"pl-c1\">replace<\/span>(<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L23\" class=\"blob-num js-line-number\" data-line-number=\"23\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC23\" class=\"blob-code blob-code-inner js-file-line\">                <span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">entities<\/span>.<span class=\"pl-c1\">charSelector<\/span>,<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L24\" class=\"blob-num js-line-number\" data-line-number=\"24\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC24\" class=\"blob-code blob-code-inner js-file-line\">                <span class=\"pl-k\">function<\/span>(<span class=\"pl-smi\">str<\/span>, <span class=\"pl-smi\">chr<\/span>) {<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L25\" class=\"blob-num js-line-number\" data-line-number=\"25\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC25\" class=\"blob-code blob-code-inner js-file-line\">                    <span class=\"pl-k\">return<\/span> <span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">entities<\/span>.<span class=\"pl-c1\">byCode<\/span>[chr.<span class=\"pl-c1\">charCodeAt<\/span>()];<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L26\" class=\"blob-num js-line-number\" data-line-number=\"26\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC26\" class=\"blob-code blob-code-inner js-file-line\">                }<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L27\" class=\"blob-num js-line-number\" data-line-number=\"27\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC27\" class=\"blob-code blob-code-inner js-file-line\">            );<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L28\" class=\"blob-num js-line-number\" data-line-number=\"28\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC28\" class=\"blob-code blob-code-inner js-file-line\">        },<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L29\" class=\"blob-num js-line-number\" data-line-number=\"29\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC29\" class=\"blob-code blob-code-inner js-file-line\">        <span class=\"pl-en\">entityDecode<\/span> <span class=\"pl-k\">:<\/span> <span class=\"pl-k\">function<\/span>(){<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L30\" class=\"blob-num js-line-number\" data-line-number=\"30\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC30\" class=\"blob-code blob-code-inner js-file-line\">            <span class=\"pl-k\">return<\/span> <span class=\"pl-v\">this<\/span>.<span class=\"pl-c1\">replace<\/span>(<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L31\" class=\"blob-num js-line-number\" data-line-number=\"31\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC31\" class=\"blob-code blob-code-inner js-file-line\">                <span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">entities<\/span>.<span class=\"pl-c1\">entitySelector<\/span>,<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L32\" class=\"blob-num js-line-number\" data-line-number=\"32\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC32\" class=\"blob-code blob-code-inner js-file-line\">                <span class=\"pl-k\">function<\/span>(<span class=\"pl-smi\">str<\/span>, <span class=\"pl-smi\">entity<\/span>) {<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L33\" class=\"blob-num js-line-number\" data-line-number=\"33\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC33\" class=\"blob-code blob-code-inner js-file-line\">                    <span class=\"pl-k\">return<\/span> <span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">fromCharCode<\/span>(<span class=\"pl-c1\">String<\/span>.<span class=\"pl-c1\">entities<\/span>.<span class=\"pl-c1\">byName<\/span>[entity]);<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L34\" class=\"blob-num js-line-number\" data-line-number=\"34\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC34\" class=\"blob-code blob-code-inner js-file-line\">                }<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L35\" class=\"blob-num js-line-number\" data-line-number=\"35\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC35\" class=\"blob-code blob-code-inner js-file-line\">            );<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L36\" class=\"blob-num js-line-number\" data-line-number=\"36\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC36\" class=\"blob-code blob-code-inner js-file-line\">        }<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L37\" class=\"blob-num js-line-number\" data-line-number=\"37\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC37\" class=\"blob-code blob-code-inner js-file-line\">    });<\/td>\n      <\/tr>\n      <tr>\n        <td id=\"file-mootoolsentityencoding-js-L38\" class=\"blob-num js-line-number\" data-line-number=\"38\"><\/td>\n        <td id=\"file-mootoolsentityencoding-js-LC38\" class=\"blob-code blob-code-inner js-file-line\">}<\/td>\n      <\/tr>\n<\/table>\n\n  <\/div>\n\n  <\/div>\n  \n<\/div>\n\n      <\/div>\n      <div class=\"gist-meta\">\n        <a href=\"https:\/\/gist.github.com\/khrome\/1495921\/raw\/38a074ffb5b7aed6892b1cc383761cc20258800b\/MooToolsEntityEncoding.js\" style=\"float:right\">view raw<\/a>\n        <a href=\"https:\/\/gist.github.com\/khrome\/1495921#file-mootoolsentityencoding-js\">MooToolsEntityEncoding.js<\/a>\n        hosted with &#10084; by <a href=\"https:\/\/github.com\">GitHub<\/a>\n      <\/div>\n    <\/div>\n<\/div>\n\n<p>Enjoy,<br \/>\n    -abbey<\/p>\n","protected":false},"excerpt":{"rendered":"<p>So as I do all this nifty client side content generation I found the need for a clean entity encode\/decode process. I was pretty shocked I couldn&#8217;t find anything to suit my needs so I built one. It builds it&#8217;s reverse lookup on load to minimize the total size, then generates the regex to encode\/decode. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,11],"tags":[],"class_list":["post-137","post","type-post","status-publish","format-standard","hentry","category-js","category-mootools"],"_links":{"self":[{"href":"http:\/\/patternweaver.com\/blog\/wp-json\/wp\/v2\/posts\/137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/patternweaver.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/patternweaver.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/patternweaver.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/patternweaver.com\/blog\/wp-json\/wp\/v2\/comments?post=137"}],"version-history":[{"count":0,"href":"http:\/\/patternweaver.com\/blog\/wp-json\/wp\/v2\/posts\/137\/revisions"}],"wp:attachment":[{"href":"http:\/\/patternweaver.com\/blog\/wp-json\/wp\/v2\/media?parent=137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/patternweaver.com\/blog\/wp-json\/wp\/v2\/categories?post=137"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/patternweaver.com\/blog\/wp-json\/wp\/v2\/tags?post=137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}