//! Constants needed to parse markdown. //! //! Most of these constants are magic numbers, such as the number of markers //! needed to parse [code (fenced)][code_fenced] //! ([`CODE_FENCED_SEQUENCE_SIZE_MIN`][]) or the max number of allowed markers //! in a [heading (atx)][heading_atx] //! ([`HEADING_ATX_OPENING_FENCE_SIZE_MAX`][]). //! //! Some constants are instead lists of things, such as the list of tag names //! considered in the **raw** production of [HTML (flow)][html_flow] //! ([`HTML_RAW_NAMES`][]), or the list of allowed named character references //! ([`CHARACTER_REFERENCE_NAMES`][]). //! //! [code_fenced]: crate::construct::code_fenced //! [heading_atx]: crate::construct::heading_atx //! [html_flow]: crate::construct::html_flow /// The number of characters allowed in a protocol of an [autolink][]. /// /// The protocol part is the `xxx` in ``. /// 32 characters is fine, 33 is too many. /// /// [autolink]: crate::construct::autolink pub const AUTOLINK_SCHEME_SIZE_MAX: usize = 32; /// The number of characters allowed in a domain of an email [autolink][]. /// /// There can be multiple “domains”. /// A domain part is each `xxx` in ``. /// 63 characters is fine, 64 is too many. /// /// [autolink]: crate::construct::autolink pub const AUTOLINK_DOMAIN_SIZE_MAX: usize = 63; /// The max number of characters in a decimal numeric /// [character reference][character_reference]. /// /// To illustrate, this allows `�` and disallows `�`. /// This limit is imposed because all bigger numbers are invalid. /// /// [character_reference]: crate::construct::character_reference pub const CHARACTER_REFERENCE_DECIMAL_SIZE_MAX: usize = 7; /// The max number of characters in a hexadecimal numeric /// [character reference][character_reference]. /// /// To illustrate, this allows `�` and disallows `�`. /// This limit is imposed because all bigger numbers are invalid. /// /// [character_reference]: crate::construct::character_reference pub const CHARACTER_REFERENCE_HEXADECIMAL_SIZE_MAX: usize = 6; /// The max number of characters in a named /// [character reference][character_reference]. /// /// This is the number of the longest name in [`CHARACTER_REFERENCE_NAMES`][]. /// It allows `∳` and prevents the parser from /// continuing for eons. /// /// [character_reference]: crate::construct::character_reference pub const CHARACTER_REFERENCE_NAMED_SIZE_MAX: usize = 31; /// The number of markers needed for [code (fenced)][code_fenced] to form. /// /// Like many things in markdown, the number is `3`. /// /// [code_fenced]: crate::construct::code_fenced pub const CODE_FENCED_SEQUENCE_SIZE_MIN: usize = 3; /// The number of spaces needed, before a line ending, for a [hard break /// (trailing)][hard_break_trailing] to form. /// /// [hard_break_trailing]: crate::construct::hard_break_trailing pub const HARD_BREAK_PREFIX_SIZE_MIN: usize = 2; /// The max number of markers allowed to form a [heading (atx)][heading_atx]. /// /// This limitation is imposed by HTML, which imposes a max heading rank of /// `6`. /// /// [heading_atx]: crate::construct::heading_atx pub const HEADING_ATX_OPENING_FENCE_SIZE_MAX: usize = 6; /// List of HTML tag names that form the **basic** production of /// [HTML (flow)][html_flow]. /// /// The **basic** production allows interleaving HTML and markdown with blank /// lines and allows flow (block) elements to interrupt definitions, paragraphs, /// and heading (setext). /// Tag name matching must be performed insensitive to case, and thus this list /// includes lowercase tag names. /// /// Tag names not on this list result in the **complete** production. /// /// > 👉 **Note**: `source` was removed on `main` of the `CommonMark` spec and /// > is slated to be released in `CommonMark@0.31`. /// /// ## References /// /// * [*§ 4.6 HTML blocks* in `CommonMark`](https://spec.commonmark.org/0.30/#html-blocks) /// * [*Remove source element as HTML block start condition* as `commonmark/commonmark-spec#710`](https://github.com/commonmark/commonmark-spec/pull/710) /// /// [html_flow]: crate::construct::html_flow pub const HTML_BLOCK_NAMES: [&str; 61] = [ "address", "article", "aside", "base", "basefont", "blockquote", "body", "caption", "center", "col", "colgroup", "dd", "details", "dialog", "dir", "div", "dl", "dt", "fieldset", "figcaption", "figure", "footer", "form", "frame", "frameset", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hr", "html", "iframe", "legend", "li", "link", "main", "menu", "menuitem", "nav", "noframes", "ol", "optgroup", "option", "p", "param", "section", "summary", "table", "tbody", "td", "tfoot", "th", "thead", "title", "tr", "track", "ul", ]; /// List of HTML tag names that form the **raw** production of /// [HTML (flow)][html_flow]. /// /// The **raw** production allows blank lines and thus no interleaving with /// markdown. /// Tag name matching must be performed insensitive to case, and thus this list /// includes lowercase tag names. /// /// The number of the longest tag name is also stored as a constant in /// [`HTML_RAW_SIZE_MAX`][]. /// /// > 👉 **Note**: `textarea` was added in `CommonMark@0.30`. /// /// ## References /// /// * [*§ 4.6 HTML blocks* in `CommonMark`](https://spec.commonmark.org/0.30/#html-blocks) /// /// [html_flow]: crate::construct::html_flow pub const HTML_RAW_NAMES: [&str; 4] = ["pre", "script", "style", "textarea"]; /// The number of the longest tag name in [`HTML_RAW_NAMES`][]. /// /// This is currently the size of `textarea`. pub const HTML_RAW_SIZE_MAX: usize = 8; /// To safeguard performance, labels are capped at a large number: `999`. pub const LINK_REFERENCE_SIZE_MAX: usize = 999; /// List of protocols allowed, when operating safely, as `href` on `a`. /// /// This list is based on what is allowed by GitHub. pub const SAFE_PROTOCOL_HREF: [&str; 6] = ["http", "https", "irc", "ircs", "mailto", "xmpp"]; /// List of protocols allowed, when operating safely, as `src` on `img`. /// /// This list is based on what is allowed by GitHub. // To do: image. #[allow(dead_code)] pub const SAFE_PROTOCOL_SRC: [&str; 2] = ["http", "https"]; /// The number of characters that form a tab stop. /// /// This relates to the number of whitespace characters needed to form certain /// constructs in markdown, most notable the whitespace required to form /// [code (indented)][code_indented]. /// /// > 👉 **Note**: each [`Code::VirtualSpace`][vs] and `Code::Char('\t' | ' ')` /// > counts. /// /// [code_indented]: crate::construct::code_indented /// [vs]: crate::tokenizer::Code::VirtualSpace pub const TAB_SIZE: usize = 4; /// The number of markers needed for a [thematic break][thematic_break] to form. /// /// Like many things in markdown, the number is `3`. /// /// [thematic_break]: crate::construct::thematic_break pub const THEMATIC_BREAK_MARKER_COUNT_MIN: usize = 3; // Important: please touch the below lists as few times as possible to keep Git small. /// List of names that can form a named /// [character reference][character_reference]. /// /// This list is sensitive to casing. /// /// The number of the longest name (`CounterClockwiseContourIntegral`) is also /// stored as a constant in [`CHARACTER_REFERENCE_NAMED_SIZE_MAX`][]. /// /// The corresponding values of this list are stored in /// [`CHARACTER_REFERENCE_VALUES`][]. /// They correspond through their index. /// /// ## References /// /// * [*§ 2.5 Entity and numeric character references* in `CommonMark`](https://spec.commonmark.org/0.30/#entity-and-numeric-character-references) /// /// [character_reference]: crate::construct::character_reference pub const CHARACTER_REFERENCE_NAMES: [&str; 2125] = [ "AElig", "AMP", "Aacute", "Abreve", "Acirc", "Acy", "Afr", "Agrave", "Alpha", "Amacr", "And", "Aogon", "Aopf", "ApplyFunction", "Aring", "Ascr", "Assign", "Atilde", "Auml", "Backslash", "Barv", "Barwed", "Bcy", "Because", "Bernoullis", "Beta", "Bfr", "Bopf", "Breve", "Bscr", "Bumpeq", "CHcy", "COPY", "Cacute", "Cap", "CapitalDifferentialD", "Cayleys", "Ccaron", "Ccedil", "Ccirc", "Cconint", "Cdot", "Cedilla", "CenterDot", "Cfr", "Chi", "CircleDot", "CircleMinus", "CirclePlus", "CircleTimes", "ClockwiseContourIntegral", "CloseCurlyDoubleQuote", "CloseCurlyQuote", "Colon", "Colone", "Congruent", "Conint", "ContourIntegral", "Copf", "Coproduct", "CounterClockwiseContourIntegral", "Cross", "Cscr", "Cup", "CupCap", "DD", "DDotrahd", "DJcy", "DScy", "DZcy", "Dagger", "Darr", "Dashv", "Dcaron", "Dcy", "Del", "Delta", "Dfr", "DiacriticalAcute", "DiacriticalDot", "DiacriticalDoubleAcute", "DiacriticalGrave", "DiacriticalTilde", "Diamond", "DifferentialD", "Dopf", "Dot", "DotDot", "DotEqual", "DoubleContourIntegral", "DoubleDot", "DoubleDownArrow", "DoubleLeftArrow", "DoubleLeftRightArrow", "DoubleLeftTee", "DoubleLongLeftArrow", "DoubleLongLeftRightArrow", "DoubleLongRightArrow", "DoubleRightArrow", "DoubleRightTee", "DoubleUpArrow", "DoubleUpDownArrow", "DoubleVerticalBar", "DownArrow", "DownArrowBar", "DownArrowUpArrow", "DownBreve", "DownLeftRightVector", "DownLeftTeeVector", "DownLeftVector", "DownLeftVectorBar", "DownRightTeeVector", "DownRightVector", "DownRightVectorBar", "DownTee", "DownTeeArrow", "Downarrow", "Dscr", "Dstrok", "ENG", "ETH", "Eacute", "Ecaron", "Ecirc", "Ecy", "Edot", "Efr", "Egrave", "Element", "Emacr", "EmptySmallSquare", "EmptyVerySmallSquare", "Eogon", "Eopf", "Epsilon", "Equal", "EqualTilde", "Equilibrium", "Escr", "Esim", "Eta", "Euml", "Exists", "ExponentialE", "Fcy", "Ffr", "FilledSmallSquare", "FilledVerySmallSquare", "Fopf", "ForAll", "Fouriertrf", "Fscr", "GJcy", "GT", "Gamma", "Gammad", "Gbreve", "Gcedil", "Gcirc", "Gcy", "Gdot", "Gfr", "Gg", "Gopf", "GreaterEqual", "GreaterEqualLess", "GreaterFullEqual", "GreaterGreater", "GreaterLess", "GreaterSlantEqual", "GreaterTilde", "Gscr", "Gt", "HARDcy", "Hacek", "Hat", "Hcirc", "Hfr", "HilbertSpace", "Hopf", "HorizontalLine", "Hscr", "Hstrok", "HumpDownHump", "HumpEqual", "IEcy", "IJlig", "IOcy", "Iacute", "Icirc", "Icy", "Idot", "Ifr", "Igrave", "Im", "Imacr", "ImaginaryI", "Implies", "Int", "Integral", "Intersection", "InvisibleComma", "InvisibleTimes", "Iogon", "Iopf", "Iota", "Iscr", "Itilde", "Iukcy", "Iuml", "Jcirc", "Jcy", "Jfr", "Jopf", "Jscr", "Jsercy", "Jukcy", "KHcy", "KJcy", "Kappa", "Kcedil", "Kcy", "Kfr", "Kopf", "Kscr", "LJcy", "LT", "Lacute", "Lambda", "Lang", "Laplacetrf", "Larr", "Lcaron", "Lcedil", "Lcy", "LeftAngleBracket", "LeftArrow", "LeftArrowBar", "LeftArrowRightArrow", "LeftCeiling", "LeftDoubleBracket", "LeftDownTeeVector", "LeftDownVector", "LeftDownVectorBar", "LeftFloor", "LeftRightArrow", "LeftRightVector", "LeftTee", "LeftTeeArrow", "LeftTeeVector", "LeftTriangle", "LeftTriangleBar", "LeftTriangleEqual", "LeftUpDownVector", "LeftUpTeeVector", "LeftUpVector", "LeftUpVectorBar", "LeftVector", "LeftVectorBar", "Leftarrow", "Leftrightarrow", "LessEqualGreater", "LessFullEqual", "LessGreater", "LessLess", "LessSlantEqual", "LessTilde", "Lfr", "Ll", "Lleftarrow", "Lmidot", "LongLeftArrow", "LongLeftRightArrow", "LongRightArrow", "Longleftarrow", "Longleftrightarrow", "Longrightarrow", "Lopf", "LowerLeftArrow", "LowerRightArrow", "Lscr", "Lsh", "Lstrok", "Lt", "Map", "Mcy", "MediumSpace", "Mellintrf", "Mfr", "MinusPlus", "Mopf", "Mscr", "Mu", "NJcy", "Nacute", "Ncaron", "Ncedil", "Ncy", "NegativeMediumSpace", "NegativeThickSpace", "NegativeThinSpace", "NegativeVeryThinSpace", "NestedGreaterGreater", "NestedLessLess", "NewLine", "Nfr", "NoBreak", "NonBreakingSpace", "Nopf", "Not", "NotCongruent", "NotCupCap", "NotDoubleVerticalBar", "NotElement", "NotEqual", "NotEqualTilde", "NotExists", "NotGreater", "NotGreaterEqual", "NotGreaterFullEqual", "NotGreaterGreater", "NotGreaterLess", "NotGreaterSlantEqual", "NotGreaterTilde", "NotHumpDownHump", "NotHumpEqual", "NotLeftTriangle", "NotLeftTriangleBar", "NotLeftTriangleEqual", "NotLess", "NotLessEqual", "NotLessGreater", "NotLessLess", "NotLessSlantEqual", "NotLessTilde", "NotNestedGreaterGreater", "NotNestedLessLess", "NotPrecedes", "NotPrecedesEqual", "NotPrecedesSlantEqual", "NotReverseElement", "NotRightTriangle", "NotRightTriangleBar", "NotRightTriangleEqual", "NotSquareSubset", "NotSquareSubsetEqual", "NotSquareSuperset", "NotSquareSupersetEqual", "NotSubset", "NotSubsetEqual", "NotSucceeds", "NotSucceedsEqual", "NotSucceedsSlantEqual", "NotSucceedsTilde", "NotSuperset", "NotSupersetEqual", "NotTilde", "NotTildeEqual", "NotTildeFullEqual", "NotTildeTilde", "NotVerticalBar", "Nscr", "Ntilde", "Nu", "OElig", "Oacute", "Ocirc", "Ocy", "Odblac", "Ofr", "Ograve", "Omacr", "Omega", "Omicron", "Oopf", "OpenCurlyDoubleQuote", "OpenCurlyQuote", "Or", "Oscr", "Oslash", "Otilde", "Otimes", "Ouml", "OverBar", "OverBrace", "OverBracket", "OverParenthesis", "PartialD", "Pcy", "Pfr", "Phi", "Pi", "PlusMinus", "Poincareplane", "Popf", "Pr", "Precedes", "PrecedesEqual", "PrecedesSlantEqual", "PrecedesTilde", "Prime", "Product", "Proportion", "Proportional", "Pscr", "Psi", "QUOT", "Qfr", "Qopf", "Qscr", "RBarr", "REG", "Racute", "Rang", "Rarr", "Rarrtl", "Rcaron", "Rcedil", "Rcy", "Re", "ReverseElement", "ReverseEquilibrium", "ReverseUpEquilibrium", "Rfr", "Rho", "RightAngleBracket", "RightArrow", "RightArrowBar", "RightArrowLeftArrow", "RightCeiling", "RightDoubleBracket", "RightDownTeeVector", "RightDownVector", "RightDownVectorBar", "RightFloor", "RightTee", "RightTeeArrow", "RightTeeVector", "RightTriangle", "RightTriangleBar", "RightTriangleEqual", "RightUpDownVector", "RightUpTeeVector", "RightUpVector", "RightUpVectorBar", "RightVector", "RightVectorBar", "Rightarrow", "Ropf", "RoundImplies", "Rrightarrow", "Rscr", "Rsh", "RuleDelayed", "SHCHcy", "SHcy", "SOFTcy", "Sacute", "Sc", "Scaron", "Scedil", "Scirc", "Scy", "Sfr", "ShortDownArrow", "ShortLeftArrow", "ShortRightArrow", "ShortUpArrow", "Sigma", "SmallCircle", "Sopf", "Sqrt", "Square", "SquareIntersection", "SquareSubset", "SquareSubsetEqual", "SquareSuperset", "SquareSupersetEqual", "SquareUnion", "Sscr", "Star", "Sub", "Subset", "SubsetEqual", "Succeeds", "SucceedsEqual", "SucceedsSlantEqual", "SucceedsTilde", "SuchThat", "Sum", "Sup", "Superset", "SupersetEqual", "Supset", "THORN", "TRADE", "TSHcy", "TScy", "Tab", "Tau", "Tcaron", "Tcedil", "Tcy", "Tfr", "Therefore", "Theta", "ThickSpace", "ThinSpace", "Tilde", "TildeEqual", "TildeFullEqual", "TildeTilde", "Topf", "TripleDot", "Tscr", "Tstrok", "Uacute", "Uarr", "Uarrocir", "Ubrcy", "Ubreve", "Ucirc", "Ucy", "Udblac", "Ufr", "Ugrave", "Umacr", "UnderBar", "UnderBrace", "UnderBracket", "UnderParenthesis", "Union", "UnionPlus", "Uogon", "Uopf", "UpArrow", "UpArrowBar", "UpArrowDownArrow", "UpDownArrow", "UpEquilibrium", "UpTee", "UpTeeArrow", "Uparrow", "Updownarrow", "UpperLeftArrow", "UpperRightArrow", "Upsi", "Upsilon", "Uring", "Uscr", "Utilde", "Uuml", "VDash", "Vbar", "Vcy", "Vdash", "Vdashl", "Vee", "Verbar", "Vert", "VerticalBar", "VerticalLine", "VerticalSeparator", "VerticalTilde", "VeryThinSpace", "Vfr", "Vopf", "Vscr", "Vvdash", "Wcirc", "Wedge", "Wfr", "Wopf", "Wscr", "Xfr", "Xi", "Xopf", "Xscr", "YAcy", "YIcy", "YUcy", "Yacute", "Ycirc", "Ycy", "Yfr", "Yopf", "Yscr", "Yuml", "ZHcy", "Zacute", "Zcaron", "Zcy", "Zdot", "ZeroWidthSpace", "Zeta", "Zfr", "Zopf", "Zscr", "aacute", "abreve", "ac", "acE", "acd", "acirc", "acute", "acy", "aelig", "af", "afr", "agrave", "alefsym", "aleph", "alpha", "amacr", "amalg", "amp", "and", "andand", "andd", "andslope", "andv", "ang", "ange", "angle", "angmsd", "angmsdaa", "angmsdab", "angmsdac", "angmsdad", "angmsdae", "angmsdaf", "angmsdag", "angmsdah", "angrt", "angrtvb", "angrtvbd", "angsph", "angst", "angzarr", "aogon", "aopf", "ap", "apE", "apacir", "ape", "apid", "apos", "approx", "approxeq", "aring", "ascr", "ast", "asymp", "asympeq", "atilde", "auml", "awconint", "awint", "bNot", "backcong", "backepsilon", "backprime", "backsim", "backsimeq", "barvee", "barwed", "barwedge", "bbrk", "bbrktbrk", "bcong", "bcy", "bdquo", "becaus", "because", "bemptyv", "bepsi", "bernou", "beta", "beth", "between", "bfr", "bigcap", "bigcirc", "bigcup", "bigodot", "bigoplus", "bigotimes", "bigsqcup", "bigstar", "bigtriangledown", "bigtriangleup", "biguplus", "bigvee", "bigwedge", "bkarow", "blacklozenge", "blacksquare", "blacktriangle", "blacktriangledown", "blacktriangleleft", "blacktriangleright", "blank", "blk12", "blk14", "blk34", "block", "bne", "bnequiv", "bnot", "bopf", "bot", "bottom", "bowtie", "boxDL", "boxDR", "boxDl", "boxDr", "boxH", "boxHD", "boxHU", "boxHd", "boxHu", "boxUL", "boxUR", "boxUl", "boxUr", "boxV", "boxVH", "boxVL", "boxVR", "boxVh", "boxVl", "boxVr", "boxbox", "boxdL", "boxdR", "boxdl", "boxdr", "boxh", "boxhD", "boxhU", "boxhd", "boxhu", "boxminus", "boxplus", "boxtimes", "boxuL", "boxuR", "boxul", "boxur", "boxv", "boxvH", "boxvL", "boxvR", "boxvh", "boxvl", "boxvr", "bprime", "breve", "brvbar", "bscr", "bsemi", "bsim", "bsime", "bsol", "bsolb", "bsolhsub", "bull", "bullet", "bump", "bumpE", "bumpe", "bumpeq", "cacute", "cap", "capand", "capbrcup", "capcap", "capcup", "capdot", "caps", "caret", "caron", "ccaps", "ccaron", "ccedil", "ccirc", "ccups", "ccupssm", "cdot", "cedil", "cemptyv", "cent", "centerdot", "cfr", "chcy", "check", "checkmark", "chi", "cir", "cirE", "circ", "circeq", "circlearrowleft", "circlearrowright", "circledR", "circledS", "circledast", "circledcirc", "circleddash", "cire", "cirfnint", "cirmid", "cirscir", "clubs", "clubsuit", "colon", "colone", "coloneq", "comma", "commat", "comp", "compfn", "complement", "complexes", "cong", "congdot", "conint", "copf", "coprod", "copy", "copysr", "crarr", "cross", "cscr", "csub", "csube", "csup", "csupe", "ctdot", "cudarrl", "cudarrr", "cuepr", "cuesc", "cularr", "cularrp", "cup", "cupbrcap", "cupcap", "cupcup", "cupdot", "cupor", "cups", "curarr", "curarrm", "curlyeqprec", "curlyeqsucc", "curlyvee", "curlywedge", "curren", "curvearrowleft", "curvearrowright", "cuvee", "cuwed", "cwconint", "cwint", "cylcty", "dArr", "dHar", "dagger", "daleth", "darr", "dash", "dashv", "dbkarow", "dblac", "dcaron", "dcy", "dd", "ddagger", "ddarr", "ddotseq", "deg", "delta", "demptyv", "dfisht", "dfr", "dharl", "dharr", "diam", "diamond", "diamondsuit", "diams", "die", "digamma", "disin", "div", "divide", "divideontimes", "divonx", "djcy", "dlcorn", "dlcrop", "dollar", "dopf", "dot", "doteq", "doteqdot", "dotminus", "dotplus", "dotsquare", "doublebarwedge", "downarrow", "downdownarrows", "downharpoonleft", "downharpoonright", "drbkarow", "drcorn", "drcrop", "dscr", "dscy", "dsol", "dstrok", "dtdot", "dtri", "dtrif", "duarr", "duhar", "dwangle", "dzcy", "dzigrarr", "eDDot", "eDot", "eacute", "easter", "ecaron", "ecir", "ecirc", "ecolon", "ecy", "edot", "ee", "efDot", "efr", "eg", "egrave", "egs", "egsdot", "el", "elinters", "ell", "els", "elsdot", "emacr", "empty", "emptyset", "emptyv", "emsp13", "emsp14", "emsp", "eng", "ensp", "eogon", "eopf", "epar", "eparsl", "eplus", "epsi", "epsilon", "epsiv", "eqcirc", "eqcolon", "eqsim", "eqslantgtr", "eqslantless", "equals", "equest", "equiv", "equivDD", "eqvparsl", "erDot", "erarr", "escr", "esdot", "esim", "eta", "eth", "euml", "euro", "excl", "exist", "expectation", "exponentiale", "fallingdotseq", "fcy", "female", "ffilig", "fflig", "ffllig", "ffr", "filig", "fjlig", "flat", "fllig", "fltns", "fnof", "fopf", "forall", "fork", "forkv", "fpartint", "frac12", "frac13", "frac14", "frac15", "frac16", "frac18", "frac23", "frac25", "frac34", "frac35", "frac38", "frac45", "frac56", "frac58", "frac78", "frasl", "frown", "fscr", "gE", "gEl", "gacute", "gamma", "gammad", "gap", "gbreve", "gcirc", "gcy", "gdot", "ge", "gel", "geq", "geqq", "geqslant", "ges", "gescc", "gesdot", "gesdoto", "gesdotol", "gesl", "gesles", "gfr", "gg", "ggg", "gimel", "gjcy", "gl", "glE", "gla", "glj", "gnE", "gnap", "gnapprox", "gne", "gneq", "gneqq", "gnsim", "gopf", "grave", "gscr", "gsim", "gsime", "gsiml", "gt", "gtcc", "gtcir", "gtdot", "gtlPar", "gtquest", "gtrapprox", "gtrarr", "gtrdot", "gtreqless", "gtreqqless", "gtrless", "gtrsim", "gvertneqq", "gvnE", "hArr", "hairsp", "half", "hamilt", "hardcy", "harr", "harrcir", "harrw", "hbar", "hcirc", "hearts", "heartsuit", "hellip", "hercon", "hfr", "hksearow", "hkswarow", "hoarr", "homtht", "hookleftarrow", "hookrightarrow", "hopf", "horbar", "hscr", "hslash", "hstrok", "hybull", "hyphen", "iacute", "ic", "icirc", "icy", "iecy", "iexcl", "iff", "ifr", "igrave", "ii", "iiiint", "iiint", "iinfin", "iiota", "ijlig", "imacr", "image", "imagline", "imagpart", "imath", "imof", "imped", "in", "incare", "infin", "infintie", "inodot", "int", "intcal", "integers", "intercal", "intlarhk", "intprod", "iocy", "iogon", "iopf", "iota", "iprod", "iquest", "iscr", "isin", "isinE", "isindot", "isins", "isinsv", "isinv", "it", "itilde", "iukcy", "iuml", "jcirc", "jcy", "jfr", "jmath", "jopf", "jscr", "jsercy", "jukcy", "kappa", "kappav", "kcedil", "kcy", "kfr", "kgreen", "khcy", "kjcy", "kopf", "kscr", "lAarr", "lArr", "lAtail", "lBarr", "lE", "lEg", "lHar", "lacute", "laemptyv", "lagran", "lambda", "lang", "langd", "langle", "lap", "laquo", "larr", "larrb", "larrbfs", "larrfs", "larrhk", "larrlp", "larrpl", "larrsim", "larrtl", "lat", "latail", "late", "lates", "lbarr", "lbbrk", "lbrace", "lbrack", "lbrke", "lbrksld", "lbrkslu", "lcaron", "lcedil", "lceil", "lcub", "lcy", "ldca", "ldquo", "ldquor", "ldrdhar", "ldrushar", "ldsh", "le", "leftarrow", "leftarrowtail", "leftharpoondown", "leftharpoonup", "leftleftarrows", "leftrightarrow", "leftrightarrows", "leftrightharpoons", "leftrightsquigarrow", "leftthreetimes", "leg", "leq", "leqq", "leqslant", "les", "lescc", "lesdot", "lesdoto", "lesdotor", "lesg", "lesges", "lessapprox", "lessdot", "lesseqgtr", "lesseqqgtr", "lessgtr", "lesssim", "lfisht", "lfloor", "lfr", "lg", "lgE", "lhard", "lharu", "lharul", "lhblk", "ljcy", "ll", "llarr", "llcorner", "llhard", "lltri", "lmidot", "lmoust", "lmoustache", "lnE", "lnap", "lnapprox", "lne", "lneq", "lneqq", "lnsim", "loang", "loarr", "lobrk", "longleftarrow", "longleftrightarrow", "longmapsto", "longrightarrow", "looparrowleft", "looparrowright", "lopar", "lopf", "loplus", "lotimes", "lowast", "lowbar", "loz", "lozenge", "lozf", "lpar", "lparlt", "lrarr", "lrcorner", "lrhar", "lrhard", "lrm", "lrtri", "lsaquo", "lscr", "lsh", "lsim", "lsime", "lsimg", "lsqb", "lsquo", "lsquor", "lstrok", "lt", "ltcc", "ltcir", "ltdot", "lthree", "ltimes", "ltlarr", "ltquest", "ltrPar", "ltri", "ltrie", "ltrif", "lurdshar", "luruhar", "lvertneqq", "lvnE", "mDDot", "macr", "male", "malt", "maltese", "map", "mapsto", "mapstodown", "mapstoleft", "mapstoup", "marker", "mcomma", "mcy", "mdash", "measuredangle", "mfr", "mho", "micro", "mid", "midast", "midcir", "middot", "minus", "minusb", "minusd", "minusdu", "mlcp", "mldr", "mnplus", "models", "mopf", "mp", "mscr", "mstpos", "mu", "multimap", "mumap", "nGg", "nGt", "nGtv", "nLeftarrow", "nLeftrightarrow", "nLl", "nLt", "nLtv", "nRightarrow", "nVDash", "nVdash", "nabla", "nacute", "nang", "nap", "napE", "napid", "napos", "napprox", "natur", "natural", "naturals", "nbsp", "nbump", "nbumpe", "ncap", "ncaron", "ncedil", "ncong", "ncongdot", "ncup", "ncy", "ndash", "ne", "neArr", "nearhk", "nearr", "nearrow", "nedot", "nequiv", "nesear", "nesim", "nexist", "nexists", "nfr", "ngE", "nge", "ngeq", "ngeqq", "ngeqslant", "nges", "ngsim", "ngt", "ngtr", "nhArr", "nharr", "nhpar", "ni", "nis", "nisd", "niv", "njcy", "nlArr", "nlE", "nlarr", "nldr", "nle", "nleftarrow", "nleftrightarrow", "nleq", "nleqq", "nleqslant", "nles", "nless", "nlsim", "nlt", "nltri", "nltrie", "nmid", "nopf", "not", "notin", "notinE", "notindot", "notinva", "notinvb", "notinvc", "notni", "notniva", "notnivb", "notnivc", "npar", "nparallel", "nparsl", "npart", "npolint", "npr", "nprcue", "npre", "nprec", "npreceq", "nrArr", "nrarr", "nrarrc", "nrarrw", "nrightarrow", "nrtri", "nrtrie", "nsc", "nsccue", "nsce", "nscr", "nshortmid", "nshortparallel", "nsim", "nsime", "nsimeq", "nsmid", "nspar", "nsqsube", "nsqsupe", "nsub", "nsubE", "nsube", "nsubset", "nsubseteq", "nsubseteqq", "nsucc", "nsucceq", "nsup", "nsupE", "nsupe", "nsupset", "nsupseteq", "nsupseteqq", "ntgl", "ntilde", "ntlg", "ntriangleleft", "ntrianglelefteq", "ntriangleright", "ntrianglerighteq", "nu", "num", "numero", "numsp", "nvDash", "nvHarr", "nvap", "nvdash", "nvge", "nvgt", "nvinfin", "nvlArr", "nvle", "nvlt", "nvltrie", "nvrArr", "nvrtrie", "nvsim", "nwArr", "nwarhk", "nwarr", "nwarrow", "nwnear", "oS", "oacute", "oast", "ocir", "ocirc", "ocy", "odash", "odblac", "odiv", "odot", "odsold", "oelig", "ofcir", "ofr", "ogon", "ograve", "ogt", "ohbar", "ohm", "oint", "olarr", "olcir", "olcross", "oline", "olt", "omacr", "omega", "omicron", "omid", "ominus", "oopf", "opar", "operp", "oplus", "or", "orarr", "ord", "order", "orderof", "ordf", "ordm", "origof", "oror", "orslope", "orv", "oscr", "oslash", "osol", "otilde", "otimes", "otimesas", "ouml", "ovbar", "par", "para", "parallel", "parsim", "parsl", "part", "pcy", "percnt", "period", "permil", "perp", "pertenk", "pfr", "phi", "phiv", "phmmat", "phone", "pi", "pitchfork", "piv", "planck", "planckh", "plankv", "plus", "plusacir", "plusb", "pluscir", "plusdo", "plusdu", "pluse", "plusmn", "plussim", "plustwo", "pm", "pointint", "popf", "pound", "pr", "prE", "prap", "prcue", "pre", "prec", "precapprox", "preccurlyeq", "preceq", "precnapprox", "precneqq", "precnsim", "precsim", "prime", "primes", "prnE", "prnap", "prnsim", "prod", "profalar", "profline", "profsurf", "prop", "propto", "prsim", "prurel", "pscr", "psi", "puncsp", "qfr", "qint", "qopf", "qprime", "qscr", "quaternions", "quatint", "quest", "questeq", "quot", "rAarr", "rArr", "rAtail", "rBarr", "rHar", "race", "racute", "radic", "raemptyv", "rang", "rangd", "range", "rangle", "raquo", "rarr", "rarrap", "rarrb", "rarrbfs", "rarrc", "rarrfs", "rarrhk", "rarrlp", "rarrpl", "rarrsim", "rarrtl", "rarrw", "ratail", "ratio", "rationals", "rbarr", "rbbrk", "rbrace", "rbrack", "rbrke", "rbrksld", "rbrkslu", "rcaron", "rcedil", "rceil", "rcub", "rcy", "rdca", "rdldhar", "rdquo", "rdquor", "rdsh", "real", "realine", "realpart", "reals", "rect", "reg", "rfisht", "rfloor", "rfr", "rhard", "rharu", "rharul", "rho", "rhov", "rightarrow", "rightarrowtail", "rightharpoondown", "rightharpoonup", "rightleftarrows", "rightleftharpoons", "rightrightarrows", "rightsquigarrow", "rightthreetimes", "ring", "risingdotseq", "rlarr", "rlhar", "rlm", "rmoust", "rmoustache", "rnmid", "roang", "roarr", "robrk", "ropar", "ropf", "roplus", "rotimes", "rpar", "rpargt", "rppolint", "rrarr", "rsaquo", "rscr", "rsh", "rsqb", "rsquo", "rsquor", "rthree", "rtimes", "rtri", "rtrie", "rtrif", "rtriltri", "ruluhar", "rx", "sacute", "sbquo", "sc", "scE", "scap", "scaron", "sccue", "sce", "scedil", "scirc", "scnE", "scnap", "scnsim", "scpolint", "scsim", "scy", "sdot", "sdotb", "sdote", "seArr", "searhk", "searr", "searrow", "sect", "semi", "seswar", "setminus", "setmn", "sext", "sfr", "sfrown", "sharp", "shchcy", "shcy", "shortmid", "shortparallel", "shy", "sigma", "sigmaf", "sigmav", "sim", "simdot", "sime", "simeq", "simg", "simgE", "siml", "simlE", "simne", "simplus", "simrarr", "slarr", "smallsetminus", "smashp", "smeparsl", "smid", "smile", "smt", "smte", "smtes", "softcy", "sol", "solb", "solbar", "sopf", "spades", "spadesuit", "spar", "sqcap", "sqcaps", "sqcup", "sqcups", "sqsub", "sqsube", "sqsubset", "sqsubseteq", "sqsup", "sqsupe", "sqsupset", "sqsupseteq", "squ", "square", "squarf", "squf", "srarr", "sscr", "ssetmn", "ssmile", "sstarf", "star", "starf", "straightepsilon", "straightphi", "strns", "sub", "subE", "subdot", "sube", "subedot", "submult", "subnE", "subne", "subplus", "subrarr", "subset", "subseteq", "subseteqq", "subsetneq", "subsetneqq", "subsim", "subsub", "subsup", "succ", "succapprox", "succcurlyeq", "succeq", "succnapprox", "succneqq", "succnsim", "succsim", "sum", "sung", "sup1", "sup2", "sup3", "sup", "supE", "supdot", "supdsub", "supe", "supedot", "suphsol", "suphsub", "suplarr", "supmult", "supnE", "supne", "supplus", "supset", "supseteq", "supseteqq", "supsetneq", "supsetneqq", "supsim", "supsub", "supsup", "swArr", "swarhk", "swarr", "swarrow", "swnwar", "szlig", "target", "tau", "tbrk", "tcaron", "tcedil", "tcy", "tdot", "telrec", "tfr", "there4", "therefore", "theta", "thetasym", "thetav", "thickapprox", "thicksim", "thinsp", "thkap", "thksim", "thorn", "tilde", "times", "timesb", "timesbar", "timesd", "tint", "toea", "top", "topbot", "topcir", "topf", "topfork", "tosa", "tprime", "trade", "triangle", "triangledown", "triangleleft", "trianglelefteq", "triangleq", "triangleright", "trianglerighteq", "tridot", "trie", "triminus", "triplus", "trisb", "tritime", "trpezium", "tscr", "tscy", "tshcy", "tstrok", "twixt", "twoheadleftarrow", "twoheadrightarrow", "uArr", "uHar", "uacute", "uarr", "ubrcy", "ubreve", "ucirc", "ucy", "udarr", "udblac", "udhar", "ufisht", "ufr", "ugrave", "uharl", "uharr", "uhblk", "ulcorn", "ulcorner", "ulcrop", "ultri", "umacr", "uml", "uogon", "uopf", "uparrow", "updownarrow", "upharpoonleft", "upharpoonright", "uplus", "upsi", "upsih", "upsilon", "upuparrows", "urcorn", "urcorner", "urcrop", "uring", "urtri", "uscr", "utdot", "utilde", "utri", "utrif", "uuarr", "uuml", "uwangle", "vArr", "vBar", "vBarv", "vDash", "vangrt", "varepsilon", "varkappa", "varnothing", "varphi", "varpi", "varpropto", "varr", "varrho", "varsigma", "varsubsetneq", "varsubsetneqq", "varsupsetneq", "varsupsetneqq", "vartheta", "vartriangleleft", "vartriangleright", "vcy", "vdash", "vee", "veebar", "veeeq", "vellip", "verbar", "vert", "vfr", "vltri", "vnsub", "vnsup", "vopf", "vprop", "vrtri", "vscr", "vsubnE", "vsubne", "vsupnE", "vsupne", "vzigzag", "wcirc", "wedbar", "wedge", "wedgeq", "weierp", "wfr", "wopf", "wp", "wr", "wreath", "wscr", "xcap", "xcirc", "xcup", "xdtri", "xfr", "xhArr", "xharr", "xi", "xlArr", "xlarr", "xmap", "xnis", "xodot", "xopf", "xoplus", "xotime", "xrArr", "xrarr", "xscr", "xsqcup", "xuplus", "xutri", "xvee", "xwedge", "yacute", "yacy", "ycirc", "ycy", "yen", "yfr", "yicy", "yopf", "yscr", "yucy", "yuml", "zacute", "zcaron", "zcy", "zdot", "zeetrf", "zeta", "zfr", "zhcy", "zigrarr", "zopf", "zscr", "zwj", "zwnj", ]; /// List of values corresponding to names of named /// [character references][character_reference]. /// /// The corresponding names of this list are stored in /// [`CHARACTER_REFERENCE_NAMES`][]. /// They correspond through their index. /// /// ## References /// /// * [*§ 2.5 Entity and numeric character references* in `CommonMark`](https://spec.commonmark.org/0.30/#entity-and-numeric-character-references) /// /// [character_reference]: crate::construct::character_reference pub const CHARACTER_REFERENCE_VALUES: [&str; 2125] = [ "Æ", "&", "Á", "Ă", "Â", "А", "𝔄", "À", "Α", "Ā", "⩓", "Ą", "𝔸", "⁡", "Å", "𝒜", "≔", "Ã", "Ä", "∖", "⫧", "⌆", "Б", "∵", "ℬ", "Β", "𝔅", "𝔹", "˘", "ℬ", "≎", "Ч", "©", "Ć", "⋒", "ⅅ", "ℭ", "Č", "Ç", "Ĉ", "∰", "Ċ", "¸", "·", "ℭ", "Χ", "⊙", "⊖", "⊕", "⊗", "∲", "”", "’", "∷", "⩴", "≡", "∯", "∮", "ℂ", "∐", "∳", "⨯", "𝒞", "⋓", "≍", "ⅅ", "⤑", "Ђ", "Ѕ", "Џ", "‡", "↡", "⫤", "Ď", "Д", "∇", "Δ", "𝔇", "´", "˙", "˝", "`", "˜", "⋄", "ⅆ", "𝔻", "¨", "⃜", "≐", "∯", "¨", "⇓", "⇐", "⇔", "⫤", "⟸", "⟺", "⟹", "⇒", "⊨", "⇑", "⇕", "∥", "↓", "⤓", "⇵", "̑", "⥐", "⥞", "↽", "⥖", "⥟", "⇁", "⥗", "⊤", "↧", "⇓", "𝒟", "Đ", "Ŋ", "Ð", "É", "Ě", "Ê", "Э", "Ė", "𝔈", "È", "∈", "Ē", "◻", "▫", "Ę", "𝔼", "Ε", "⩵", "≂", "⇌", "ℰ", "⩳", "Η", "Ë", "∃", "ⅇ", "Ф", "𝔉", "◼", "▪", "𝔽", "∀", "ℱ", "ℱ", "Ѓ", ">", "Γ", "Ϝ", "Ğ", "Ģ", "Ĝ", "Г", "Ġ", "𝔊", "⋙", "𝔾", "≥", "⋛", "≧", "⪢", "≷", "⩾", "≳", "𝒢", "≫", "Ъ", "ˇ", "^", "Ĥ", "ℌ", "ℋ", "ℍ", "─", "ℋ", "Ħ", "≎", "≏", "Е", "IJ", "Ё", "Í", "Î", "И", "İ", "ℑ", "Ì", "ℑ", "Ī", "ⅈ", "⇒", "∬", "∫", "⋂", "⁣", "⁢", "Į", "𝕀", "Ι", "ℐ", "Ĩ", "І", "Ï", "Ĵ", "Й", "𝔍", "𝕁", "𝒥", "Ј", "Є", "Х", "Ќ", "Κ", "Ķ", "К", "𝔎", "𝕂", "𝒦", "Љ", "<", "Ĺ", "Λ", "⟪", "ℒ", "↞", "Ľ", "Ļ", "Л", "⟨", "←", "⇤", "⇆", "⌈", "⟦", "⥡", "⇃", "⥙", "⌊", "↔", "⥎", "⊣", "↤", "⥚", "⊲", "⧏", "⊴", "⥑", "⥠", "↿", "⥘", "↼", "⥒", "⇐", "⇔", "⋚", "≦", "≶", "⪡", "⩽", "≲", "𝔏", "⋘", "⇚", "Ŀ", "⟵", "⟷", "⟶", "⟸", "⟺", "⟹", "𝕃", "↙", "↘", "ℒ", "↰", "Ł", "≪", "⤅", "М", " ", "ℳ", "𝔐", "∓", "𝕄", "ℳ", "Μ", "Њ", "Ń", "Ň", "Ņ", "Н", "\u{200B}", "\u{200B}", "\u{200B}", "\u{200B}", "≫", "≪", "\n", "𝔑", "\u{2060}", " ", "ℕ", "⫬", "≢", "≭", "∦", "∉", "≠", "≂̸", "∄", "≯", "≱", "≧̸", "≫̸", "≹", "⩾̸", "≵", "≎̸", "≏̸", "⋪", "⧏̸", "⋬", "≮", "≰", "≸", "≪̸", "⩽̸", "≴", "⪢̸", "⪡̸", "⊀", "⪯̸", "⋠", "∌", "⋫", "⧐̸", "⋭", "⊏̸", "⋢", "⊐̸", "⋣", "⊂⃒", "⊈", "⊁", "⪰̸", "⋡", "≿̸", "⊃⃒", "⊉", "≁", "≄", "≇", "≉", "∤", "𝒩", "Ñ", "Ν", "Œ", "Ó", "Ô", "О", "Ő", "𝔒", "Ò", "Ō", "Ω", "Ο", "𝕆", "“", "‘", "⩔", "𝒪", "Ø", "Õ", "⨷", "Ö", "‾", "⏞", "⎴", "⏜", "∂", "П", "𝔓", "Φ", "Π", "±", "ℌ", "ℙ", "⪻", "≺", "⪯", "≼", "≾", "″", "∏", "∷", "∝", "𝒫", "Ψ", "\"", "𝔔", "ℚ", "𝒬", "⤐", "®", "Ŕ", "⟫", "↠", "⤖", "Ř", "Ŗ", "Р", "ℜ", "∋", "⇋", "⥯", "ℜ", "Ρ", "⟩", "→", "⇥", "⇄", "⌉", "⟧", "⥝", "⇂", "⥕", "⌋", "⊢", "↦", "⥛", "⊳", "⧐", "⊵", "⥏", "⥜", "↾", "⥔", "⇀", "⥓", "⇒", "ℝ", "⥰", "⇛", "ℛ", "↱", "⧴", "Щ", "Ш", "Ь", "Ś", "⪼", "Š", "Ş", "Ŝ", "С", "𝔖", "↓", "←", "→", "↑", "Σ", "∘", "𝕊", "√", "□", "⊓", "⊏", "⊑", "⊐", "⊒", "⊔", "𝒮", "⋆", "⋐", "⋐", "⊆", "≻", "⪰", "≽", "≿", "∋", "∑", "⋑", "⊃", "⊇", "⋑", "Þ", "™", "Ћ", "Ц", "\t", "Τ", "Ť", "Ţ", "Т", "𝔗", "∴", "Θ", "  ", " ", "∼", "≃", "≅", "≈", "𝕋", "⃛", "𝒯", "Ŧ", "Ú", "↟", "⥉", "Ў", "Ŭ", "Û", "У", "Ű", "𝔘", "Ù", "Ū", "_", "⏟", "⎵", "⏝", "⋃", "⊎", "Ų", "𝕌", "↑", "⤒", "⇅", "↕", "⥮", "⊥", "↥", "⇑", "⇕", "↖", "↗", "ϒ", "Υ", "Ů", "𝒰", "Ũ", "Ü", "⊫", "⫫", "В", "⊩", "⫦", "⋁", "‖", "‖", "∣", "|", "❘", "≀", " ", "𝔙", "𝕍", "𝒱", "⊪", "Ŵ", "⋀", "𝔚", "𝕎", "𝒲", "𝔛", "Ξ", "𝕏", "𝒳", "Я", "Ї", "Ю", "Ý", "Ŷ", "Ы", "𝔜", "𝕐", "𝒴", "Ÿ", "Ж", "Ź", "Ž", "З", "Ż", "\u{200B}", "Ζ", "ℨ", "ℤ", "𝒵", "á", "ă", "∾", "∾̳", "∿", "â", "´", "а", "æ", "⁡", "𝔞", "à", "ℵ", "ℵ", "α", "ā", "⨿", "&", "∧", "⩕", "⩜", "⩘", "⩚", "∠", "⦤", "∠", "∡", "⦨", "⦩", "⦪", "⦫", "⦬", "⦭", "⦮", "⦯", "∟", "⊾", "⦝", "∢", "Å", "⍼", "ą", "𝕒", "≈", "⩰", "⩯", "≊", "≋", "'", "≈", "≊", "å", "𝒶", "*", "≈", "≍", "ã", "ä", "∳", "⨑", "⫭", "≌", "϶", "‵", "∽", "⋍", "⊽", "⌅", "⌅", "⎵", "⎶", "≌", "б", "„", "∵", "∵", "⦰", "϶", "ℬ", "β", "ℶ", "≬", "𝔟", "⋂", "◯", "⋃", "⨀", "⨁", "⨂", "⨆", "★", "▽", "△", "⨄", "⋁", "⋀", "⤍", "⧫", "▪", "▴", "▾", "◂", "▸", "␣", "▒", "░", "▓", "█", "=⃥", "≡⃥", "⌐", "𝕓", "⊥", "⊥", "⋈", "╗", "╔", "╖", "╓", "═", "╦", "╩", "╤", "╧", "╝", "╚", "╜", "╙", "║", "╬", "╣", "╠", "╫", "╢", "╟", "⧉", "╕", "╒", "┐", "┌", "─", "╥", "╨", "┬", "┴", "⊟", "⊞", "⊠", "╛", "╘", "┘", "└", "│", "╪", "╡", "╞", "┼", "┤", "├", "‵", "˘", "¦", "𝒷", "⁏", "∽", "⋍", "\\", "⧅", "⟈", "•", "•", "≎", "⪮", "≏", "≏", "ć", "∩", "⩄", "⩉", "⩋", "⩇", "⩀", "∩︀", "⁁", "ˇ", "⩍", "č", "ç", "ĉ", "⩌", "⩐", "ċ", "¸", "⦲", "¢", "·", "𝔠", "ч", "✓", "✓", "χ", "○", "⧃", "ˆ", "≗", "↺", "↻", "®", "Ⓢ", "⊛", "⊚", "⊝", "≗", "⨐", "⫯", "⧂", "♣", "♣", ":", "≔", "≔", ",", "@", "∁", "∘", "∁", "ℂ", "≅", "⩭", "∮", "𝕔", "∐", "©", "℗", "↵", "✗", "𝒸", "⫏", "⫑", "⫐", "⫒", "⋯", "⤸", "⤵", "⋞", "⋟", "↶", "⤽", "∪", "⩈", "⩆", "⩊", "⊍", "⩅", "∪︀", "↷", "⤼", "⋞", "⋟", "⋎", "⋏", "¤", "↶", "↷", "⋎", "⋏", "∲", "∱", "⌭", "⇓", "⥥", "†", "ℸ", "↓", "‐", "⊣", "⤏", "˝", "ď", "д", "ⅆ", "‡", "⇊", "⩷", "°", "δ", "⦱", "⥿", "𝔡", "⇃", "⇂", "⋄", "⋄", "♦", "♦", "¨", "ϝ", "⋲", "÷", "÷", "⋇", "⋇", "ђ", "⌞", "⌍", "$", "𝕕", "˙", "≐", "≑", "∸", "∔", "⊡", "⌆", "↓", "⇊", "⇃", "⇂", "⤐", "⌟", "⌌", "𝒹", "ѕ", "⧶", "đ", "⋱", "▿", "▾", "⇵", "⥯", "⦦", "џ", "⟿", "⩷", "≑", "é", "⩮", "ě", "≖", "ê", "≕", "э", "ė", "ⅇ", "≒", "𝔢", "⪚", "è", "⪖", "⪘", "⪙", "⏧", "ℓ", "⪕", "⪗", "ē", "∅", "∅", "∅", " ", " ", " ", "ŋ", " ", "ę", "𝕖", "⋕", "⧣", "⩱", "ε", "ε", "ϵ", "≖", "≕", "≂", "⪖", "⪕", "=", "≟", "≡", "⩸", "⧥", "≓", "⥱", "ℯ", "≐", "≂", "η", "ð", "ë", "€", "!", "∃", "ℰ", "ⅇ", "≒", "ф", "♀", "ffi", "ff", "ffl", "𝔣", "fi", "fj", "♭", "fl", "▱", "ƒ", "𝕗", "∀", "⋔", "⫙", "⨍", "½", "⅓", "¼", "⅕", "⅙", "⅛", "⅔", "⅖", "¾", "⅗", "⅜", "⅘", "⅚", "⅝", "⅞", "⁄", "⌢", "𝒻", "≧", "⪌", "ǵ", "γ", "ϝ", "⪆", "ğ", "ĝ", "г", "ġ", "≥", "⋛", "≥", "≧", "⩾", "⩾", "⪩", "⪀", "⪂", "⪄", "⋛︀", "⪔", "𝔤", "≫", "⋙", "ℷ", "ѓ", "≷", "⪒", "⪥", "⪤", "≩", "⪊", "⪊", "⪈", "⪈", "≩", "⋧", "𝕘", "`", "ℊ", "≳", "⪎", "⪐", ">", "⪧", "⩺", "⋗", "⦕", "⩼", "⪆", "⥸", "⋗", "⋛", "⪌", "≷", "≳", "≩︀", "≩︀", "⇔", " ", "½", "ℋ", "ъ", "↔", "⥈", "↭", "ℏ", "ĥ", "♥", "♥", "…", "⊹", "𝔥", "⤥", "⤦", "⇿", "∻", "↩", "↪", "𝕙", "―", "𝒽", "ℏ", "ħ", "⁃", "‐", "í", "⁣", "î", "и", "е", "¡", "⇔", "𝔦", "ì", "ⅈ", "⨌", "∭", "⧜", "℩", "ij", "ī", "ℑ", "ℐ", "ℑ", "ı", "⊷", "Ƶ", "∈", "℅", "∞", "⧝", "ı", "∫", "⊺", "ℤ", "⊺", "⨗", "⨼", "ё", "į", "𝕚", "ι", "⨼", "¿", "𝒾", "∈", "⋹", "⋵", "⋴", "⋳", "∈", "⁢", "ĩ", "і", "ï", "ĵ", "й", "𝔧", "ȷ", "𝕛", "𝒿", "ј", "є", "κ", "ϰ", "ķ", "к", "𝔨", "ĸ", "х", "ќ", "𝕜", "𝓀", "⇚", "⇐", "⤛", "⤎", "≦", "⪋", "⥢", "ĺ", "⦴", "ℒ", "λ", "⟨", "⦑", "⟨", "⪅", "«", "←", "⇤", "⤟", "⤝", "↩", "↫", "⤹", "⥳", "↢", "⪫", "⤙", "⪭", "⪭︀", "⤌", "❲", "{", "[", "⦋", "⦏", "⦍", "ľ", "ļ", "⌈", "{", "л", "⤶", "“", "„", "⥧", "⥋", "↲", "≤", "←", "↢", "↽", "↼", "⇇", "↔", "⇆", "⇋", "↭", "⋋", "⋚", "≤", "≦", "⩽", "⩽", "⪨", "⩿", "⪁", "⪃", "⋚︀", "⪓", "⪅", "⋖", "⋚", "⪋", "≶", "≲", "⥼", "⌊", "𝔩", "≶", "⪑", "↽", "↼", "⥪", "▄", "љ", "≪", "⇇", "⌞", "⥫", "◺", "ŀ", "⎰", "⎰", "≨", "⪉", "⪉", "⪇", "⪇", "≨", "⋦", "⟬", "⇽", "⟦", "⟵", "⟷", "⟼", "⟶", "↫", "↬", "⦅", "𝕝", "⨭", "⨴", "∗", "_", "◊", "◊", "⧫", "(", "⦓", "⇆", "⌟", "⇋", "⥭", "‎", "⊿", "‹", "𝓁", "↰", "≲", "⪍", "⪏", "[", "‘", "‚", "ł", "<", "⪦", "⩹", "⋖", "⋋", "⋉", "⥶", "⩻", "⦖", "◃", "⊴", "◂", "⥊", "⥦", "≨︀", "≨︀", "∺", "¯", "♂", "✠", "✠", "↦", "↦", "↧", "↤", "↥", "▮", "⨩", "м", "—", "∡", "𝔪", "℧", "µ", "∣", "*", "⫰", "·", "−", "⊟", "∸", "⨪", "⫛", "…", "∓", "⊧", "𝕞", "∓", "𝓂", "∾", "μ", "⊸", "⊸", "⋙̸", "≫⃒", "≫̸", "⇍", "⇎", "⋘̸", "≪⃒", "≪̸", "⇏", "⊯", "⊮", "∇", "ń", "∠⃒", "≉", "⩰̸", "≋̸", "ʼn", "≉", "♮", "♮", "ℕ", " ", "≎̸", "≏̸", "⩃", "ň", "ņ", "≇", "⩭̸", "⩂", "н", "–", "≠", "⇗", "⤤", "↗", "↗", "≐̸", "≢", "⤨", "≂̸", "∄", "∄", "𝔫", "≧̸", "≱", "≱", "≧̸", "⩾̸", "⩾̸", "≵", "≯", "≯", "⇎", "↮", "⫲", "∋", "⋼", "⋺", "∋", "њ", "⇍", "≦̸", "↚", "‥", "≰", "↚", "↮", "≰", "≦̸", "⩽̸", "⩽̸", "≮", "≴", "≮", "⋪", "⋬", "∤", "𝕟", "¬", "∉", "⋹̸", "⋵̸", "∉", "⋷", "⋶", "∌", "∌", "⋾", "⋽", "∦", "∦", "⫽⃥", "∂̸", "⨔", "⊀", "⋠", "⪯̸", "⊀", "⪯̸", "⇏", "↛", "⤳̸", "↝̸", "↛", "⋫", "⋭", "⊁", "⋡", "⪰̸", "𝓃", "∤", "∦", "≁", "≄", "≄", "∤", "∦", "⋢", "⋣", "⊄", "⫅̸", "⊈", "⊂⃒", "⊈", "⫅̸", "⊁", "⪰̸", "⊅", "⫆̸", "⊉", "⊃⃒", "⊉", "⫆̸", "≹", "ñ", "≸", "⋪", "⋬", "⋫", "⋭", "ν", "#", "№", " ", "⊭", "⤄", "≍⃒", "⊬", "≥⃒", ">⃒", "⧞", "⤂", "≤⃒", "<⃒", "⊴⃒", "⤃", "⊵⃒", "∼⃒", "⇖", "⤣", "↖", "↖", "⤧", "Ⓢ", "ó", "⊛", "⊚", "ô", "о", "⊝", "ő", "⨸", "⊙", "⦼", "œ", "⦿", "𝔬", "˛", "ò", "⧁", "⦵", "Ω", "∮", "↺", "⦾", "⦻", "‾", "⧀", "ō", "ω", "ο", "⦶", "⊖", "𝕠", "⦷", "⦹", "⊕", "∨", "↻", "⩝", "ℴ", "ℴ", "ª", "º", "⊶", "⩖", "⩗", "⩛", "ℴ", "ø", "⊘", "õ", "⊗", "⨶", "ö", "⌽", "∥", "¶", "∥", "⫳", "⫽", "∂", "п", "%", ".", "‰", "⊥", "‱", "𝔭", "φ", "ϕ", "ℳ", "☎", "π", "⋔", "ϖ", "ℏ", "ℎ", "ℏ", "+", "⨣", "⊞", "⨢", "∔", "⨥", "⩲", "±", "⨦", "⨧", "±", "⨕", "𝕡", "£", "≺", "⪳", "⪷", "≼", "⪯", "≺", "⪷", "≼", "⪯", "⪹", "⪵", "⋨", "≾", "′", "ℙ", "⪵", "⪹", "⋨", "∏", "⌮", "⌒", "⌓", "∝", "∝", "≾", "⊰", "𝓅", "ψ", " ", "𝔮", "⨌", "𝕢", "⁗", "𝓆", "ℍ", "⨖", "?", "≟", "\"", "⇛", "⇒", "⤜", "⤏", "⥤", "∽̱", "ŕ", "√", "⦳", "⟩", "⦒", "⦥", "⟩", "»", "→", "⥵", "⇥", "⤠", "⤳", "⤞", "↪", "↬", "⥅", "⥴", "↣", "↝", "⤚", "∶", "ℚ", "⤍", "❳", "}", "]", "⦌", "⦎", "⦐", "ř", "ŗ", "⌉", "}", "р", "⤷", "⥩", "”", "”", "↳", "ℜ", "ℛ", "ℜ", "ℝ", "▭", "®", "⥽", "⌋", "𝔯", "⇁", "⇀", "⥬", "ρ", "ϱ", "→", "↣", "⇁", "⇀", "⇄", "⇌", "⇉", "↝", "⋌", "˚", "≓", "⇄", "⇌", "‏", "⎱", "⎱", "⫮", "⟭", "⇾", "⟧", "⦆", "𝕣", "⨮", "⨵", ")", "⦔", "⨒", "⇉", "›", "𝓇", "↱", "]", "’", "’", "⋌", "⋊", "▹", "⊵", "▸", "⧎", "⥨", "℞", "ś", "‚", "≻", "⪴", "⪸", "š", "≽", "⪰", "ş", "ŝ", "⪶", "⪺", "⋩", "⨓", "≿", "с", "⋅", "⊡", "⩦", "⇘", "⤥", "↘", "↘", "§", ";", "⤩", "∖", "∖", "✶", "𝔰", "⌢", "♯", "щ", "ш", "∣", "∥", "\u{AD}", "σ", "ς", "ς", "∼", "⩪", "≃", "≃", "⪞", "⪠", "⪝", "⪟", "≆", "⨤", "⥲", "←", "∖", "⨳", "⧤", "∣", "⌣", "⪪", "⪬", "⪬︀", "ь", "/", "⧄", "⌿", "𝕤", "♠", "♠", "∥", "⊓", "⊓︀", "⊔", "⊔︀", "⊏", "⊑", "⊏", "⊑", "⊐", "⊒", "⊐", "⊒", "□", "□", "▪", "▪", "→", "𝓈", "∖", "⌣", "⋆", "☆", "★", "ϵ", "ϕ", "¯", "⊂", "⫅", "⪽", "⊆", "⫃", "⫁", "⫋", "⊊", "⪿", "⥹", "⊂", "⊆", "⫅", "⊊", "⫋", "⫇", "⫕", "⫓", "≻", "⪸", "≽", "⪰", "⪺", "⪶", "⋩", "≿", "∑", "♪", "¹", "²", "³", "⊃", "⫆", "⪾", "⫘", "⊇", "⫄", "⟉", "⫗", "⥻", "⫂", "⫌", "⊋", "⫀", "⊃", "⊇", "⫆", "⊋", "⫌", "⫈", "⫔", "⫖", "⇙", "⤦", "↙", "↙", "⤪", "ß", "⌖", "τ", "⎴", "ť", "ţ", "т", "⃛", "⌕", "𝔱", "∴", "∴", "θ", "ϑ", "ϑ", "≈", "∼", " ", "≈", "∼", "þ", "˜", "×", "⊠", "⨱", "⨰", "∭", "⤨", "⊤", "⌶", "⫱", "𝕥", "⫚", "⤩", "‴", "™", "▵", "▿", "◃", "⊴", "≜", "▹", "⊵", "◬", "≜", "⨺", "⨹", "⧍", "⨻", "⏢", "𝓉", "ц", "ћ", "ŧ", "≬", "↞", "↠", "⇑", "⥣", "ú", "↑", "ў", "ŭ", "û", "у", "⇅", "ű", "⥮", "⥾", "𝔲", "ù", "↿", "↾", "▀", "⌜", "⌜", "⌏", "◸", "ū", "¨", "ų", "𝕦", "↑", "↕", "↿", "↾", "⊎", "υ", "ϒ", "υ", "⇈", "⌝", "⌝", "⌎", "ů", "◹", "𝓊", "⋰", "ũ", "▵", "▴", "⇈", "ü", "⦧", "⇕", "⫨", "⫩", "⊨", "⦜", "ϵ", "ϰ", "∅", "ϕ", "ϖ", "∝", "↕", "ϱ", "ς", "⊊︀", "⫋︀", "⊋︀", "⫌︀", "ϑ", "⊲", "⊳", "в", "⊢", "∨", "⊻", "≚", "⋮", "|", "|", "𝔳", "⊲", "⊂⃒", "⊃⃒", "𝕧", "∝", "⊳", "𝓋", "⫋︀", "⊊︀", "⫌︀", "⊋︀", "⦚", "ŵ", "⩟", "∧", "≙", "℘", "𝔴", "𝕨", "℘", "≀", "≀", "𝓌", "⋂", "◯", "⋃", "▽", "𝔵", "⟺", "⟷", "ξ", "⟸", "⟵", "⟼", "⋻", "⨀", "𝕩", "⨁", "⨂", "⟹", "⟶", "𝓍", "⨆", "⨄", "△", "⋁", "⋀", "ý", "я", "ŷ", "ы", "¥", "𝔶", "ї", "𝕪", "𝓎", "ю", "ÿ", "ź", "ž", "з", "ż", "ℨ", "ζ", "𝔷", "ж", "⇝", "𝕫", "𝓏", "‍", "‌", ]; #[cfg(test)] mod tests { use super::*; #[test] fn constants() { assert_eq!( CHARACTER_REFERENCE_DECIMAL_SIZE_MAX, format!("{}", 0x10ffff).len(), "`CHARACTER_REFERENCE_DECIMAL_SIZE_MAX`" ); assert_eq!( CHARACTER_REFERENCE_HEXADECIMAL_SIZE_MAX, format!("{:x}", 0x10ffff).len(), "`CHARACTER_REFERENCE_HEXADECIMAL_SIZE_MAX`" ); assert_eq!( CHARACTER_REFERENCE_NAMED_SIZE_MAX, longest(&CHARACTER_REFERENCE_NAMES).unwrap().len(), "`CHARACTER_REFERENCE_NAMED_SIZE_MAX`" ); assert_eq!( HTML_RAW_SIZE_MAX, longest(&HTML_RAW_NAMES).unwrap().len(), "`HTML_RAW_SIZE_MAX`" ); } fn longest<'a>(list: &[&'a str]) -> Option<&'a str> { let mut max = 0; let mut result = None; for name in list.iter() { let len = name.len(); if len > max { max = len; result = Some(*name); } } result } }