mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-08-24 17:31:06 +08:00
Move markdown rendering code into one folder
Easier to manage
This commit is contained in:
283
lib/markdown/parsers/html_entities_syntax.dart
Normal file
283
lib/markdown/parsers/html_entities_syntax.dart
Normal file
@ -0,0 +1,283 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2021 Vishesh Handa <me@vhanda.in>
|
||||
* SPDX-FileCopyrightText: 2015 Titus Wormer <tituswormer@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import 'package:markdown/markdown.dart' as md;
|
||||
|
||||
class HtmlEntitiesSyntax extends md.InlineSyntax {
|
||||
HtmlEntitiesSyntax() : super(_buildRegexp());
|
||||
|
||||
@override
|
||||
bool onMatch(md.InlineParser parser, Match match) {
|
||||
var ent = match[0]!;
|
||||
assert(ent.startsWith('&') && ent.endsWith(';'));
|
||||
ent = ent.substring(1, ent.length - 1);
|
||||
|
||||
var output = _characterEntitiesHtml4[ent] ?? match[0]!;
|
||||
parser.addNode(md.Text(output));
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
String _buildRegexp() =>
|
||||
_characterEntitiesHtml4.keys.map((e) => '(&$e;)').join('|');
|
||||
|
||||
// Taken from https://github.com/wooorm/character-entities-html4/blob/main/index.js
|
||||
const _characterEntitiesHtml4 = {
|
||||
'nbsp': ' ',
|
||||
'iexcl': '¡',
|
||||
'cent': '¢',
|
||||
'pound': '£',
|
||||
'curren': '¤',
|
||||
'yen': '¥',
|
||||
'brvbar': '¦',
|
||||
'sect': '§',
|
||||
'uml': '¨',
|
||||
'copy': '©',
|
||||
'ordf': 'ª',
|
||||
'laquo': '«',
|
||||
'not': '¬',
|
||||
'shy': '',
|
||||
'reg': '®',
|
||||
'macr': '¯',
|
||||
'deg': '°',
|
||||
'plusmn': '±',
|
||||
'sup2': '²',
|
||||
'sup3': '³',
|
||||
'acute': '´',
|
||||
'micro': 'µ',
|
||||
'para': '¶',
|
||||
'middot': '·',
|
||||
'cedil': '¸',
|
||||
'sup1': '¹',
|
||||
'ordm': 'º',
|
||||
'raquo': '»',
|
||||
'frac14': '¼',
|
||||
'frac12': '½',
|
||||
'frac34': '¾',
|
||||
'iquest': '¿',
|
||||
'Agrave': 'À',
|
||||
'Aacute': 'Á',
|
||||
'Acirc': 'Â',
|
||||
'Atilde': 'Ã',
|
||||
'Auml': 'Ä',
|
||||
'Aring': 'Å',
|
||||
'AElig': 'Æ',
|
||||
'Ccedil': 'Ç',
|
||||
'Egrave': 'È',
|
||||
'Eacute': 'É',
|
||||
'Ecirc': 'Ê',
|
||||
'Euml': 'Ë',
|
||||
'Igrave': 'Ì',
|
||||
'Iacute': 'Í',
|
||||
'Icirc': 'Î',
|
||||
'Iuml': 'Ï',
|
||||
'ETH': 'Ð',
|
||||
'Ntilde': 'Ñ',
|
||||
'Ograve': 'Ò',
|
||||
'Oacute': 'Ó',
|
||||
'Ocirc': 'Ô',
|
||||
'Otilde': 'Õ',
|
||||
'Ouml': 'Ö',
|
||||
'times': '×',
|
||||
'Oslash': 'Ø',
|
||||
'Ugrave': 'Ù',
|
||||
'Uacute': 'Ú',
|
||||
'Ucirc': 'Û',
|
||||
'Uuml': 'Ü',
|
||||
'Yacute': 'Ý',
|
||||
'THORN': 'Þ',
|
||||
'szlig': 'ß',
|
||||
'agrave': 'à',
|
||||
'aacute': 'á',
|
||||
'acirc': 'â',
|
||||
'atilde': 'ã',
|
||||
'auml': 'ä',
|
||||
'aring': 'å',
|
||||
'aelig': 'æ',
|
||||
'ccedil': 'ç',
|
||||
'egrave': 'è',
|
||||
'eacute': 'é',
|
||||
'ecirc': 'ê',
|
||||
'euml': 'ë',
|
||||
'igrave': 'ì',
|
||||
'iacute': 'í',
|
||||
'icirc': 'î',
|
||||
'iuml': 'ï',
|
||||
'eth': 'ð',
|
||||
'ntilde': 'ñ',
|
||||
'ograve': 'ò',
|
||||
'oacute': 'ó',
|
||||
'ocirc': 'ô',
|
||||
'otilde': 'õ',
|
||||
'ouml': 'ö',
|
||||
'divide': '÷',
|
||||
'oslash': 'ø',
|
||||
'ugrave': 'ù',
|
||||
'uacute': 'ú',
|
||||
'ucirc': 'û',
|
||||
'uuml': 'ü',
|
||||
'yacute': 'ý',
|
||||
'thorn': 'þ',
|
||||
'yuml': 'ÿ',
|
||||
'fnof': 'ƒ',
|
||||
'Alpha': 'Α',
|
||||
'Beta': 'Β',
|
||||
'Gamma': 'Γ',
|
||||
'Delta': 'Δ',
|
||||
'Epsilon': 'Ε',
|
||||
'Zeta': 'Ζ',
|
||||
'Eta': 'Η',
|
||||
'Theta': 'Θ',
|
||||
'Iota': 'Ι',
|
||||
'Kappa': 'Κ',
|
||||
'Lambda': 'Λ',
|
||||
'Mu': 'Μ',
|
||||
'Nu': 'Ν',
|
||||
'Xi': 'Ξ',
|
||||
'Omicron': 'Ο',
|
||||
'Pi': 'Π',
|
||||
'Rho': 'Ρ',
|
||||
'Sigma': 'Σ',
|
||||
'Tau': 'Τ',
|
||||
'Upsilon': 'Υ',
|
||||
'Phi': 'Φ',
|
||||
'Chi': 'Χ',
|
||||
'Psi': 'Ψ',
|
||||
'Omega': 'Ω',
|
||||
'alpha': 'α',
|
||||
'beta': 'β',
|
||||
'gamma': 'γ',
|
||||
'delta': 'δ',
|
||||
'epsilon': 'ε',
|
||||
'zeta': 'ζ',
|
||||
'eta': 'η',
|
||||
'theta': 'θ',
|
||||
'iota': 'ι',
|
||||
'kappa': 'κ',
|
||||
'lambda': 'λ',
|
||||
'mu': 'μ',
|
||||
'nu': 'ν',
|
||||
'xi': 'ξ',
|
||||
'omicron': 'ο',
|
||||
'pi': 'π',
|
||||
'rho': 'ρ',
|
||||
'sigmaf': 'ς',
|
||||
'sigma': 'σ',
|
||||
'tau': 'τ',
|
||||
'upsilon': 'υ',
|
||||
'phi': 'φ',
|
||||
'chi': 'χ',
|
||||
'psi': 'ψ',
|
||||
'omega': 'ω',
|
||||
'thetasym': 'ϑ',
|
||||
'upsih': 'ϒ',
|
||||
'piv': 'ϖ',
|
||||
'bull': '•',
|
||||
'hellip': '…',
|
||||
'prime': '′',
|
||||
'Prime': '″',
|
||||
'oline': '‾',
|
||||
'frasl': '⁄',
|
||||
'weierp': '℘',
|
||||
'image': 'ℑ',
|
||||
'real': 'ℜ',
|
||||
'trade': '™',
|
||||
'alefsym': 'ℵ',
|
||||
'larr': '←',
|
||||
'uarr': '↑',
|
||||
'rarr': '→',
|
||||
'darr': '↓',
|
||||
'harr': '↔',
|
||||
'crarr': '↵',
|
||||
'lArr': '⇐',
|
||||
'uArr': '⇑',
|
||||
'rArr': '⇒',
|
||||
'dArr': '⇓',
|
||||
'hArr': '⇔',
|
||||
'forall': '∀',
|
||||
'part': '∂',
|
||||
'exist': '∃',
|
||||
'empty': '∅',
|
||||
'nabla': '∇',
|
||||
'isin': '∈',
|
||||
'notin': '∉',
|
||||
'ni': '∋',
|
||||
'prod': '∏',
|
||||
'sum': '∑',
|
||||
'minus': '−',
|
||||
'lowast': '∗',
|
||||
'radic': '√',
|
||||
'prop': '∝',
|
||||
'infin': '∞',
|
||||
'ang': '∠',
|
||||
'and': '∧',
|
||||
'or': '∨',
|
||||
'cap': '∩',
|
||||
'cup': '∪',
|
||||
'int': '∫',
|
||||
'there4': '∴',
|
||||
'sim': '∼',
|
||||
'cong': '≅',
|
||||
'asymp': '≈',
|
||||
'ne': '≠',
|
||||
'equiv': '≡',
|
||||
'le': '≤',
|
||||
'ge': '≥',
|
||||
'sub': '⊂',
|
||||
'sup': '⊃',
|
||||
'nsub': '⊄',
|
||||
'sube': '⊆',
|
||||
'supe': '⊇',
|
||||
'oplus': '⊕',
|
||||
'otimes': '⊗',
|
||||
'perp': '⊥',
|
||||
'sdot': '⋅',
|
||||
'lceil': '⌈',
|
||||
'rceil': '⌉',
|
||||
'lfloor': '⌊',
|
||||
'rfloor': '⌋',
|
||||
'lang': '〈',
|
||||
'rang': '〉',
|
||||
'loz': '◊',
|
||||
'spades': '♠',
|
||||
'clubs': '♣',
|
||||
'hearts': '♥',
|
||||
'diams': '♦',
|
||||
'quot': '"',
|
||||
'amp': '&',
|
||||
'lt': '<',
|
||||
'gt': '>',
|
||||
'OElig': 'Œ',
|
||||
'oelig': 'œ',
|
||||
'Scaron': 'Š',
|
||||
'scaron': 'š',
|
||||
'Yuml': 'Ÿ',
|
||||
'circ': 'ˆ',
|
||||
'tilde': '˜',
|
||||
'ensp': ' ',
|
||||
'emsp': ' ',
|
||||
'thinsp': ' ',
|
||||
'zwnj': '',
|
||||
'zwj': '',
|
||||
'lrm': '',
|
||||
'rlm': '',
|
||||
'ndash': '–',
|
||||
'mdash': '—',
|
||||
'lsquo': '‘',
|
||||
'rsquo': '’',
|
||||
'sbquo': '‚',
|
||||
'ldquo': '“',
|
||||
'rdquo': '”',
|
||||
'bdquo': '„',
|
||||
'dagger': '†',
|
||||
'Dagger': '‡',
|
||||
'permil': '‰',
|
||||
'lsaquo': '‹',
|
||||
'rsaquo': '›',
|
||||
'euro': '€'
|
||||
};
|
Reference in New Issue
Block a user