gfm-escape
Version:
Markdown and GFM escaper for converting plaintext into escaped Markdown
1,138 lines (940 loc) • 48 kB
JavaScript
;
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var UnionReplacer = _interopDefault(require('union-replacer'));
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _extends() {
_extends = Object.assign || function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
function _inheritsLoose(subClass, superClass) {
subClass.prototype = Object.create(superClass.prototype);
subClass.prototype.constructor = subClass;
subClass.__proto__ = superClass;
}
var BaseSyntax = function () {
function BaseSyntax(name) {
this.name = name;
this.inlinesInterpreted = true;
this.blocksInterpreted = true;
this.isLink = false;
}
var _proto = BaseSyntax.prototype;
_proto.isEncodable = function isEncodable(str) {
return true;
};
_proto.wouldBeUnaltered = function wouldBeUnaltered(str) {
return true;
};
return BaseSyntax;
}();
var NAME = 'text';
var TextSyntax = function (_BaseSyntax) {
_inheritsLoose(TextSyntax, _BaseSyntax);
function TextSyntax() {
return _BaseSyntax.call(this, NAME) || this;
}
_createClass(TextSyntax, null, [{
key: "name",
get: function get() {
return NAME;
}
}]);
return TextSyntax;
}(BaseSyntax);
var NAME$1 = 'linkDestination';
var LinkDestinationSyntax = function (_BaseSyntax) {
_inheritsLoose(LinkDestinationSyntax, _BaseSyntax);
function LinkDestinationSyntax() {
var _this;
_this = _BaseSyntax.call(this, NAME$1) || this;
_this.isLink = true;
_this.inlinesInterpreted = false;
_this.blocksInterpreted = false;
return _this;
}
_createClass(LinkDestinationSyntax, null, [{
key: "name",
get: function get() {
return NAME$1;
}
}]);
return LinkDestinationSyntax;
}(BaseSyntax);
var NAME$2 = 'linkTitle';
var LinkTitleSyntax = function (_BaseSyntax) {
_inheritsLoose(LinkTitleSyntax, _BaseSyntax);
function LinkTitleSyntax() {
var _this;
_this = _BaseSyntax.call(this, NAME$2) || this;
_this.isLink = true;
_this.inlinesInterpreted = false;
return _this;
}
_createClass(LinkTitleSyntax, null, [{
key: "name",
get: function get() {
return NAME$2;
}
}]);
return LinkTitleSyntax;
}(BaseSyntax);
var autolinkedSchemeReStr = '[hH][tT][tT][pP][sS]?://|[fF][tT][pP]://';
var linkForbiddenRe = /[<>\s\f\v]/;
var entityAmpersandReStr = '&(?=[a-zA-Z][a-zA-Z\\d]*;|#\\d{1,7};|#[xX][\\da-fA-F]{1,6};)';
var entityAmpersandRe = new RegExp(entityAmpersandReStr);
var entityAmpersandsRe = new RegExp(entityAmpersandReStr, 'g');
var NAME$3 = 'cmAutolink';
var STARTS_WITH_AUTOLINKED_SCHEME_RE = new RegExp("^" + autolinkedSchemeReStr);
var EMAIL_ADDRESS_RE = /^[\w.!#$%&'*+/=?^`{|}~-]+@[a-z\d](?:[a-z\d-]{0,61}[a-z\d])?(?:\.[a-z\d](?:[a-z\d-]{0,61}[a-z\d])?)*$/i;
var CmAutolinkSyntax = function (_BaseSyntax) {
_inheritsLoose(CmAutolinkSyntax, _BaseSyntax);
function CmAutolinkSyntax() {
var _this;
_this = _BaseSyntax.call(this, NAME$3) || this;
_this.isLink = true;
_this.inlinesInterpreted = false;
_this.blocksInterpreted = false;
return _this;
}
var _proto = CmAutolinkSyntax.prototype;
_proto.isEncodable = function isEncodable(str) {
return STARTS_WITH_AUTOLINKED_SCHEME_RE.test(str) || EMAIL_ADDRESS_RE.test(str);
};
_proto.wouldBeUnaltered = function wouldBeUnaltered(str) {
return !linkForbiddenRe.test(str) && !entityAmpersandRe.test(str);
};
_createClass(CmAutolinkSyntax, null, [{
key: "name",
get: function get() {
return NAME$3;
}
}]);
return CmAutolinkSyntax;
}(BaseSyntax);
var NAME$4 = 'codeSpan';
var CodeSpanSyntax = function (_BaseSyntax) {
_inheritsLoose(CodeSpanSyntax, _BaseSyntax);
function CodeSpanSyntax() {
var _this;
_this = _BaseSyntax.call(this, NAME$4) || this;
_this.inlinesInterpreted = false;
_this.blocksInterpreted = false;
return _this;
}
var _proto = CodeSpanSyntax.prototype;
_proto.isEncodable = function isEncodable(str) {
return str.length > 0;
};
_createClass(CodeSpanSyntax, null, [{
key: "name",
get: function get() {
return NAME$4;
}
}]);
return CodeSpanSyntax;
}(BaseSyntax);
var Syntax = BaseSyntax;
Syntax.text = new TextSyntax();
Syntax.linkDestination = new LinkDestinationSyntax();
Syntax.linkTitle = new LinkTitleSyntax();
Syntax.cmAutolink = new CmAutolinkSyntax();
Syntax.codeSpan = new CodeSpanSyntax();
var longestBacktickString = function longestBacktickString(str) {
var m = str.match(/`+/g);
return m ? m.reduce(function (longest, current) {
return current.length > longest.length ? current : longest;
}, '') : '';
};
var SHOULD_ADD_SPACE_RE = /^`|^[ \r\n].*?[^ \r\n].*[ \r\n]$|`$/;
function scanDelimiters(input) {
var x = this.metadata;
x.extraBacktickString = longestBacktickString(input);
x.extraSpace = SHOULD_ADD_SPACE_RE.test(input) ? ' ' : '';
return input;
}
function addDelimiterExtras(output) {
var x = this.metadata;
var before = x.extraBacktickString + x.extraSpace;
var after = x.extraSpace + x.extraBacktickString;
return "" + before + output + after;
}
function codeSpanReplace() {
this.preprocessors.push(scanDelimiters);
this.postprocessors.unshift(addDelimiterExtras);
}
var BACKSLASH_BLOCK_RE = new RegExp(['^([-*_])[ \\t]*(?:\\1[ \\t]*){2,}$', '^=+[ \\t]*$', '^(?:[-+*]|#{1,6})(?=\\s|$)', '^~(?=~~)'].join('|'));
var ORDERED_LIST_RE = /^(\d+)([.)])(?=\s|$)/;
function blockReplace() {
this.replaces.push([BACKSLASH_BLOCK_RE, '\\$&']);
this.replaces.push([ORDERED_LIST_RE, '$1\\$2']);
}
function mergeOpts(opts, key, defaults, defaultEnabled) {
var myOpts = opts[key];
if (!myOpts && (!defaultEnabled || myOpts !== undefined)) {
return false;
}
opts[key] = typeof opts[key] === 'object' ? _extends({}, defaults, opts[key]) : defaults;
return true;
}
var autolinkedWwwReStr = 'www\\.';
var extWebAutolinkStartCandidateReStr = "(?:" + autolinkedSchemeReStr + "|" + autolinkedWwwReStr + ")" + '[^\\s\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]';
var defaultOpts = {
maxIntrawordUnderscoreRun: undefined
};
var INTRAWORD_UNDERSORES_RE = new RegExp("([a-zA-Z0-9])(_+)(?=[a-zA-Z0-9])(?!" + extWebAutolinkStartCandidateReStr + ")");
var FREE_DELIMITER_RE = /(?:^|[ \t\f])([_*])\1*(?=[ \t\r\n\f])/;
function processIntrawordUnderscores(_ref) {
var _ref$match = _ref.match,
m = _ref$match[0],
before = _ref$match[1],
underscores = _ref$match[2];
var max = this.escape.opts.emphasisNonDelimiters.maxIntrawordUnderscoreRun;
if (max !== false && underscores.length > max) {
var underscoresOut = underscores.replace(/_/g, '\\_');
return "" + before + underscoresOut;
}
return m;
}
function emphasisNonDelimitersReplace() {
if (!mergeOpts(this.opts, 'emphasisNonDelimiters', defaultOpts, true)) {
return;
}
var max = this.opts.emphasisNonDelimiters.maxIntrawordUnderscoreRun;
if (typeof max !== 'number') {
this.opts.emphasisNonDelimiters.maxIntrawordUnderscoreRun = max ? 1 : false;
}
this.replaces.push([INTRAWORD_UNDERSORES_RE, processIntrawordUnderscores, true]);
this.replaces.push([FREE_DELIMITER_RE, '$&']);
}
function entityBackslashReplace() {
this.replaces.push([entityAmpersandRe, '\\&']);
}
function entityEntityReplace() {
this.replaces.push([entityAmpersandRe, '&']);
}
var C = {
// Equivalent to \t\n\f\r\p{Zs}
space: ' \\t\\n\\f\\r\xA0\u1680\u2000-\u200A\u202F\u205F\u3000',
// Equivalent to \p{Pc}\p{Pd}\p{Pe}\p{Pf}\p{Pi}\p{Po}\p{Ps}
punct: '_\u203F\u2040\u2054\uFE33\uFE34\uFE4D-\uFE4F\uFF3F\\-\u058A\u05BE\u1400\u1806\u2010-\u2015\u2E17\u2E1A\u2E3A\u2E3B\u2E40\u301C\u3030\u30A0\uFE31\uFE32\uFE58\uFE63\uFF0D\\)\\]\\}\u0F3B\u0F3D\u169C\u2046\u207E\u208E\u2309\u230B\u232A\u2769\u276B\u276D\u276F\u2771\u2773\u2775\u27C6\u27E7\u27E9\u27EB\u27ED\u27EF\u2984\u2986\u2988\u298A\u298C\u298E\u2990\u2992\u2994\u2996\u2998\u29D9\u29DB\u29FD\u2E23\u2E25\u2E27\u2E29\u3009\u300B\u300D\u300F\u3011\u3015\u3017\u3019\u301B\u301E\u301F\uFD3E\uFE18\uFE36\uFE38\uFE3A\uFE3C\uFE3E\uFE40\uFE42\uFE44\uFE48\uFE5A\uFE5C\uFE5E\uFF09\uFF3D\uFF5D\uFF60\uFF63\xBB\u2019\u201D\u203A\u2E03\u2E05\u2E0A\u2E0D\u2E1D\u2E21\xAB\u2018\u201B\u201C\u201F\u2039\u2E02\u2E04\u2E09\u2E0C\u2E1C\u2E20!-#%-\'\\*,\\.\\/:;\\?@\\\xA1\xA7\xB6\xB7\xBF\u037E\u0387\u055A-\u055F\u0589\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u166D\u166E\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u1805\u1807-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2016\u2017\u2020-\u2027\u2030-\u2038\u203B-\u203E\u2041-\u2043\u2047-\u2051\u2053\u2055-\u205E\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00\u2E01\u2E06-\u2E08\u2E0B\u2E0E-\u2E16\u2E18\u2E19\u2E1B\u2E1E\u2E1F\u2E2A-\u2E2E\u2E30-\u2E39\u2E3C-\u2E3F\u2E41\u2E43-\u2E4E\u3001-\u3003\u303D\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFE10-\uFE16\uFE19\uFE30\uFE45\uFE46\uFE49-\uFE4C\uFE50-\uFE52\uFE54-\uFE57\uFE5F-\uFE61\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF07\uFF0A\uFF0C\uFF0E\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3C\uFF61\uFF64\uFF65\\(\\[\\{\u0F3A\u0F3C\u169B\u201A\u201E\u2045\u207D\u208D\u2308\u230A\u2329\u2768\u276A\u276C\u276E\u2770\u2772\u2774\u27C5\u27E6\u27E8\u27EA\u27EC\u27EE\u2983\u2985\u2987\u2989\u298B\u298D\u298F\u2991\u2993\u2995\u2997\u29D8\u29DA\u29FC\u2E22\u2E24\u2E26\u2E28\u2E42\u3008\u300A\u300C\u300E\u3010\u3014\u3016\u3018\u301A\u301D\uFD3F\uFE17\uFE35\uFE37\uFE39\uFE3B\uFE3D\uFE3F\uFE41\uFE43\uFE47\uFE59\uFE5B\uFE5D\uFF08\uFF3B\uFF5B\uFF5F\uFF62',
};
var ALPHA_ENTITY_REFERENCES = {
'\xC6':'AElig','&':'amp','\xC1':'Aacute','\u0102':'Abreve','\xC2':'Acirc','\u0410':'Acy',
'\xC0':'Agrave','\u0391':'Alpha','\u0100':'Amacr','\u2A53':'And','\u0104':'Aogon','\u2061':'af',
'\xC5':'angst','\u2254':'colone','\xC3':'Atilde','\xC4':'Auml','\u2216':'setmn','\u2AE7':'Barv',
'\u2306':'Barwed','\u0411':'Bcy','\u2235':'becaus','\u212C':'Bscr','\u0392':'Beta','\u02D8':'breve',
'\u224E':'bump','\u0427':'CHcy','\xA9':'copy','\u0106':'Cacute','\u22D2':'Cap','\u2145':'DD',
'\u212D':'Cfr','\u010C':'Ccaron','\xC7':'Ccedil','\u0108':'Ccirc','\u2230':'Cconint','\u010A':'Cdot',
'\xB8':'cedil','\xB7':'middot','\u03A7':'Chi','\u2299':'odot','\u2296':'ominus','\u2295':'oplus',
'\u2297':'otimes','\u2232':'cwconint','\u201D':'rdquo','\u2019':'rsquo','\u2237':'Colon',
'\u2A74':'Colone','\u2261':'equiv','\u222F':'Conint','\u222E':'oint','\u2102':'Copf',
'\u2210':'coprod','\u2233':'awconint','\u2A2F':'Cross','\u22D3':'Cup','\u224D':'CupCap',
'\u2911':'DDotrahd','\u0402':'DJcy','\u0405':'DScy','\u040F':'DZcy','\u2021':'Dagger',
'\u21A1':'Darr','\u2AE4':'Dashv','\u010E':'Dcaron','\u0414':'Dcy','\u2207':'Del','\u0394':'Delta',
'\xB4':'acute','\u02D9':'dot','\u02DD':'dblac','`':'grave','\u02DC':'tilde','\u22C4':'diam',
'\u2146':'dd','\xA8':'die','\u20DC':'DotDot','\u2250':'doteq','\u21D3':'dArr','\u21D0':'lArr',
'\u21D4':'iff','\u27F8':'xlArr','\u27FA':'xhArr','\u27F9':'xrArr','\u21D2':'rArr','\u22A8':'vDash',
'\u21D1':'uArr','\u21D5':'vArr','\u2225':'par','\u2193':'darr','\u2913':'DownArrowBar',
'\u21F5':'duarr','\u0311':'DownBreve','\u2950':'DownLeftRightVector','\u295E':'DownLeftTeeVector',
'\u21BD':'lhard','\u2956':'DownLeftVectorBar','\u295F':'DownRightTeeVector','\u21C1':'rhard',
'\u2957':'DownRightVectorBar','\u22A4':'top','\u21A7':'mapstodown','\u0110':'Dstrok','\u014A':'ENG',
'\xD0':'ETH','\xC9':'Eacute','\u011A':'Ecaron','\xCA':'Ecirc','\u042D':'Ecy','\u0116':'Edot',
'\xC8':'Egrave','\u2208':'in','\u0112':'Emacr','\u25FB':'EmptySmallSquare',
'\u25AB':'EmptyVerySmallSquare','\u0118':'Eogon','\u0395':'Epsilon','\u2A75':'Equal','\u2242':'esim',
'\u21CC':'rlhar','\u2130':'Escr','\u2A73':'Esim','\u0397':'Eta','\xCB':'Euml','\u2203':'exist',
'\u2147':'ee','\u0424':'Fcy','\u25FC':'FilledSmallSquare','\u25AA':'squf','\u2200':'forall',
'\u2131':'Fscr','\u0403':'GJcy','>':'gt','\u0393':'Gamma','\u03DC':'Gammad','\u011E':'Gbreve',
'\u0122':'Gcedil','\u011C':'Gcirc','\u0413':'Gcy','\u0120':'Gdot','\u22D9':'Gg','\u2265':'ge',
'\u22DB':'gel','\u2267':'gE','\u2AA2':'GreaterGreater','\u2277':'gl','\u2A7E':'ges','\u2273':'gsim',
'\u226B':'gg','\u042A':'HARDcy','\u02C7':'caron','^':'Hat','\u0124':'Hcirc','\u210C':'Hfr',
'\u210B':'Hscr','\u210D':'Hopf','\u2500':'boxh','\u0126':'Hstrok','\u224F':'bumpe','\u0415':'IEcy',
'\u0132':'IJlig','\u0401':'IOcy','\xCD':'Iacute','\xCE':'Icirc','\u0418':'Icy','\u0130':'Idot',
'\u2111':'Im','\xCC':'Igrave','\u012A':'Imacr','\u2148':'ii','\u222C':'Int','\u222B':'int',
'\u22C2':'xcap','\u2063':'ic','\u2062':'it','\u012E':'Iogon','\u0399':'Iota','\u2110':'Iscr',
'\u0128':'Itilde','\u0406':'Iukcy','\xCF':'Iuml','\u0134':'Jcirc','\u0419':'Jcy','\u0408':'Jsercy',
'\u0404':'Jukcy','\u0425':'KHcy','\u040C':'KJcy','\u039A':'Kappa','\u0136':'Kcedil','\u041A':'Kcy',
'\u0409':'LJcy','<':'lt','\u0139':'Lacute','\u039B':'Lambda','\u27EA':'Lang','\u2112':'Lscr',
'\u219E':'Larr','\u013D':'Lcaron','\u013B':'Lcedil','\u041B':'Lcy','\u27E8':'lang','\u2190':'larr',
'\u21E4':'larrb','\u21C6':'lrarr','\u2308':'lceil','\u27E6':'lobrk','\u2961':'LeftDownTeeVector',
'\u21C3':'dharl','\u2959':'LeftDownVectorBar','\u230A':'lfloor','\u2194':'harr',
'\u294E':'LeftRightVector','\u22A3':'dashv','\u21A4':'mapstoleft','\u295A':'LeftTeeVector',
'\u22B2':'vltri','\u29CF':'LeftTriangleBar','\u22B4':'ltrie','\u2951':'LeftUpDownVector',
'\u2960':'LeftUpTeeVector','\u21BF':'uharl','\u2958':'LeftUpVectorBar','\u21BC':'lharu',
'\u2952':'LeftVectorBar','\u22DA':'leg','\u2266':'lE','\u2276':'lg','\u2AA1':'LessLess',
'\u2A7D':'les','\u2272':'lsim','\u22D8':'Ll','\u21DA':'lAarr','\u013F':'Lmidot','\u27F5':'xlarr',
'\u27F7':'xharr','\u27F6':'xrarr','\u2199':'swarr','\u2198':'searr','\u21B0':'lsh','\u0141':'Lstrok',
'\u226A':'ll','\u2905':'Map','\u041C':'Mcy','\u205F':'MediumSpace','\u2133':'Mscr','\u2213':'mp',
'\u039C':'Mu','\u040A':'NJcy','\u0143':'Nacute','\u0147':'Ncaron','\u0145':'Ncedil','\u041D':'Ncy',
'\u200B':'ZeroWidthSpace','\n':'NewLine','\u2060':'NoBreak','\xA0':'nbsp','\u2115':'Nopf',
'\u2AEC':'Not','\u2262':'nequiv','\u226D':'NotCupCap','\u2226':'npar','\u2209':'notin','\u2260':'ne',
'\u2204':'nexist','\u226F':'ngt','\u2271':'nge','\u2279':'ntgl','\u2275':'ngsim','\u22EA':'nltri',
'\u22EC':'nltrie','\u226E':'nlt','\u2270':'nle','\u2278':'ntlg','\u2274':'nlsim','\u2280':'npr',
'\u22E0':'nprcue','\u220C':'notni','\u22EB':'nrtri','\u22ED':'nrtrie','\u22E2':'nsqsube',
'\u22E3':'nsqsupe','\u2288':'nsube','\u2281':'nsc','\u22E1':'nsccue','\u2289':'nsupe',
'\u2241':'nsim','\u2244':'nsime','\u2247':'ncong','\u2249':'nap','\u2224':'nmid','\xD1':'Ntilde',
'\u039D':'Nu','\u0152':'OElig','\xD3':'Oacute','\xD4':'Ocirc','\u041E':'Ocy','\u0150':'Odblac',
'\xD2':'Ograve','\u014C':'Omacr','\u03A9':'ohm','\u039F':'Omicron','\u201C':'ldquo','\u2018':'lsquo',
'\u2A54':'Or','\xD8':'Oslash','\xD5':'Otilde','\u2A37':'Otimes','\xD6':'Ouml','\u203E':'oline',
'\u23DE':'OverBrace','\u23B4':'tbrk','\u23DC':'OverParenthesis','\u2202':'part','\u041F':'Pcy',
'\u03A6':'Phi','\u03A0':'Pi','\xB1':'pm','\u2119':'Popf','\u2ABB':'Pr','\u227A':'pr','\u2AAF':'pre',
'\u227C':'prcue','\u227E':'prsim','\u2033':'Prime','\u220F':'prod','\u221D':'prop','\u03A8':'Psi',
'"':'quot','\u211A':'Qopf','\u2910':'RBarr','\xAE':'reg','\u0154':'Racute','\u27EB':'Rang',
'\u21A0':'Rarr','\u2916':'Rarrtl','\u0158':'Rcaron','\u0156':'Rcedil','\u0420':'Rcy','\u211C':'Re',
'\u220B':'ni','\u21CB':'lrhar','\u296F':'duhar','\u03A1':'Rho','\u27E9':'rang','\u2192':'rarr',
'\u21E5':'rarrb','\u21C4':'rlarr','\u2309':'rceil','\u27E7':'robrk','\u295D':'RightDownTeeVector',
'\u21C2':'dharr','\u2955':'RightDownVectorBar','\u230B':'rfloor','\u22A2':'vdash','\u21A6':'map',
'\u295B':'RightTeeVector','\u22B3':'vrtri','\u29D0':'RightTriangleBar','\u22B5':'rtrie',
'\u294F':'RightUpDownVector','\u295C':'RightUpTeeVector','\u21BE':'uharr',
'\u2954':'RightUpVectorBar','\u21C0':'rharu','\u2953':'RightVectorBar','\u211D':'Ropf',
'\u2970':'RoundImplies','\u21DB':'rAarr','\u211B':'Rscr','\u21B1':'rsh','\u29F4':'RuleDelayed',
'\u0429':'SHCHcy','\u0428':'SHcy','\u042C':'SOFTcy','\u015A':'Sacute','\u2ABC':'Sc',
'\u0160':'Scaron','\u015E':'Scedil','\u015C':'Scirc','\u0421':'Scy','\u2191':'uarr','\u03A3':'Sigma',
'\u2218':'compfn','\u221A':'Sqrt','\u25A1':'squ','\u2293':'sqcap','\u228F':'sqsub','\u2291':'sqsube',
'\u2290':'sqsup','\u2292':'sqsupe','\u2294':'sqcup','\u22C6':'Star','\u22D0':'Sub','\u2286':'sube',
'\u227B':'sc','\u2AB0':'sce','\u227D':'sccue','\u227F':'scsim','\u2211':'sum','\u22D1':'Sup',
'\u2283':'sup','\u2287':'supe','\xDE':'THORN','\u2122':'trade','\u040B':'TSHcy','\u0426':'TScy',
'\t':'Tab','\u03A4':'Tau','\u0164':'Tcaron','\u0162':'Tcedil','\u0422':'Tcy','\u2234':'therefore',
'\u0398':'Theta','\u2009':'thinsp','\u223C':'sim','\u2243':'sime','\u2245':'cong','\u2248':'ap',
'\u20DB':'tdot','\u0166':'Tstrok','\xDA':'Uacute','\u219F':'Uarr','\u2949':'Uarrocir',
'\u040E':'Ubrcy','\u016C':'Ubreve','\xDB':'Ucirc','\u0423':'Ucy','\u0170':'Udblac','\xD9':'Ugrave',
'\u016A':'Umacr','_':'lowbar','\u23DF':'UnderBrace','\u23B5':'bbrk','\u23DD':'UnderParenthesis',
'\u22C3':'xcup','\u228E':'uplus','\u0172':'Uogon','\u2912':'UpArrowBar','\u21C5':'udarr',
'\u2195':'varr','\u296E':'udhar','\u22A5':'bot','\u21A5':'mapstoup','\u2196':'nwarr',
'\u2197':'nearr','\u03D2':'Upsi','\u03A5':'Upsilon','\u016E':'Uring','\u0168':'Utilde','\xDC':'Uuml',
'\u22AB':'VDash','\u2AEB':'Vbar','\u0412':'Vcy','\u22A9':'Vdash','\u2AE6':'Vdashl','\u22C1':'Vee',
'\u2016':'Vert','\u2223':'mid','|':'vert','\u2758':'VerticalSeparator','\u2240':'wr',
'\u200A':'hairsp','\u22AA':'Vvdash','\u0174':'Wcirc','\u22C0':'Wedge','\u039E':'Xi','\u042F':'YAcy',
'\u0407':'YIcy','\u042E':'YUcy','\xDD':'Yacute','\u0176':'Ycirc','\u042B':'Ycy','\u0178':'Yuml',
'\u0416':'ZHcy','\u0179':'Zacute','\u017D':'Zcaron','\u0417':'Zcy','\u017B':'Zdot','\u0396':'Zeta',
'\u2128':'Zfr','\u2124':'Zopf','\xE1':'aacute','\u0103':'abreve','\u223E':'ac','\u223F':'acd',
'\xE2':'acirc','\u0430':'acy','\xE6':'aelig','\xE0':'agrave','\u2135':'aleph','\u03B1':'alpha',
'\u0101':'amacr','\u2A3F':'amalg','\u2227':'and','\u2A55':'andand','\u2A5C':'andd',
'\u2A58':'andslope','\u2A5A':'andv','\u2220':'ang','\u29A4':'ange','\u2221':'angmsd',
'\u29A8':'angmsdaa','\u29A9':'angmsdab','\u29AA':'angmsdac','\u29AB':'angmsdad','\u29AC':'angmsdae',
'\u29AD':'angmsdaf','\u29AE':'angmsdag','\u29AF':'angmsdah','\u221F':'angrt','\u22BE':'angrtvb',
'\u299D':'angrtvbd','\u2222':'angsph','\u237C':'angzarr','\u0105':'aogon','\u2A70':'apE',
'\u2A6F':'apacir','\u224A':'ape','\u224B':'apid','\'':'apos','\xE5':'aring','*':'ast',
'\xE3':'atilde','\xE4':'auml','\u2A11':'awint','\u2AED':'bNot','\u224C':'bcong','\u03F6':'bepsi',
'\u2035':'bprime','\u223D':'bsim','\u22CD':'bsime','\u22BD':'barvee','\u2305':'barwed',
'\u23B6':'bbrktbrk','\u0431':'bcy','\u201E':'bdquo','\u29B0':'bemptyv','\u03B2':'beta',
'\u2136':'beth','\u226C':'twixt','\u25EF':'xcirc','\u2A00':'xodot','\u2A01':'xoplus',
'\u2A02':'xotime','\u2A06':'xsqcup','\u2605':'starf','\u25BD':'xdtri','\u25B3':'xutri',
'\u2A04':'xuplus','\u290D':'rbarr','\u29EB':'lozf','\u25B4':'utrif','\u25BE':'dtrif',
'\u25C2':'ltrif','\u25B8':'rtrif','\u2423':'blank','\u2588':'block','\u2310':'bnot',
'\u22C8':'bowtie','\u2557':'boxDL','\u2554':'boxDR','\u2556':'boxDl','\u2553':'boxDr',
'\u2550':'boxH','\u2566':'boxHD','\u2569':'boxHU','\u2564':'boxHd','\u2567':'boxHu','\u255D':'boxUL',
'\u255A':'boxUR','\u255C':'boxUl','\u2559':'boxUr','\u2551':'boxV','\u256C':'boxVH','\u2563':'boxVL',
'\u2560':'boxVR','\u256B':'boxVh','\u2562':'boxVl','\u255F':'boxVr','\u29C9':'boxbox',
'\u2555':'boxdL','\u2552':'boxdR','\u2510':'boxdl','\u250C':'boxdr','\u2565':'boxhD',
'\u2568':'boxhU','\u252C':'boxhd','\u2534':'boxhu','\u229F':'minusb','\u229E':'plusb',
'\u22A0':'timesb','\u255B':'boxuL','\u2558':'boxuR','\u2518':'boxul','\u2514':'boxur',
'\u2502':'boxv','\u256A':'boxvH','\u2561':'boxvL','\u255E':'boxvR','\u253C':'boxvh','\u2524':'boxvl',
'\u251C':'boxvr','\xA6':'brvbar','\u204F':'bsemi','\\':'bsol','\u29C5':'bsolb','\u27C8':'bsolhsub',
'\u2022':'bull','\u2AAE':'bumpE','\u0107':'cacute','\u2229':'cap','\u2A44':'capand',
'\u2A49':'capbrcup','\u2A4B':'capcap','\u2A47':'capcup','\u2A40':'capdot','\u2041':'caret',
'\u2A4D':'ccaps','\u010D':'ccaron','\xE7':'ccedil','\u0109':'ccirc','\u2A4C':'ccups',
'\u2A50':'ccupssm','\u010B':'cdot','\u29B2':'cemptyv','\xA2':'cent','\u0447':'chcy','\u2713':'check',
'\u03C7':'chi','\u25CB':'cir','\u29C3':'cirE','\u02C6':'circ','\u2257':'cire','\u21BA':'olarr',
'\u21BB':'orarr','\u24C8':'oS','\u229B':'oast','\u229A':'ocir','\u229D':'odash','\u2A10':'cirfnint',
'\u2AEF':'cirmid','\u29C2':'cirscir','\u2663':'clubs',':':'colon',',':'comma','@':'commat',
'\u2201':'comp','\u2A6D':'congdot','\u2117':'copysr','\u21B5':'crarr','\u2717':'cross',
'\u2ACF':'csub','\u2AD1':'csube','\u2AD0':'csup','\u2AD2':'csupe','\u22EF':'ctdot',
'\u2938':'cudarrl','\u2935':'cudarrr','\u22DE':'cuepr','\u22DF':'cuesc','\u21B6':'cularr',
'\u293D':'cularrp','\u222A':'cup','\u2A48':'cupbrcap','\u2A46':'cupcap','\u2A4A':'cupcup',
'\u228D':'cupdot','\u2A45':'cupor','\u21B7':'curarr','\u293C':'curarrm','\u22CE':'cuvee',
'\u22CF':'cuwed','\xA4':'curren','\u2231':'cwint','\u232D':'cylcty','\u2965':'dHar',
'\u2020':'dagger','\u2138':'daleth','\u2010':'dash','\u290F':'rBarr','\u010F':'dcaron',
'\u0434':'dcy','\u21CA':'ddarr','\u2A77':'eDDot','\xB0':'deg','\u03B4':'delta','\u29B1':'demptyv',
'\u297F':'dfisht','\u2666':'diams','\u03DD':'gammad','\u22F2':'disin','\xF7':'div','\u22C7':'divonx',
'\u0452':'djcy','\u231E':'dlcorn','\u230D':'dlcrop','$':'dollar','\u2251':'eDot','\u2238':'minusd',
'\u2214':'plusdo','\u22A1':'sdotb','\u231F':'drcorn','\u230C':'drcrop','\u0455':'dscy',
'\u29F6':'dsol','\u0111':'dstrok','\u22F1':'dtdot','\u25BF':'dtri','\u29A6':'dwangle',
'\u045F':'dzcy','\u27FF':'dzigrarr','\xE9':'eacute','\u2A6E':'easter','\u011B':'ecaron',
'\u2256':'ecir','\xEA':'ecirc','\u2255':'ecolon','\u044D':'ecy','\u0117':'edot','\u2252':'efDot',
'\u2A9A':'eg','\xE8':'egrave','\u2A96':'egs','\u2A98':'egsdot','\u2A99':'el','\u23E7':'elinters',
'\u2113':'ell','\u2A95':'els','\u2A97':'elsdot','\u0113':'emacr','\u2205':'empty','\u2003':'emsp',
'\u014B':'eng','\u2002':'ensp','\u0119':'eogon','\u22D5':'epar','\u29E3':'eparsl','\u2A71':'eplus',
'\u03B5':'epsi','\u03F5':'epsiv','=':'equals','\u225F':'equest','\u2A78':'equivDD',
'\u29E5':'eqvparsl','\u2253':'erDot','\u2971':'erarr','\u212F':'escr','\u03B7':'eta','\xF0':'eth',
'\xEB':'euml','\u20AC':'euro','!':'excl','\u0444':'fcy','\u2640':'female','\uFB03':'ffilig',
'\uFB00':'fflig','\uFB04':'ffllig','\uFB01':'filig','\u266D':'flat','\uFB02':'fllig',
'\u25B1':'fltns','\u0192':'fnof','\u22D4':'fork','\u2AD9':'forkv','\u2A0D':'fpartint',
'\u2044':'frasl','\u2322':'frown','\u2A8C':'gEl','\u01F5':'gacute','\u03B3':'gamma','\u2A86':'gap',
'\u011F':'gbreve','\u011D':'gcirc','\u0433':'gcy','\u0121':'gdot','\u2AA9':'gescc','\u2A80':'gesdot',
'\u2A82':'gesdoto','\u2A84':'gesdotol','\u2A94':'gesles','\u2137':'gimel','\u0453':'gjcy',
'\u2A92':'glE','\u2AA5':'gla','\u2AA4':'glj','\u2269':'gnE','\u2A8A':'gnap','\u2A88':'gne',
'\u22E7':'gnsim','\u210A':'gscr','\u2A8E':'gsime','\u2A90':'gsiml','\u2AA7':'gtcc','\u2A7A':'gtcir',
'\u22D7':'gtdot','\u2995':'gtlPar','\u2A7C':'gtquest','\u2978':'gtrarr','\xBD':'half',
'\u044A':'hardcy','\u2948':'harrcir','\u21AD':'harrw','\u210F':'hbar','\u0125':'hcirc',
'\u2665':'hearts','\u2026':'mldr','\u22B9':'hercon','\u2925':'searhk','\u2926':'swarhk',
'\u21FF':'hoarr','\u223B':'homtht','\u21A9':'larrhk','\u21AA':'rarrhk','\u2015':'horbar',
'\u0127':'hstrok','\u2043':'hybull','\xED':'iacute','\xEE':'icirc','\u0438':'icy','\u0435':'iecy',
'\xA1':'iexcl','\xEC':'igrave','\u2A0C':'qint','\u222D':'tint','\u29DC':'iinfin','\u2129':'iiota',
'\u0133':'ijlig','\u012B':'imacr','\u0131':'imath','\u22B7':'imof','\u01B5':'imped',
'\u2105':'incare','\u221E':'infin','\u29DD':'infintie','\u22BA':'intcal','\u2A17':'intlarhk',
'\u2A3C':'iprod','\u0451':'iocy','\u012F':'iogon','\u03B9':'iota','\xBF':'iquest','\u22F9':'isinE',
'\u22F5':'isindot','\u22F4':'isins','\u22F3':'isinsv','\u0129':'itilde','\u0456':'iukcy',
'\xEF':'iuml','\u0135':'jcirc','\u0439':'jcy','\u0237':'jmath','\u0458':'jsercy','\u0454':'jukcy',
'\u03BA':'kappa','\u03F0':'kappav','\u0137':'kcedil','\u043A':'kcy','\u0138':'kgreen',
'\u0445':'khcy','\u045C':'kjcy','\u291B':'lAtail','\u290E':'lBarr','\u2A8B':'lEg','\u2962':'lHar',
'\u013A':'lacute','\u29B4':'laemptyv','\u03BB':'lambda','\u2991':'langd','\u2A85':'lap',
'\xAB':'laquo','\u291F':'larrbfs','\u291D':'larrfs','\u21AB':'larrlp','\u2939':'larrpl',
'\u2973':'larrsim','\u21A2':'larrtl','\u2AAB':'lat','\u2919':'latail','\u2AAD':'late',
'\u290C':'lbarr','\u2772':'lbbrk','{':'lcub','[':'lsqb','\u298B':'lbrke','\u298F':'lbrksld',
'\u298D':'lbrkslu','\u013E':'lcaron','\u013C':'lcedil','\u043B':'lcy','\u2936':'ldca',
'\u2967':'ldrdhar','\u294B':'ldrushar','\u21B2':'ldsh','\u2264':'le','\u21C7':'llarr',
'\u22CB':'lthree','\u2AA8':'lescc','\u2A7F':'lesdot','\u2A81':'lesdoto','\u2A83':'lesdotor',
'\u2A93':'lesges','\u22D6':'ltdot','\u297C':'lfisht','\u2A91':'lgE','\u296A':'lharul',
'\u2584':'lhblk','\u0459':'ljcy','\u296B':'llhard','\u25FA':'lltri','\u0140':'lmidot',
'\u23B0':'lmoust','\u2268':'lnE','\u2A89':'lnap','\u2A87':'lne','\u22E6':'lnsim','\u27EC':'loang',
'\u21FD':'loarr','\u27FC':'xmap','\u21AC':'rarrlp','\u2985':'lopar','\u2A2D':'loplus',
'\u2A34':'lotimes','\u2217':'lowast','\u25CA':'loz','(':'lpar','\u2993':'lparlt','\u296D':'lrhard',
'\u200E':'lrm','\u22BF':'lrtri','\u2039':'lsaquo','\u2A8D':'lsime','\u2A8F':'lsimg','\u201A':'sbquo',
'\u0142':'lstrok','\u2AA6':'ltcc','\u2A79':'ltcir','\u22C9':'ltimes','\u2976':'ltlarr',
'\u2A7B':'ltquest','\u2996':'ltrPar','\u25C3':'ltri','\u294A':'lurdshar','\u2966':'luruhar',
'\u223A':'mDDot','\xAF':'macr','\u2642':'male','\u2720':'malt','\u25AE':'marker','\u2A29':'mcomma',
'\u043C':'mcy','\u2014':'mdash','\u2127':'mho','\xB5':'micro','\u2AF0':'midcir','\u2212':'minus',
'\u2A2A':'minusdu','\u2ADB':'mlcp','\u22A7':'models','\u03BC':'mu','\u22B8':'mumap','\u21CD':'nlArr',
'\u21CE':'nhArr','\u21CF':'nrArr','\u22AF':'nVDash','\u22AE':'nVdash','\u0144':'nacute',
'\u0149':'napos','\u266E':'natur','\u2A43':'ncap','\u0148':'ncaron','\u0146':'ncedil',
'\u2A42':'ncup','\u043D':'ncy','\u2013':'ndash','\u21D7':'neArr','\u2924':'nearhk','\u2928':'toea',
'\u21AE':'nharr','\u2AF2':'nhpar','\u22FC':'nis','\u22FA':'nisd','\u045A':'njcy','\u219A':'nlarr',
'\u2025':'nldr','\xAC':'not','\u22F7':'notinvb','\u22F6':'notinvc','\u22FE':'notnivb',
'\u22FD':'notnivc','\u2A14':'npolint','\u219B':'nrarr','\u2284':'nsub','\u2285':'nsup',
'\xF1':'ntilde','\u03BD':'nu','#':'num','\u2116':'numero','\u2007':'numsp','\u22AD':'nvDash',
'\u2904':'nvHarr','\u22AC':'nvdash','\u29DE':'nvinfin','\u2902':'nvlArr','\u2903':'nvrArr',
'\u21D6':'nwArr','\u2923':'nwarhk','\u2927':'nwnear','\xF3':'oacute','\xF4':'ocirc','\u043E':'ocy',
'\u0151':'odblac','\u2A38':'odiv','\u29BC':'odsold','\u0153':'oelig','\u29BF':'ofcir',
'\u02DB':'ogon','\xF2':'ograve','\u29C1':'ogt','\u29B5':'ohbar','\u29BE':'olcir','\u29BB':'olcross',
'\u29C0':'olt','\u014D':'omacr','\u03C9':'omega','\u03BF':'omicron','\u29B6':'omid','\u29B7':'opar',
'\u29B9':'operp','\u2228':'or','\u2A5D':'ord','\u2134':'oscr','\xAA':'ordf','\xBA':'ordm',
'\u22B6':'origof','\u2A56':'oror','\u2A57':'orslope','\u2A5B':'orv','\xF8':'oslash','\u2298':'osol',
'\xF5':'otilde','\u2A36':'otimesas','\xF6':'ouml','\u233D':'ovbar','\xB6':'para','\u2AF3':'parsim',
'\u2AFD':'parsl','\u043F':'pcy','%':'percnt','.':'period','\u2030':'permil','\u2031':'pertenk',
'\u03C6':'phi','\u03D5':'phiv','\u260E':'phone','\u03C0':'pi','\u03D6':'piv','\u210E':'planckh',
'+':'plus','\u2A23':'plusacir','\u2A22':'pluscir','\u2A25':'plusdu','\u2A72':'pluse',
'\u2A26':'plussim','\u2A27':'plustwo','\u2A15':'pointint','\xA3':'pound','\u2AB3':'prE',
'\u2AB7':'prap','\u2AB9':'prnap','\u2AB5':'prnE','\u22E8':'prnsim','\u2032':'prime',
'\u232E':'profalar','\u2312':'profline','\u2313':'profsurf','\u22B0':'prurel','\u03C8':'psi',
'\u2008':'puncsp','\u2057':'qprime','\u2A16':'quatint','?':'quest','\u291C':'rAtail','\u2964':'rHar',
'\u0155':'racute','\u29B3':'raemptyv','\u2992':'rangd','\u29A5':'range','\xBB':'raquo',
'\u2975':'rarrap','\u2920':'rarrbfs','\u2933':'rarrc','\u291E':'rarrfs','\u2945':'rarrpl',
'\u2974':'rarrsim','\u21A3':'rarrtl','\u219D':'rarrw','\u291A':'ratail','\u2236':'ratio',
'\u2773':'rbbrk','}':'rcub',']':'rsqb','\u298C':'rbrke','\u298E':'rbrksld','\u2990':'rbrkslu',
'\u0159':'rcaron','\u0157':'rcedil','\u0440':'rcy','\u2937':'rdca','\u2969':'rdldhar',
'\u21B3':'rdsh','\u25AD':'rect','\u297D':'rfisht','\u296C':'rharul','\u03C1':'rho','\u03F1':'rhov',
'\u21C9':'rrarr','\u22CC':'rthree','\u02DA':'ring','\u200F':'rlm','\u23B1':'rmoust','\u2AEE':'rnmid',
'\u27ED':'roang','\u21FE':'roarr','\u2986':'ropar','\u2A2E':'roplus','\u2A35':'rotimes',')':'rpar',
'\u2994':'rpargt','\u2A12':'rppolint','\u203A':'rsaquo','\u22CA':'rtimes','\u25B9':'rtri',
'\u29CE':'rtriltri','\u2968':'ruluhar','\u211E':'rx','\u015B':'sacute','\u2AB4':'scE',
'\u2AB8':'scap','\u0161':'scaron','\u015F':'scedil','\u015D':'scirc','\u2AB6':'scnE',
'\u2ABA':'scnap','\u22E9':'scnsim','\u2A13':'scpolint','\u0441':'scy','\u22C5':'sdot',
'\u2A66':'sdote','\u21D8':'seArr','\xA7':'sect',';':'semi','\u2929':'tosa','\u2736':'sext',
'\u266F':'sharp','\u0449':'shchcy','\u0448':'shcy','\xAD':'shy','\u03C3':'sigma','\u03C2':'sigmaf',
'\u2A6A':'simdot','\u2A9E':'simg','\u2AA0':'simgE','\u2A9D':'siml','\u2A9F':'simlE','\u2246':'simne',
'\u2A24':'simplus','\u2972':'simrarr','\u2A33':'smashp','\u29E4':'smeparsl','\u2323':'smile',
'\u2AAA':'smt','\u2AAC':'smte','\u044C':'softcy','/':'sol','\u29C4':'solb','\u233F':'solbar',
'\u2660':'spades','\u2606':'star','\u2282':'sub','\u2AC5':'subE','\u2ABD':'subdot',
'\u2AC3':'subedot','\u2AC1':'submult','\u2ACB':'subnE','\u228A':'subne','\u2ABF':'subplus',
'\u2979':'subrarr','\u2AC7':'subsim','\u2AD5':'subsub','\u2AD3':'subsup','\u266A':'sung',
'\u2AC6':'supE','\u2ABE':'supdot','\u2AD8':'supdsub','\u2AC4':'supedot','\u27C9':'suphsol',
'\u2AD7':'suphsub','\u297B':'suplarr','\u2AC2':'supmult','\u2ACC':'supnE','\u228B':'supne',
'\u2AC0':'supplus','\u2AC8':'supsim','\u2AD4':'supsub','\u2AD6':'supsup','\u21D9':'swArr',
'\u292A':'swnwar','\xDF':'szlig','\u2316':'target','\u03C4':'tau','\u0165':'tcaron',
'\u0163':'tcedil','\u0442':'tcy','\u2315':'telrec','\u03B8':'theta','\u03D1':'thetav','\xFE':'thorn',
'\xD7':'times','\u2A31':'timesbar','\u2A30':'timesd','\u2336':'topbot','\u2AF1':'topcir',
'\u2ADA':'topfork','\u2034':'tprime','\u25B5':'utri','\u225C':'trie','\u25EC':'tridot',
'\u2A3A':'triminus','\u2A39':'triplus','\u29CD':'trisb','\u2A3B':'tritime','\u23E2':'trpezium',
'\u0446':'tscy','\u045B':'tshcy','\u0167':'tstrok','\u2963':'uHar','\xFA':'uacute','\u045E':'ubrcy',
'\u016D':'ubreve','\xFB':'ucirc','\u0443':'ucy','\u0171':'udblac','\u297E':'ufisht','\xF9':'ugrave',
'\u2580':'uhblk','\u231C':'ulcorn','\u230F':'ulcrop','\u25F8':'ultri','\u016B':'umacr',
'\u0173':'uogon','\u03C5':'upsi','\u21C8':'uuarr','\u231D':'urcorn','\u230E':'urcrop',
'\u016F':'uring','\u25F9':'urtri','\u22F0':'utdot','\u0169':'utilde','\xFC':'uuml',
'\u29A7':'uwangle','\u2AE8':'vBar','\u2AE9':'vBarv','\u299C':'vangrt','\u0432':'vcy',
'\u22BB':'veebar','\u225A':'veeeq','\u22EE':'vellip','\u299A':'vzigzag','\u0175':'wcirc',
'\u2A5F':'wedbar','\u2259':'wedgeq','\u2118':'wp','\u03BE':'xi','\u22FB':'xnis','\xFD':'yacute',
'\u044F':'yacy','\u0177':'ycirc','\u044B':'ycy','\xA5':'yen','\u0457':'yicy','\u044E':'yucy',
'\xFF':'yuml','\u017A':'zacute','\u017E':'zcaron','\u0437':'zcy','\u017C':'zdot','\u03B6':'zeta',
'\u0436':'zhcy','\u21DD':'zigrarr','\u200D':'zwj','\u200C':'zwnj',
};
function toAlphaEntityReference(c) {
var ent = ALPHA_ENTITY_REFERENCES[c];
if (ent) {
return "&" + ent + ";";
}
return null;
}
function escapeTildes(tildes, offset, string, ctx, opts) {
if (!opts.strikethrough) {
return tildes;
}
if (!opts.strikethrough.optimizeForDoubleTilde) {
return tildes.replace(/./g, '\\$&');
}
var atStart = (!ctx || ctx.atStart) && offset === 0;
var atEnd = (!ctx || ctx.atEnd) && offset + tildes.length >= string.length;
var lead = '';
var mid = tildes;
var trail = '';
if (atStart && mid.length > 0) {
lead = "\\" + mid.charAt(0);
mid = mid.substring(1);
}
if (atEnd && mid.length > 0) {
trail = "\\" + mid.charAt(mid.length - 1);
mid = mid.slice(0, -1);
}
if (mid.length === 2) {
mid = "\\" + mid.charAt(0) + mid.substring(1);
}
return "" + lead + mid + trail;
}
var LINK_ESCAPE_RE = new RegExp("([_*<>[\\]]|" + entityAmpersandReStr + ")|(~+)", 'g');
var ExtWebAutolinkTransformers = function () {
function ExtWebAutolinkTransformers(ctx, opts) {
this.ctx = ctx;
this.opts = opts;
}
var _proto = ExtWebAutolinkTransformers.prototype;
_proto.keep = function keep(link, trail) {
return "" + link + trail;
};
_proto.commonmark = function commonmark(link, trail) {
var outLink = link.replace(entityAmpersandsRe, '&');
var addScheme = this.ctx.scheme ? '' : 'http://';
this.ctx.mctx.skip(-trail.length);
return "<" + addScheme + outLink + ">";
};
_proto.entities = function entities(link) {
return "" + link + this.ctx.entityEncodedTrail;
};
_proto.breakup = function breakup(link, trail) {
this.ctx.unterminatedEntity = false;
var giveBack = link.length - this.ctx.linkStart.length + trail.length;
this.ctx.mctx.skip(-giveBack);
return "" + this.ctx.linkStart + this.opts.extAutolink.breaker;
};
_proto.breakafter = function breakafter(link, trail) {
this.ctx.unterminatedEntity = false;
this.ctx.mctx.skip(-trail.length);
return "" + link + this.opts.extAutolink.breaker;
};
_proto.backslashEscape = function backslashEscape(str) {
var _this = this;
return str.replace(LINK_ESCAPE_RE, function (m, single, tildes, offset, string) {
if (single) {
return "\\" + single;
}
if (tildes) {
return escapeTildes(tildes, offset, string, _this.ctx, _this.opts);
}
return m;
});
};
return ExtWebAutolinkTransformers;
}();
var ENT_ENC_RE = /(^;)|([<>])|([()])|([^?!.,:"'])/g;
var ExtWebAutolinkRenderer = function () {
function ExtWebAutolinkRenderer(link, trail, ctx, opts) {
this.link = link;
this.trail = trail;
this.ctx = ctx;
this.opts = opts;
this.ctx.wouldConfuseEntity = trail.startsWith(';') && /&[a-z]+$/i.test(link);
}
var _proto = ExtWebAutolinkRenderer.prototype;
_proto.pickTransformer = function pickTransformer(t) {
var _this = this;
if (this.ctx.scheme && this.opts.extAutolink.breakUrl) {
return t.breakup;
}
if (this.ctx.www && this.opts.extAutolink.breakWww) {
return t.breakup;
}
if (!this.ctx.forceDelimiting && !this.ctx.wouldConfuseEntity) {
this.ctx.backslashEscapedTrail = t.backslashEscape(this.trail);
if (this.ctx.backslashEscapedTrail === this.trail) {
return t.keep;
}
}
var allowed = {
breakup: true,
breakafter: true
};
var considered = {};
if (this.ctx.scheme || this.opts.extAutolink.allowAddHttpScheme) {
allowed.commonmark = !linkForbiddenRe.test(this.link);
}
if (!this.ctx.forceDelimiting && !/[~a-z0-9]/i.test(this.trail)) {
considered.entities = function () {
return _this.tryEntityEncodeTrail();
};
}
for (var i = 0; i < this.opts.extAutolink.allowedTransformations.length; i++) {
var picked = this.opts.extAutolink.allowedTransformations[i];
if (allowed[picked]) {
return t[picked];
}
if (considered[picked] && considered[picked]()) {
return t[picked];
}
}
return t.breakafter;
};
_proto.tryEntityEncodeTrail = function tryEntityEncodeTrail() {
var _this2 = this;
var encodePar = false;
var success = true;
var enc = this.trail.replace(ENT_ENC_RE, function (m, semi, angle, par, other) {
if (semi) {
return _this2.ctx.wouldConfuseEntity ? toAlphaEntityReference(semi) : semi;
}
if (angle) {
encodePar = true;
return toAlphaEntityReference(angle);
}
if (par) {
return encodePar ? toAlphaEntityReference(par) : par;
}
if (other) {
var entref = toAlphaEntityReference(other);
if (entref) {
return entref;
}
success = false;
}
return m;
});
if (success) {
this.ctx.entityEncodedTrail = enc;
}
return success;
};
_proto.render = function render() {
var t = new ExtWebAutolinkTransformers(this.ctx, this.opts);
return this.pickTransformer(t).call(t, this.link, this.trail);
};
return ExtWebAutolinkRenderer;
}();
function escapePipesIfInTable(str) {
return this.escape.opts.table && this.gfmContext.inTable ? str.replace(/\|/g, '\\|') : str;
}
function wrapPostprocessor(processFn, postProcessFn) {
return function wrapper() {
return postProcessFn.call(this, processFn.apply(this, arguments));
};
}
var defaultOpts$1 = Object.freeze({
breakUrl: false,
breakWww: false,
breaker: '<!-- -->',
allowedTransformations: ['entities', 'commonmark'],
allowAddHttpScheme: false,
inImage: false
});
var shouldProcess = function shouldProcess(_ref) {
var gfmContext = _ref.gfmContext,
opts = _ref.escape.opts;
return !gfmContext.inLink && (!gfmContext.inImage || opts.autolink.inImage);
};
var EXT_WEB_AUTOLINK_RE = function () {
var MC_SD = "[^" + C.space + C.punct + "]";
var MC_D3 = "(?:" + MC_SD + "|[-_])";
var MC_D12 = "(?:" + MC_SD + "|-)";
var M_D = "(?![-_.<>])(?:(?:" + MC_D3 + "*\\.)*" + MC_D12 + "*\\.)?" + MC_D12 + "*(?!" + MC_D3 + ")";
var MC_AFTER_D = '[^ \\t\\n\\r]';
var M_URL = autolinkedSchemeReStr;
var M_WWW = autolinkedWwwReStr;
var M_BEFORE = "(?:\\b|_)(?=" + M_URL + ")|(?:^|[" + C.space + "*_(]|~+)(?=" + M_WWW + ")";
return new RegExp("(" + M_BEFORE + ")(((" + M_URL + ")|(" + M_WWW + "))" + M_D + MC_AFTER_D + "*)");
}();
var EXT_EMAIL_AUTOLINK_RE = /[-+.\w]+@(?:[-\w]+\.)+[-\w]*[^\W_](?![-@\w])/;
function processExtWebAutolink(mctx) {
var _mctx$match = mctx.match,
m = _mctx$match[0],
before = _mctx$match[1],
linkMatch = _mctx$match[2],
linkStart = _mctx$match[3],
scheme = _mctx$match[4],
www = _mctx$match[5];
var outBefore = before ? "\\" + before : '';
if (!shouldProcess(this)) {
mctx.jump(before.length + linkStart.length);
return "" + outBefore + linkStart;
}
var trail = '';
var linkEnd = linkMatch.search(/[<>]/);
var link = linkMatch;
if (linkEnd >= 0) {
trail = link.substring(linkEnd);
link = link.substring(0, linkEnd);
}
var forceDelimiting = false;
if (trail.length >= 6) {
forceDelimiting = EXT_EMAIL_AUTOLINK_RE.test(trail) || EXT_WEB_AUTOLINK_RE.test(trail);
}
linkEnd = link.search(/[?!.,:*_~'";)]+$/i);
if (linkEnd >= 0) {
var popen = 0;
var pclose = 0;
for (var i = 0; i < link.length; i++) {
switch (link.charAt(i)) {
case '(':
popen++;
break;
case ')':
pclose++;
if (i >= linkEnd && pclose <= popen) {
linkEnd = i + 1;
}
break;
}
}
trail = link.substring(linkEnd) + trail;
link = link.substring(0, linkEnd);
}
var ctx = {
mctx: mctx,
scheme: scheme,
www: www,
linkStart: linkStart,
atEnd: mctx.match.index + m.length >= mctx.match.input.length,
forceDelimiting: forceDelimiting
};
var renderer = new ExtWebAutolinkRenderer(link, trail, ctx, this.escape.opts);
return "" + outBefore + renderer.render();
}
var GFM_EMAIL_UNDERSCORES_RE = /([a-z\d]_+)(?=[a-z\d])|_/gi;
function processExtEmailAutolink(mctx) {
var _mctx$match2 = mctx.match,
emailMatch = _mctx$match2[0];
if (!shouldProcess(this)) {
var emailShred = emailMatch.match(/^.*?@/)[0];
mctx.jump(emailShred.length);
return this.escape.escape(emailShred, this.gfmContext, this.metadata);
}
return emailMatch.replace(GFM_EMAIL_UNDERSCORES_RE, function (m, keep) {
return keep ? m : "\\" + m;
});
}
function extAutolinkReplace() {
if (!mergeOpts(this.opts, 'extAutolink', defaultOpts$1)) {
return;
}
this.replaces.push([EXT_WEB_AUTOLINK_RE, wrapPostprocessor(processExtWebAutolink, escapePipesIfInTable), true]);
this.replaces.push([EXT_EMAIL_AUTOLINK_RE, processExtEmailAutolink, true]);
}
var INLINE_RE = new RegExp(['[*_[\\]`<>]', '\\\\(?=[-!"#$%&\'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~]|$)', entityAmpersandReStr].join('|'));
var HARD_LINE_BREAK_RE = /([ ]{2})$/;
function inlineReplace() {
this.replaces.push([INLINE_RE, '\\$&']);
this.replaces.push([HARD_LINE_BREAK_RE, '$1<!-- spaces -->']);
}
var LINK_DESTINATION_SPECIALS_RE = /[()<>]/;
function renderEmptyLinkDestination(output) {
return output.length > 0 ? output : '<>';
}
function linkDestinationReplace() {
this.replaces.push([LINK_DESTINATION_SPECIALS_RE, '\\$&']);
this.postprocessors.unshift(renderEmptyLinkDestination);
}
function processLink(_ref) {
var m = _ref[0];
return encodeURIComponent(m);
}
function linkReplace() {
this.replaces.push([linkForbiddenRe, processLink]);
}
var DOUBLE_Q = '"';
var SINGLE_Q = '\'';
var PAREN = '()';
var defaultOpts$2 = Object.freeze({
delimiters: [DOUBLE_Q, SINGLE_Q, PAREN],
alwaysEscapeDelimiters: []
});
var LINK_TITLE_DELIMS_RE = /['"()]/g;
var charDelims = {
'"': DOUBLE_Q,
'\'': SINGLE_Q,
'(': PAREN,
')': PAREN
};
var bestDelimiter = function bestDelimiter(str, opts) {
if (!Array.isArray(opts.delimiters)) {
return opts.delimiters;
}
if (opts.delimiters.length === 1) {
return opts.delimiters[0];
}
var m = str.match(LINK_TITLE_DELIMS_RE);
if (!m) {
return opts.delimiters[0];
}
var e = {};
e[DOUBLE_Q] = 0;
e[SINGLE_Q] = 0;
e[PAREN] = 0;
m.forEach(function (c) {
e[charDelims[c]] += 1;
});
opts.alwaysEscapeDelimiters.forEach(function (d) {
e[DOUBLE_Q] += d === DOUBLE_Q ? 0 : e[d];
e[SINGLE_Q] += d === SINGLE_Q ? 0 : e[d];
e[PAREN] += d === PAREN ? 0 : e[d];
});
return opts.delimiters.reduce(function (best, d) {
return e[d] < e[best] ? d : best;
});
};
function scanDelimiters$1(input) {
var x = this.metadata;
var opts = this.escape.opts.linkTitle;
x.delimiter = bestDelimiter(input, opts);
if (x.delimiter === PAREN) {
x.startDelimiter = '(';
x.endDelimiter = ')';
} else {
x.startDelimiter = x.delimiter;
x.endDelimiter = x.delimiter;
}
var escaped = {};
escaped[x.delimiter] = true;
opts.alwaysEscapeDelimiters.forEach(function (d) {
escaped[d] = true;
});
this.linkTitleEscapedDelimiters = escaped;
return input;
}
function processLinkTitleDelim(_ref) {
var _ref$match = _ref.match,
c = _ref$match[0];
if (this.linkTitleEscapedDelimiters[charDelims[c]]) {
return "\\" + c;
}
return c;
}
function linkTitleReplace() {
if (!mergeOpts(this.opts, 'linkTitle', defaultOpts$2, true)) {
return;
}
this.preprocessors.push(scanDelimiters$1);
this.replaces.push([LINK_TITLE_DELIMS_RE, processLinkTitleDelim, true]);
}
var defaultOpts$3 = Object.freeze({
optimizeForDoubleTilde: false
});
var STRIKETHROUGH_RE = /~+/;
function processStrikethrough(_ref) {
var match = _ref.match;
return escapeTildes(match[0], match.index, match.input, null, this.escape.opts);
}
function strikethroughReplace() {
if (!mergeOpts(this.opts, 'strikethrough', defaultOpts$3)) {
return;
}
this.replaces.push([STRIKETHROUGH_RE, processStrikethrough, true]);
}
var defaultOpts$4 = true;
var TABLE_DELIMITER_ROW_RE = function () {
var SP = '[ \\t]*';
var CELL = SP + ":?-+:?" + SP;
var P = '[|]';
var L_OR_BOTH = SP + "(?:" + P + CELL + ")+" + P + "?";
var R_OR_NONE = CELL + "(?=" + P + ")(?:" + P + CELL + ")*" + P + "?";
return new RegExp("^(?:" + L_OR_BOTH + "|" + R_OR_NONE + ")" + SP + "$");
}();
function processTableDelimiterRow(_ref) {
var _ref$match = _ref.match,
delimiterRow = _ref$match[0];
return delimiterRow.replace(/\|/g, '\\|');
}
function tableDelimiterRowReplace() {
if (!mergeOpts(this.opts, 'table', defaultOpts$4)) {
return;
}
this.replaces.push([TABLE_DELIMITER_ROW_RE, processTableDelimiterRow, true]);
}
var PIPE_RE = /\|/;
function tablePipeReplace() {
if (!this.opts.table) {
return;
}
this.replaces.push([PIPE_RE, escapePipesIfInTable]);
}
var gfmSetupDefault = function gfmSetupDefault(s) {
return [[codeSpanReplace, s.name === CodeSpanSyntax.name], [extAutolinkReplace, s.inlinesInterpreted && !s.isLink], [strikethroughReplace, s.inlinesInterpreted], [tableDelimiterRowReplace, s.blocksInterpreted], [blockReplace, s.blocksInterpreted], [tablePipeReplace, true], [linkDestinationReplace, s.name === LinkDestinationSyntax.name], [linkTitleReplace, s.name === LinkTitleSyntax.name], [linkReplace, s.isLink], [entityEntityReplace, s.isLink], [entityBackslashReplace, s.inlinesInterpreted], [emphasisNonDelimitersReplace, s.inlinesInterpreted], [inlineReplace, s.inlinesInterpreted]];
};
function applyProcessors(input, processors) {
var _this = this;
return processors.reduce(function (str, proc) {
return proc.call(_this, str);
}, input);
}
var GfmEscape = function () {
function GfmEscape(opts, syntax, setup) {
var _this = this;
if (syntax === void 0) {
syntax = Syntax.text;
}
if (setup === void 0) {
setup = GfmEscape.defaultSetup;
}
this.syntax = syntax;
this.opts = opts ? _extends({}, opts) : {};
this.replaces = [];
this.preprocessors = [];
this.postprocessors = [];
setup(syntax).forEach(function (_ref) {
var replace = _ref[0],
enabled = _ref[1];
if (enabled) {
replace.call(_this);
}
});
this.replacer = new UnionReplacer(this.replaces, 'gm');
}
var _proto = GfmEscape.prototype;
_proto.escape = function escape(input, gfmContext, metadata) {
if (gfmContext === void 0) {
gfmContext = {};
}
if (metadata === void 0) {
metadata = {};
}
var escapeCtx = {
escape: this,
gfmContext: gfmContext,
metadata: metadata
};
var str = applyProcessors.call(escapeCtx, input, this.preprocessors);
str = this.replacer.replace(str, escapeCtx);
return applyProcessors.call(escapeCtx, str, this.postprocessors);
};
return GfmEscape;
}();
GfmEscape.Syntax = Syntax;
GfmEscape.defaultSetup = gfmSetupDefault;
module.exports = GfmEscape;