Advertisement
fortsoft

HtmlEntities

Mar 23rd, 2021
790
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 25.07 KB | None | 0 0
  1. /**
  2.  * This library is open source software licensed under terms of the MIT License.
  3.  *
  4.  * Copyright (c) 2009-2021 Petr Červinka - FortSoft <[email protected]>
  5.  *
  6.  * Permission is hereby granted, free of charge, to any person obtaining a copy
  7.  * of this software and associated documentation files (the "Software"), to deal
  8.  * in the Software without restriction, including without limitation the rights
  9.  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  10.  * copies of the Software, and to permit persons to whom the Software is
  11.  * furnished to do so, subject to the following conditions:
  12.  *
  13.  * The above copyright notice and this permission notice shall be included in all
  14.  * copies or substantial portions of the Software.
  15.  *
  16.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17.  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  19.  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20.  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  21.  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  22.  * SOFTWARE.
  23.  **
  24.  * Version 1.0.0.0
  25.  */
  26.  
  27. using System;
  28. using System.Collections.Generic;
  29.  
  30. namespace FortSoft.Tools {
  31.     public sealed class HtmlEntities {
  32.         private Dictionary<string, int> nameToNumber;
  33.         private Dictionary<int, string> numberToName;
  34.  
  35.         public HtmlEntities() {
  36.             nameToNumber = new Dictionary<string, int>(252);
  37.             nameToNumber.Add("nbsp", 160);
  38.             nameToNumber.Add("iexcl", 161);
  39.             nameToNumber.Add("cent", 162);
  40.             nameToNumber.Add("pound", 163);
  41.             nameToNumber.Add("curren", 164);
  42.             nameToNumber.Add("yen", 165);
  43.             nameToNumber.Add("brvbar", 166);
  44.             nameToNumber.Add("sect", 167);
  45.             nameToNumber.Add("uml", 168);
  46.             nameToNumber.Add("copy", 169);
  47.             nameToNumber.Add("ordf", 170);
  48.             nameToNumber.Add("laquo", 171);
  49.             nameToNumber.Add("not", 172);
  50.             nameToNumber.Add("shy", 173);
  51.             nameToNumber.Add("reg", 174);
  52.             nameToNumber.Add("macr", 175);
  53.             nameToNumber.Add("deg", 176);
  54.             nameToNumber.Add("plusmn", 177);
  55.             nameToNumber.Add("sup2", 178);
  56.             nameToNumber.Add("sup3", 179);
  57.             nameToNumber.Add("acute", 180);
  58.             nameToNumber.Add("micro", 181);
  59.             nameToNumber.Add("para", 182);
  60.             nameToNumber.Add("middot", 183);
  61.             nameToNumber.Add("cedil", 184);
  62.             nameToNumber.Add("sup1", 185);
  63.             nameToNumber.Add("ordm", 186);
  64.             nameToNumber.Add("raquo", 187);
  65.             nameToNumber.Add("frac14", 188);
  66.             nameToNumber.Add("frac12", 189);
  67.             nameToNumber.Add("frac34", 190);
  68.             nameToNumber.Add("iquest", 191);
  69.             nameToNumber.Add("Agrave", 192);
  70.             nameToNumber.Add("Aacute", 193);
  71.             nameToNumber.Add("Acirc", 194);
  72.             nameToNumber.Add("Atilde", 195);
  73.             nameToNumber.Add("Auml", 196);
  74.             nameToNumber.Add("Aring", 197);
  75.             nameToNumber.Add("AElig", 198);
  76.             nameToNumber.Add("Ccedil", 199);
  77.             nameToNumber.Add("Egrave", 200);
  78.             nameToNumber.Add("Eacute", 201);
  79.             nameToNumber.Add("Ecirc", 202);
  80.             nameToNumber.Add("Euml", 203);
  81.             nameToNumber.Add("Igrave", 204);
  82.             nameToNumber.Add("Iacute", 205);
  83.             nameToNumber.Add("Icirc", 206);
  84.             nameToNumber.Add("Iuml", 207);
  85.             nameToNumber.Add("ETH", 208);
  86.             nameToNumber.Add("Ntilde", 209);
  87.             nameToNumber.Add("Ograve", 210);
  88.             nameToNumber.Add("Oacute", 211);
  89.             nameToNumber.Add("Ocirc", 212);
  90.             nameToNumber.Add("Otilde", 213);
  91.             nameToNumber.Add("Ouml", 214);
  92.             nameToNumber.Add("times", 215);
  93.             nameToNumber.Add("Oslash", 216);
  94.             nameToNumber.Add("Ugrave", 217);
  95.             nameToNumber.Add("Uacute", 218);
  96.             nameToNumber.Add("Ucirc", 219);
  97.             nameToNumber.Add("Uuml", 220);
  98.             nameToNumber.Add("Yacute", 221);
  99.             nameToNumber.Add("THORN", 222);
  100.             nameToNumber.Add("szlig", 223);
  101.             nameToNumber.Add("agrave", 224);
  102.             nameToNumber.Add("aacute", 225);
  103.             nameToNumber.Add("acirc", 226);
  104.             nameToNumber.Add("atilde", 227);
  105.             nameToNumber.Add("auml", 228);
  106.             nameToNumber.Add("aring", 229);
  107.             nameToNumber.Add("aelig", 230);
  108.             nameToNumber.Add("ccedil", 231);
  109.             nameToNumber.Add("egrave", 232);
  110.             nameToNumber.Add("eacute", 233);
  111.             nameToNumber.Add("ecirc", 234);
  112.             nameToNumber.Add("euml", 235);
  113.             nameToNumber.Add("igrave", 236);
  114.             nameToNumber.Add("iacute", 237);
  115.             nameToNumber.Add("icirc", 238);
  116.             nameToNumber.Add("iuml", 239);
  117.             nameToNumber.Add("eth", 240);
  118.             nameToNumber.Add("ntilde", 241);
  119.             nameToNumber.Add("ograve", 242);
  120.             nameToNumber.Add("oacute", 243);
  121.             nameToNumber.Add("ocirc", 244);
  122.             nameToNumber.Add("otilde", 245);
  123.             nameToNumber.Add("ouml", 246);
  124.             nameToNumber.Add("divide", 247);
  125.             nameToNumber.Add("oslash", 248);
  126.             nameToNumber.Add("ugrave", 249);
  127.             nameToNumber.Add("uacute", 250);
  128.             nameToNumber.Add("ucirc", 251);
  129.             nameToNumber.Add("uuml", 252);
  130.             nameToNumber.Add("yacute", 253);
  131.             nameToNumber.Add("thorn", 254);
  132.             nameToNumber.Add("yuml", 255);
  133.             nameToNumber.Add("fnof", 402);
  134.             nameToNumber.Add("Alpha", 913);
  135.             nameToNumber.Add("Beta", 914);
  136.             nameToNumber.Add("Gamma", 915);
  137.             nameToNumber.Add("Delta", 916);
  138.             nameToNumber.Add("Epsilon", 917);
  139.             nameToNumber.Add("Zeta", 918);
  140.             nameToNumber.Add("Eta", 919);
  141.             nameToNumber.Add("Theta", 920);
  142.             nameToNumber.Add("Iota", 921);
  143.             nameToNumber.Add("Kappa", 922);
  144.             nameToNumber.Add("Lambda", 923);
  145.             nameToNumber.Add("Mu", 924);
  146.             nameToNumber.Add("Nu", 925);
  147.             nameToNumber.Add("Xi", 926);
  148.             nameToNumber.Add("Omicron", 927);
  149.             nameToNumber.Add("Pi", 928);
  150.             nameToNumber.Add("Rho", 929);
  151.             nameToNumber.Add("Sigma", 931);
  152.             nameToNumber.Add("Tau", 932);
  153.             nameToNumber.Add("Upsilon", 933);
  154.             nameToNumber.Add("Phi", 934);
  155.             nameToNumber.Add("Chi", 935);
  156.             nameToNumber.Add("Psi", 936);
  157.             nameToNumber.Add("Omega", 937);
  158.             nameToNumber.Add("alpha", 945);
  159.             nameToNumber.Add("beta", 946);
  160.             nameToNumber.Add("gamma", 947);
  161.             nameToNumber.Add("delta", 948);
  162.             nameToNumber.Add("epsilon", 949);
  163.             nameToNumber.Add("zeta", 950);
  164.             nameToNumber.Add("eta", 951);
  165.             nameToNumber.Add("theta", 952);
  166.             nameToNumber.Add("iota", 953);
  167.             nameToNumber.Add("kappa", 954);
  168.             nameToNumber.Add("lambda", 955);
  169.             nameToNumber.Add("mu", 956);
  170.             nameToNumber.Add("nu", 957);
  171.             nameToNumber.Add("xi", 958);
  172.             nameToNumber.Add("omicron", 959);
  173.             nameToNumber.Add("pi", 960);
  174.             nameToNumber.Add("rho", 961);
  175.             nameToNumber.Add("sigmaf", 962);
  176.             nameToNumber.Add("sigma", 963);
  177.             nameToNumber.Add("tau", 964);
  178.             nameToNumber.Add("upsilon", 965);
  179.             nameToNumber.Add("phi", 966);
  180.             nameToNumber.Add("chi", 967);
  181.             nameToNumber.Add("psi", 968);
  182.             nameToNumber.Add("omega", 969);
  183.             nameToNumber.Add("thetasym", 977);
  184.             nameToNumber.Add("upsih", 978);
  185.             nameToNumber.Add("piv", 982);
  186.             nameToNumber.Add("bull", 8226);
  187.             nameToNumber.Add("hellip", 8230);
  188.             nameToNumber.Add("prime", 8242);
  189.             nameToNumber.Add("Prime", 8243);
  190.             nameToNumber.Add("oline", 8254);
  191.             nameToNumber.Add("frasl", 8260);
  192.             nameToNumber.Add("weierp", 8472);
  193.             nameToNumber.Add("image", 8465);
  194.             nameToNumber.Add("real", 8476);
  195.             nameToNumber.Add("trade", 8482);
  196.             nameToNumber.Add("alefsym", 8501);
  197.             nameToNumber.Add("larr", 8592);
  198.             nameToNumber.Add("uarr", 8593);
  199.             nameToNumber.Add("rarr", 8594);
  200.             nameToNumber.Add("darr", 8595);
  201.             nameToNumber.Add("harr", 8596);
  202.             nameToNumber.Add("crarr", 8629);
  203.             nameToNumber.Add("lArr", 8656);
  204.             nameToNumber.Add("uArr", 8657);
  205.             nameToNumber.Add("rArr", 8658);
  206.             nameToNumber.Add("dArr", 8659);
  207.             nameToNumber.Add("hArr", 8660);
  208.             nameToNumber.Add("forall", 8704);
  209.             nameToNumber.Add("part", 8706);
  210.             nameToNumber.Add("exist", 8707);
  211.             nameToNumber.Add("empty", 8709);
  212.             nameToNumber.Add("nabla", 8711);
  213.             nameToNumber.Add("isin", 8712);
  214.             nameToNumber.Add("notin", 8713);
  215.             nameToNumber.Add("ni", 8715);
  216.             nameToNumber.Add("prod", 8719);
  217.             nameToNumber.Add("sum", 8721);
  218.             nameToNumber.Add("minus", 8722);
  219.             nameToNumber.Add("lowast", 8727);
  220.             nameToNumber.Add("radic", 8730);
  221.             nameToNumber.Add("prop", 8733);
  222.             nameToNumber.Add("infin", 8734);
  223.             nameToNumber.Add("ang", 8736);
  224.             nameToNumber.Add("and", 8743);
  225.             nameToNumber.Add("or", 8744);
  226.             nameToNumber.Add("cap", 8745);
  227.             nameToNumber.Add("cup", 8746);
  228.             nameToNumber.Add("int", 8747);
  229.             nameToNumber.Add("there4", 8756);
  230.             nameToNumber.Add("sim", 8764);
  231.             nameToNumber.Add("cong", 8773);
  232.             nameToNumber.Add("asymp", 8776);
  233.             nameToNumber.Add("ne", 8800);
  234.             nameToNumber.Add("equiv", 8801);
  235.             nameToNumber.Add("le", 8804);
  236.             nameToNumber.Add("ge", 8805);
  237.             nameToNumber.Add("sub", 8834);
  238.             nameToNumber.Add("sup", 8835);
  239.             nameToNumber.Add("nsub", 8836);
  240.             nameToNumber.Add("sube", 8838);
  241.             nameToNumber.Add("supe", 8839);
  242.             nameToNumber.Add("oplus", 8853);
  243.             nameToNumber.Add("otimes", 8855);
  244.             nameToNumber.Add("perp", 8869);
  245.             nameToNumber.Add("sdot", 8901);
  246.             nameToNumber.Add("lceil", 8968);
  247.             nameToNumber.Add("rceil", 8969);
  248.             nameToNumber.Add("lfloor", 8970);
  249.             nameToNumber.Add("rfloor", 8971);
  250.             nameToNumber.Add("lang", 9001);
  251.             nameToNumber.Add("rang", 9002);
  252.             nameToNumber.Add("loz", 9674);
  253.             nameToNumber.Add("spades", 9824);
  254.             nameToNumber.Add("clubs", 9827);
  255.             nameToNumber.Add("hearts", 9829);
  256.             nameToNumber.Add("diams", 9830);
  257.             nameToNumber.Add("quot", 34);
  258.             nameToNumber.Add("amp", 38);
  259.             nameToNumber.Add("lt", 60);
  260.             nameToNumber.Add("gt", 62);
  261.             nameToNumber.Add("OElig", 338);
  262.             nameToNumber.Add("oelig", 339);
  263.             nameToNumber.Add("Scaron", 352);
  264.             nameToNumber.Add("scaron", 353);
  265.             nameToNumber.Add("Yuml", 376);
  266.             nameToNumber.Add("circ", 710);
  267.             nameToNumber.Add("tilde", 732);
  268.             nameToNumber.Add("ensp", 8194);
  269.             nameToNumber.Add("emsp", 8195);
  270.             nameToNumber.Add("thinsp", 8201);
  271.             nameToNumber.Add("zwnj", 8204);
  272.             nameToNumber.Add("zwj", 8205);
  273.             nameToNumber.Add("lrm", 8206);
  274.             nameToNumber.Add("rlm", 8207);
  275.             nameToNumber.Add("ndash", 8211);
  276.             nameToNumber.Add("mdash", 8212);
  277.             nameToNumber.Add("lsquo", 8216);
  278.             nameToNumber.Add("rsquo", 8217);
  279.             nameToNumber.Add("sbquo", 8218);
  280.             nameToNumber.Add("ldquo", 8220);
  281.             nameToNumber.Add("rdquo", 8221);
  282.             nameToNumber.Add("bdquo", 8222);
  283.             nameToNumber.Add("dagger", 8224);
  284.             nameToNumber.Add("Dagger", 8225);
  285.             nameToNumber.Add("permil", 8240);
  286.             nameToNumber.Add("lsaquo", 8249);
  287.             nameToNumber.Add("rsaquo", 8250);
  288.             nameToNumber.Add("euro", 8364);
  289.             numberToName = new Dictionary<int, string>(252);
  290.             numberToName.Add(160, "nbsp");
  291.             numberToName.Add(161, "iexcl");
  292.             numberToName.Add(162, "cent");
  293.             numberToName.Add(163, "pound");
  294.             numberToName.Add(164, "curren");
  295.             numberToName.Add(165, "yen");
  296.             numberToName.Add(166, "brvbar");
  297.             numberToName.Add(167, "sect");
  298.             numberToName.Add(168, "uml");
  299.             numberToName.Add(169, "copy");
  300.             numberToName.Add(170, "ordf");
  301.             numberToName.Add(171, "laquo");
  302.             numberToName.Add(172, "not");
  303.             numberToName.Add(173, "shy");
  304.             numberToName.Add(174, "reg");
  305.             numberToName.Add(175, "macr");
  306.             numberToName.Add(176, "deg");
  307.             numberToName.Add(177, "plusmn");
  308.             numberToName.Add(178, "sup2");
  309.             numberToName.Add(179, "sup3");
  310.             numberToName.Add(180, "acute");
  311.             numberToName.Add(181, "micro");
  312.             numberToName.Add(182, "para");
  313.             numberToName.Add(183, "middot");
  314.             numberToName.Add(184, "cedil");
  315.             numberToName.Add(185, "sup1");
  316.             numberToName.Add(186, "ordm");
  317.             numberToName.Add(187, "raquo");
  318.             numberToName.Add(188, "frac14");
  319.             numberToName.Add(189, "frac12");
  320.             numberToName.Add(190, "frac34");
  321.             numberToName.Add(191, "iquest");
  322.             numberToName.Add(192, "Agrave");
  323.             numberToName.Add(193, "Aacute");
  324.             numberToName.Add(194, "Acirc");
  325.             numberToName.Add(195, "Atilde");
  326.             numberToName.Add(196, "Auml");
  327.             numberToName.Add(197, "Aring");
  328.             numberToName.Add(198, "AElig");
  329.             numberToName.Add(199, "Ccedil");
  330.             numberToName.Add(200, "Egrave");
  331.             numberToName.Add(201, "Eacute");
  332.             numberToName.Add(202, "Ecirc");
  333.             numberToName.Add(203, "Euml");
  334.             numberToName.Add(204, "Igrave");
  335.             numberToName.Add(205, "Iacute");
  336.             numberToName.Add(206, "Icirc");
  337.             numberToName.Add(207, "Iuml");
  338.             numberToName.Add(208, "ETH");
  339.             numberToName.Add(209, "Ntilde");
  340.             numberToName.Add(210, "Ograve");
  341.             numberToName.Add(211, "Oacute");
  342.             numberToName.Add(212, "Ocirc");
  343.             numberToName.Add(213, "Otilde");
  344.             numberToName.Add(214, "Ouml");
  345.             numberToName.Add(215, "times");
  346.             numberToName.Add(216, "Oslash");
  347.             numberToName.Add(217, "Ugrave");
  348.             numberToName.Add(218, "Uacute");
  349.             numberToName.Add(219, "Ucirc");
  350.             numberToName.Add(220, "Uuml");
  351.             numberToName.Add(221, "Yacute");
  352.             numberToName.Add(222, "THORN");
  353.             numberToName.Add(223, "szlig");
  354.             numberToName.Add(224, "agrave");
  355.             numberToName.Add(225, "aacute");
  356.             numberToName.Add(226, "acirc");
  357.             numberToName.Add(227, "atilde");
  358.             numberToName.Add(228, "auml");
  359.             numberToName.Add(229, "aring");
  360.             numberToName.Add(230, "aelig");
  361.             numberToName.Add(231, "ccedil");
  362.             numberToName.Add(232, "egrave");
  363.             numberToName.Add(233, "eacute");
  364.             numberToName.Add(234, "ecirc");
  365.             numberToName.Add(235, "euml");
  366.             numberToName.Add(236, "igrave");
  367.             numberToName.Add(237, "iacute");
  368.             numberToName.Add(238, "icirc");
  369.             numberToName.Add(239, "iuml");
  370.             numberToName.Add(240, "eth");
  371.             numberToName.Add(241, "ntilde");
  372.             numberToName.Add(242, "ograve");
  373.             numberToName.Add(243, "oacute");
  374.             numberToName.Add(244, "ocirc");
  375.             numberToName.Add(245, "otilde");
  376.             numberToName.Add(246, "ouml");
  377.             numberToName.Add(247, "divide");
  378.             numberToName.Add(248, "oslash");
  379.             numberToName.Add(249, "ugrave");
  380.             numberToName.Add(250, "uacute");
  381.             numberToName.Add(251, "ucirc");
  382.             numberToName.Add(252, "uuml");
  383.             numberToName.Add(253, "yacute");
  384.             numberToName.Add(254, "thorn");
  385.             numberToName.Add(255, "yuml");
  386.             numberToName.Add(402, "fnof");
  387.             numberToName.Add(913, "Alpha");
  388.             numberToName.Add(914, "Beta");
  389.             numberToName.Add(915, "Gamma");
  390.             numberToName.Add(916, "Delta");
  391.             numberToName.Add(917, "Epsilon");
  392.             numberToName.Add(918, "Zeta");
  393.             numberToName.Add(919, "Eta");
  394.             numberToName.Add(920, "Theta");
  395.             numberToName.Add(921, "Iota");
  396.             numberToName.Add(922, "Kappa");
  397.             numberToName.Add(923, "Lambda");
  398.             numberToName.Add(924, "Mu");
  399.             numberToName.Add(925, "Nu");
  400.             numberToName.Add(926, "Xi");
  401.             numberToName.Add(927, "Omicron");
  402.             numberToName.Add(928, "Pi");
  403.             numberToName.Add(929, "Rho");
  404.             numberToName.Add(931, "Sigma");
  405.             numberToName.Add(932, "Tau");
  406.             numberToName.Add(933, "Upsilon");
  407.             numberToName.Add(934, "Phi");
  408.             numberToName.Add(935, "Chi");
  409.             numberToName.Add(936, "Psi");
  410.             numberToName.Add(937, "Omega");
  411.             numberToName.Add(945, "alpha");
  412.             numberToName.Add(946, "beta");
  413.             numberToName.Add(947, "gamma");
  414.             numberToName.Add(948, "delta");
  415.             numberToName.Add(949, "epsilon");
  416.             numberToName.Add(950, "zeta");
  417.             numberToName.Add(951, "eta");
  418.             numberToName.Add(952, "theta");
  419.             numberToName.Add(953, "iota");
  420.             numberToName.Add(954, "kappa");
  421.             numberToName.Add(955, "lambda");
  422.             numberToName.Add(956, "mu");
  423.             numberToName.Add(957, "nu");
  424.             numberToName.Add(958, "xi");
  425.             numberToName.Add(959, "omicron");
  426.             numberToName.Add(960, "pi");
  427.             numberToName.Add(961, "rho");
  428.             numberToName.Add(962, "sigmaf");
  429.             numberToName.Add(963, "sigma");
  430.             numberToName.Add(964, "tau");
  431.             numberToName.Add(965, "upsilon");
  432.             numberToName.Add(966, "phi");
  433.             numberToName.Add(967, "chi");
  434.             numberToName.Add(968, "psi");
  435.             numberToName.Add(969, "omega");
  436.             numberToName.Add(977, "thetasym");
  437.             numberToName.Add(978, "upsih");
  438.             numberToName.Add(982, "piv");
  439.             numberToName.Add(8226, "bull");
  440.             numberToName.Add(8230, "hellip");
  441.             numberToName.Add(8242, "prime");
  442.             numberToName.Add(8243, "Prime");
  443.             numberToName.Add(8254, "oline");
  444.             numberToName.Add(8260, "frasl");
  445.             numberToName.Add(8472, "weierp");
  446.             numberToName.Add(8465, "image");
  447.             numberToName.Add(8476, "real");
  448.             numberToName.Add(8482, "trade");
  449.             numberToName.Add(8501, "alefsym");
  450.             numberToName.Add(8592, "larr");
  451.             numberToName.Add(8593, "uarr");
  452.             numberToName.Add(8594, "rarr");
  453.             numberToName.Add(8595, "darr");
  454.             numberToName.Add(8596, "harr");
  455.             numberToName.Add(8629, "crarr");
  456.             numberToName.Add(8656, "lArr");
  457.             numberToName.Add(8657, "uArr");
  458.             numberToName.Add(8658, "rArr");
  459.             numberToName.Add(8659, "dArr");
  460.             numberToName.Add(8660, "hArr");
  461.             numberToName.Add(8704, "forall");
  462.             numberToName.Add(8706, "part");
  463.             numberToName.Add(8707, "exist");
  464.             numberToName.Add(8709, "empty");
  465.             numberToName.Add(8711, "nabla");
  466.             numberToName.Add(8712, "isin");
  467.             numberToName.Add(8713, "notin");
  468.             numberToName.Add(8715, "ni");
  469.             numberToName.Add(8719, "prod");
  470.             numberToName.Add(8721, "sum");
  471.             numberToName.Add(8722, "minus");
  472.             numberToName.Add(8727, "lowast");
  473.             numberToName.Add(8730, "radic");
  474.             numberToName.Add(8733, "prop");
  475.             numberToName.Add(8734, "infin");
  476.             numberToName.Add(8736, "ang");
  477.             numberToName.Add(8743, "and");
  478.             numberToName.Add(8744, "or");
  479.             numberToName.Add(8745, "cap");
  480.             numberToName.Add(8746, "cup");
  481.             numberToName.Add(8747, "int");
  482.             numberToName.Add(8756, "there4");
  483.             numberToName.Add(8764, "sim");
  484.             numberToName.Add(8773, "cong");
  485.             numberToName.Add(8776, "asymp");
  486.             numberToName.Add(8800, "ne");
  487.             numberToName.Add(8801, "equiv");
  488.             numberToName.Add(8804, "le");
  489.             numberToName.Add(8805, "ge");
  490.             numberToName.Add(8834, "sub");
  491.             numberToName.Add(8835, "sup");
  492.             numberToName.Add(8836, "nsub");
  493.             numberToName.Add(8838, "sube");
  494.             numberToName.Add(8839, "supe");
  495.             numberToName.Add(8853, "oplus");
  496.             numberToName.Add(8855, "otimes");
  497.             numberToName.Add(8869, "perp");
  498.             numberToName.Add(8901, "sdot");
  499.             numberToName.Add(8968, "lceil");
  500.             numberToName.Add(8969, "rceil");
  501.             numberToName.Add(8970, "lfloor");
  502.             numberToName.Add(8971, "rfloor");
  503.             numberToName.Add(9001, "lang");
  504.             numberToName.Add(9002, "rang");
  505.             numberToName.Add(9674, "loz");
  506.             numberToName.Add(9824, "spades");
  507.             numberToName.Add(9827, "clubs");
  508.             numberToName.Add(9829, "hearts");
  509.             numberToName.Add(9830, "diams");
  510.             numberToName.Add(34, "quot");
  511.             numberToName.Add(38, "amp");
  512.             numberToName.Add(60, "lt");
  513.             numberToName.Add(62, "gt");
  514.             numberToName.Add(338, "OElig");
  515.             numberToName.Add(339, "oelig");
  516.             numberToName.Add(352, "Scaron");
  517.             numberToName.Add(353, "scaron");
  518.             numberToName.Add(376, "Yuml");
  519.             numberToName.Add(710, "circ");
  520.             numberToName.Add(732, "tilde");
  521.             numberToName.Add(8194, "ensp");
  522.             numberToName.Add(8195, "emsp");
  523.             numberToName.Add(8201, "thinsp");
  524.             numberToName.Add(8204, "zwnj");
  525.             numberToName.Add(8205, "zwj");
  526.             numberToName.Add(8206, "lrm");
  527.             numberToName.Add(8207, "rlm");
  528.             numberToName.Add(8211, "ndash");
  529.             numberToName.Add(8212, "mdash");
  530.             numberToName.Add(8216, "lsquo");
  531.             numberToName.Add(8217, "rsquo");
  532.             numberToName.Add(8218, "sbquo");
  533.             numberToName.Add(8220, "ldquo");
  534.             numberToName.Add(8221, "rdquo");
  535.             numberToName.Add(8222, "bdquo");
  536.             numberToName.Add(8224, "dagger");
  537.             numberToName.Add(8225, "Dagger");
  538.             numberToName.Add(8240, "permil");
  539.             numberToName.Add(8249, "lsaquo");
  540.             numberToName.Add(8250, "rsaquo");
  541.             numberToName.Add(8364, "euro");
  542.         }
  543.  
  544.         public string GetDecEntity(int ascii) {
  545.             return numberToName.ContainsKey(ascii) || ascii > 127 ? "&#" + ascii + ";" : null;
  546.         }
  547.  
  548.         public string GetHexEntity(int ascii) {
  549.             return numberToName.ContainsKey(ascii) || ascii > 127 ? "&#x" + ascii.ToString("X") + ";" : null;
  550.         }
  551.  
  552.         public string GetNameEntity(int ascii) {
  553.             return numberToName.ContainsKey(ascii) ? "&" + numberToName[ascii] + ";" : null;
  554.         }
  555.  
  556.         public int GetAsciiFromHtmlEntity(string htmlEntity) {
  557.             int ascii = 0;
  558.             if (htmlEntity.ToUpper().StartsWith("&#X")) {
  559.                 ascii = Convert.ToInt32(htmlEntity.Substring(3, htmlEntity.Length - 4), 16);
  560.             } else if (htmlEntity.StartsWith("&#")) {
  561.                 ascii = Convert.ToInt32(htmlEntity.Substring(2, htmlEntity.Length - 3));
  562.             } else if (htmlEntity.StartsWith("&")) {
  563.                 return nameToNumber[htmlEntity.Substring(1, htmlEntity.Length - 2)];
  564.             } else {
  565.                 return nameToNumber[htmlEntity];
  566.             }
  567.             if (numberToName.ContainsKey(ascii) || ascii > 127) {
  568.                 return ascii;
  569.             } else {
  570.                 throw new NotImplementedException();
  571.             }
  572.         }
  573.     }
  574. }
  575.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement