mathpix-markdown-it 2.0.18 → 2.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es5/bundle.js +1 -1
- package/es5/index.js +1 -1
- package/lib/markdown/common/consts.d.ts +0 -1
- package/lib/markdown/common/consts.js +2 -3
- package/lib/markdown/common/consts.js.map +1 -1
- package/lib/markdown/common/validate-mathML.d.ts +55 -0
- package/lib/markdown/common/validate-mathML.js +223 -0
- package/lib/markdown/common/validate-mathML.js.map +1 -0
- package/lib/markdown/md-block-rule/mathml-block.d.ts +6 -1
- package/lib/markdown/md-block-rule/mathml-block.js +62 -10
- package/lib/markdown/md-block-rule/mathml-block.js.map +1 -1
- package/lib/markdown/md-inline-rule/mathml-inline.js +6 -1
- package/lib/markdown/md-inline-rule/mathml-inline.js.map +1 -1
- package/lib/mathjax/serialized-ascii/index.js +6 -5
- package/lib/mathjax/serialized-ascii/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,7 +3,6 @@ export declare const attr_value: string;
|
|
|
3
3
|
export declare const attribute: string;
|
|
4
4
|
export declare const openTagMML: RegExp;
|
|
5
5
|
export declare const closeTagMML: RegExp;
|
|
6
|
-
export declare const validMathMLRegex: RegExp;
|
|
7
6
|
export declare const mathMLInlineRegex: RegExp;
|
|
8
7
|
export declare const open_tag_smiles: string;
|
|
9
8
|
export declare const reOpenTagSmiles: RegExp;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.reFootNoteText = exports.reFootNoteMark = exports.reOpenTagFootnotetextNumbered = exports.reOpenTagFootnotetextG = exports.reOpenTagFootnotetext = exports.reOpenTagFootnoteNumbered = exports.reOpenTagFootnoteG = exports.reOpenTagFootnote = exports.reFootNote = exports.closeTagTabular = exports.openTagTabular = exports.reMultiRow = exports.reMultiRowWithVPos = exports.reAddContentsLineG = exports.reAddContentsLine = exports.reSetCounterG = exports.reSetCounter = exports.defQED = exports.reNewCommandQedSymbolG = exports.reNewCommandQedSymbol = exports.defTheoremStyle = exports.reTheoremStyleG = exports.reTheoremStyle = exports.reNewTheoremUnNumbered = exports.reNewTheoremNumbered2 = exports.reNewTheoremNumbered = exports.reNewTheorem = exports.reNewTheoremUnNumberedInit = exports.reNewTheoremInit = exports.reNewTheoremG = exports.openTagProof = exports.openTagDescription = exports.openTag = exports.labelTagG = exports.labelTag = exports.closeTagSpan = exports.reSeparatingSpanG = exports.reSeparatingSpan = exports.reSpanG = exports.reSpan = exports.markerCloseTagSpan = exports.markerBeginTagSpan = exports.reOpenTagSmiles = exports.open_tag_smiles = exports.mathMLInlineRegex = exports.
|
|
4
|
-
exports.INLINE_ELEMENT_TOKENS = exports.CLOSING_STYLE_TOKENS = exports.OPENING_STYLE_TOKENS = exports.renderOptionsDef = exports.codeHighlightDef = exports.mathTokenTypes = exports.terminatedRules = exports.mdSeparatorsDef = exports.csvSeparatorsDef = exports.tsvSeparatorsDef = exports.mathEnvironments = exports.latexEnvironments = exports.HIGHLIGHT_TEXT_COLOR = exports.HIGHLIGHT_COLOR = exports.RE_INCLUDEGRAPHICS_WITH_ALIGNMENT_GLOBAL = exports.RE_ALIGN_CENTERING_GLOBAL = exports.RE_CAPTION_TAG_BEGIN = exports.RE_CAPTION_TAG_GLOBAL = exports.RE_CAPTION_TAG = exports.RE_BEGIN_TABLE_OR_FIGURE_WITH_PLACEMENT = exports.RE_BEGIN_FIGURE_OR_TABLE_ENV = exports.RE_ALIGN_ENV_BLOCK = exports.RE_BEGIN_ALIGN_ENV = exports.RE_CAPTION_SETUP = exports.RE_CAPTION_SETUP_TAG_BEGIN = exports.lineSpaceTag = exports.RE_DIMENSIONAL_UNIT_TAG = exports.RE_CLINE = exports.RE_HDASHLINE = exports.RE_HHLINE = exports.RE_HLINE = exports.RE_TAG_WITH_CLINE = exports.RE_TAG_WITH_HDASHLINE = exports.RE_TAG_WITH_HHLINE = exports.RE_TAG_WITH_HLINE = exports.singleCurlyBracketPattern = exports.doubleCurlyBracketUuidPattern = exports.singleAngleBracketPattern = exports.doubleAngleBracketUuidPattern = exports.uuidPattern = exports.svgInlineRegex = exports.svgRegex = exports.reNumber = exports.reDiagbox =
|
|
3
|
+
exports.reDiagboxG = exports.reFootNoteText = exports.reFootNoteMark = exports.reOpenTagFootnotetextNumbered = exports.reOpenTagFootnotetextG = exports.reOpenTagFootnotetext = exports.reOpenTagFootnoteNumbered = exports.reOpenTagFootnoteG = exports.reOpenTagFootnote = exports.reFootNote = exports.closeTagTabular = exports.openTagTabular = exports.reMultiRow = exports.reMultiRowWithVPos = exports.reAddContentsLineG = exports.reAddContentsLine = exports.reSetCounterG = exports.reSetCounter = exports.defQED = exports.reNewCommandQedSymbolG = exports.reNewCommandQedSymbol = exports.defTheoremStyle = exports.reTheoremStyleG = exports.reTheoremStyle = exports.reNewTheoremUnNumbered = exports.reNewTheoremNumbered2 = exports.reNewTheoremNumbered = exports.reNewTheorem = exports.reNewTheoremUnNumberedInit = exports.reNewTheoremInit = exports.reNewTheoremG = exports.openTagProof = exports.openTagDescription = exports.openTag = exports.labelTagG = exports.labelTag = exports.closeTagSpan = exports.reSeparatingSpanG = exports.reSeparatingSpan = exports.reSpanG = exports.reSpan = exports.markerCloseTagSpan = exports.markerBeginTagSpan = exports.reOpenTagSmiles = exports.open_tag_smiles = exports.mathMLInlineRegex = exports.closeTagMML = exports.openTagMML = exports.attribute = exports.attr_value = void 0;
|
|
4
|
+
exports.INLINE_ELEMENT_TOKENS = exports.CLOSING_STYLE_TOKENS = exports.OPENING_STYLE_TOKENS = exports.renderOptionsDef = exports.codeHighlightDef = exports.mathTokenTypes = exports.terminatedRules = exports.mdSeparatorsDef = exports.csvSeparatorsDef = exports.tsvSeparatorsDef = exports.mathEnvironments = exports.latexEnvironments = exports.HIGHLIGHT_TEXT_COLOR = exports.HIGHLIGHT_COLOR = exports.RE_INCLUDEGRAPHICS_WITH_ALIGNMENT_GLOBAL = exports.RE_ALIGN_CENTERING_GLOBAL = exports.RE_CAPTION_TAG_BEGIN = exports.RE_CAPTION_TAG_GLOBAL = exports.RE_CAPTION_TAG = exports.RE_BEGIN_TABLE_OR_FIGURE_WITH_PLACEMENT = exports.RE_BEGIN_FIGURE_OR_TABLE_ENV = exports.RE_ALIGN_ENV_BLOCK = exports.RE_BEGIN_ALIGN_ENV = exports.RE_CAPTION_SETUP = exports.RE_CAPTION_SETUP_TAG_BEGIN = exports.lineSpaceTag = exports.RE_DIMENSIONAL_UNIT_TAG = exports.RE_CLINE = exports.RE_HDASHLINE = exports.RE_HHLINE = exports.RE_HLINE = exports.RE_TAG_WITH_CLINE = exports.RE_TAG_WITH_HDASHLINE = exports.RE_TAG_WITH_HHLINE = exports.RE_TAG_WITH_HLINE = exports.singleCurlyBracketPattern = exports.doubleCurlyBracketUuidPattern = exports.singleAngleBracketPattern = exports.doubleAngleBracketUuidPattern = exports.uuidPattern = exports.svgInlineRegex = exports.svgRegex = exports.reNumber = exports.reDiagbox = void 0;
|
|
5
5
|
var attr_name = '[a-zA-Z_:][a-zA-Z0-9:._-]*';
|
|
6
6
|
var unquoted = '[^"\'=<>`\\x00-\\x20]+';
|
|
7
7
|
var single_quoted = "'[^']*'";
|
|
@@ -12,7 +12,6 @@ var open_tag_mml = '^<(math)' + exports.attribute + '*\\s*\\/?>';
|
|
|
12
12
|
var close_tag_mml = '^<\\/math*\\s*>';
|
|
13
13
|
exports.openTagMML = new RegExp('(?:' + open_tag_mml + ')');
|
|
14
14
|
exports.closeTagMML = new RegExp('(?:' + close_tag_mml + ')');
|
|
15
|
-
exports.validMathMLRegex = /<math\b[^>]*>(\s*<(m.*?\b[^>]*>[\s\S]*?<\/m.*?>)\s*)+<\/math>/i;
|
|
16
15
|
exports.mathMLInlineRegex = /^<(math\b[^>]*)>[\s\S]*<\/math>/;
|
|
17
16
|
exports.open_tag_smiles = '^<(smiles)' + exports.attribute + '*\\s*\\/?>';
|
|
18
17
|
exports.reOpenTagSmiles = new RegExp('(?:' + exports.open_tag_smiles + ')');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../src/markdown/common/consts.ts"],"names":[],"mappings":";;;;AAEA,IAAM,SAAS,GAAG,4BAA4B,CAAC;AAC/C,IAAM,QAAQ,GAAG,wBAAwB,CAAC;AAC1C,IAAM,aAAa,GAAG,SAAS,CAAC;AAChC,IAAM,aAAa,GAAG,SAAS,CAAC;AAEnB,QAAA,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,GAAG,GAAG,aAAa,GAAG,GAAG,GAAG,aAAa,GAAG,GAAG,CAAC;AAChF,QAAA,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,kBAAU,GAAG,KAAK,CAAC;AAErF,IAAM,YAAY,GAAG,UAAU,GAAG,iBAAS,GAAG,YAAY,CAAC;AAC3D,IAAM,aAAa,GAAG,iBAAiB,CAAC;AAC3B,QAAA,UAAU,GAAG,IAAI,MAAM,CAAC,KAAK,GAAG,YAAY,GAAG,GAAG,CAAC,CAAC;AACpD,QAAA,WAAW,GAAG,IAAI,MAAM,CAAC,KAAK,GAAG,aAAa,GAAG,GAAG,CAAC,CAAC;AACtD,QAAA,
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../src/markdown/common/consts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export type ValidationOk = {
|
|
2
|
+
ok: true;
|
|
3
|
+
};
|
|
4
|
+
export type ValidationErr = {
|
|
5
|
+
ok: false;
|
|
6
|
+
reason: Reason;
|
|
7
|
+
extra?: string;
|
|
8
|
+
};
|
|
9
|
+
export type ValidationResult = ValidationOk | ValidationErr;
|
|
10
|
+
declare const VALIDATION_REASON: {
|
|
11
|
+
readonly EMPTY: "empty";
|
|
12
|
+
readonly TOO_LARGE: "too_large";
|
|
13
|
+
readonly DOCTYPE: "doctype";
|
|
14
|
+
readonly SCRIPT: "script";
|
|
15
|
+
readonly JS_URI: "js_uri";
|
|
16
|
+
readonly EVENT_ATTR: "event_attr";
|
|
17
|
+
readonly NO_MATH: "no_math";
|
|
18
|
+
readonly UNCLOSED_MATH: "unclosed_math";
|
|
19
|
+
readonly BAD_XMLNS: "bad_xmlns";
|
|
20
|
+
readonly BAD_TAG: "bad_tag";
|
|
21
|
+
readonly UNKNOWN_TAG: "unknown_tag";
|
|
22
|
+
readonly MISMATCH: "mismatch";
|
|
23
|
+
readonly TOO_MANY_NODES: "too_many_nodes";
|
|
24
|
+
readonly TOO_DEEP: "too_deep";
|
|
25
|
+
readonly ROOT_NOT_MATH: "root_not_math";
|
|
26
|
+
readonly TEXT_OUTSIDE_TEXT_CONTAINER: "text_outside_text_container";
|
|
27
|
+
readonly UNCLOSED_COMMENT: "unclosed_comment";
|
|
28
|
+
readonly UNCLOSED_CDATA: "unclosed_cdata";
|
|
29
|
+
readonly UNCLOSED_PI: "unclosed_pi";
|
|
30
|
+
readonly UNCLOSED_DECL: "unclosed_decl";
|
|
31
|
+
readonly UNCLOSED_QUOTE: "unclosed_quote";
|
|
32
|
+
readonly UNCLOSED_TAG: "unclosed_tag";
|
|
33
|
+
readonly UNCLOSED_TAGS: "unclosed_tags";
|
|
34
|
+
};
|
|
35
|
+
type Reason = typeof VALIDATION_REASON[keyof typeof VALIDATION_REASON];
|
|
36
|
+
declare const DEFAULT_VALIDATION_LIMITS: {
|
|
37
|
+
readonly maxBytes: 1000000;
|
|
38
|
+
readonly maxDepth: 80;
|
|
39
|
+
readonly maxNodes: 50000;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Shallow & fast MathML pre-validation for MathJax (SVG).
|
|
43
|
+
*
|
|
44
|
+
* - Extracts the first `<math>…</math>` fragment.
|
|
45
|
+
* - Blocks obvious hazards (doctype, script, javascript: URLs, event handlers).
|
|
46
|
+
* - Ensures balanced tags with a tiny stack (not a full XML parser).
|
|
47
|
+
* - Allows visible text only inside `mi/mn/mo/mtext/ms`.
|
|
48
|
+
* - Ignores content inside `<annotation>` / `<annotation-xml>`.
|
|
49
|
+
*
|
|
50
|
+
* Not a full XML/DTD validator. Intended to be extremely fast and safe before
|
|
51
|
+
* passing MathML to MathJax. O(N) over the `<math>` fragment, no allocations
|
|
52
|
+
* beyond a small stack.
|
|
53
|
+
*/
|
|
54
|
+
export declare const validateMathMLShallow: (source: string, limits?: Partial<typeof DEFAULT_VALIDATION_LIMITS>) => ValidationResult;
|
|
55
|
+
export {};
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateMathMLShallow = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var VALIDATION_REASON = {
|
|
6
|
+
EMPTY: 'empty',
|
|
7
|
+
TOO_LARGE: 'too_large',
|
|
8
|
+
DOCTYPE: 'doctype',
|
|
9
|
+
SCRIPT: 'script',
|
|
10
|
+
JS_URI: 'js_uri',
|
|
11
|
+
EVENT_ATTR: 'event_attr',
|
|
12
|
+
NO_MATH: 'no_math',
|
|
13
|
+
UNCLOSED_MATH: 'unclosed_math',
|
|
14
|
+
BAD_XMLNS: 'bad_xmlns',
|
|
15
|
+
BAD_TAG: 'bad_tag',
|
|
16
|
+
UNKNOWN_TAG: 'unknown_tag',
|
|
17
|
+
MISMATCH: 'mismatch',
|
|
18
|
+
TOO_MANY_NODES: 'too_many_nodes',
|
|
19
|
+
TOO_DEEP: 'too_deep',
|
|
20
|
+
ROOT_NOT_MATH: 'root_not_math',
|
|
21
|
+
TEXT_OUTSIDE_TEXT_CONTAINER: 'text_outside_text_container',
|
|
22
|
+
UNCLOSED_COMMENT: 'unclosed_comment',
|
|
23
|
+
UNCLOSED_CDATA: 'unclosed_cdata',
|
|
24
|
+
UNCLOSED_PI: 'unclosed_pi',
|
|
25
|
+
UNCLOSED_DECL: 'unclosed_decl',
|
|
26
|
+
UNCLOSED_QUOTE: 'unclosed_quote',
|
|
27
|
+
UNCLOSED_TAG: 'unclosed_tag',
|
|
28
|
+
UNCLOSED_TAGS: 'unclosed_tags'
|
|
29
|
+
};
|
|
30
|
+
var DEFAULT_VALIDATION_LIMITS = {
|
|
31
|
+
maxBytes: 1000000,
|
|
32
|
+
maxDepth: 80,
|
|
33
|
+
maxNodes: 50000
|
|
34
|
+
};
|
|
35
|
+
var MATHML_XMLNS = 'http://www.w3.org/1998/Math/MathML';
|
|
36
|
+
// Allowed MathML tags that MathJax definitely understands (presentation + semantics)
|
|
37
|
+
var MATHML_ALLOWED_TAGS = new Set([
|
|
38
|
+
'math', 'mrow', 'mi', 'mn', 'mo', 'ms', 'mtext', 'mspace', 'mfrac', 'msqrt', 'mroot',
|
|
39
|
+
'msub', 'msup', 'msubsup', 'munder', 'mover', 'munderover', 'mmultiscripts',
|
|
40
|
+
'mprescripts', 'none', 'mtable', 'mtr', 'mlabeledtr', 'mtd', 'mstyle', 'merror',
|
|
41
|
+
'mpadded', 'mphantom', 'menclose', 'mfenced', 'semantics', 'annotation', 'annotation-xml'
|
|
42
|
+
]);
|
|
43
|
+
// Tags that allow a visible text node inside
|
|
44
|
+
var MATHML_TEXT_CONTAINERS = new Set(['mi', 'mn', 'mo', 'mtext', 'ms']);
|
|
45
|
+
var MATHML_ANNOTATION_TAGS = new Set(['annotation', 'annotation-xml']);
|
|
46
|
+
var HAZARD_DOCTYPE_RE = /<\!DOCTYPE/i;
|
|
47
|
+
var HAZARD_SCRIPT_RE = /<script\b/i;
|
|
48
|
+
var HAZARD_JS_URI_RE = /javascript:/i;
|
|
49
|
+
var HAZARD_EVENT_ATTR_RE = /\son[a-z]+\s*=/i;
|
|
50
|
+
var OPEN_MATH_TAG_RE = /<math\b[^>]*>/i;
|
|
51
|
+
var XMLNS_ATTR_RE = /\bxmlns\s*=\s*"([^"]*)"/i;
|
|
52
|
+
// Single "wide" tokenizer: comments / CDATA / tags / text
|
|
53
|
+
var MATHML_TOKEN_RE = /<!--[\s\S]*?-->|<!\[CDATA\[[\s\S]*?\]\]>|<\/?[A-Za-z][\w:.-]*\b[^>]*>|[^<]+/g;
|
|
54
|
+
var MATH_OPEN = '<math';
|
|
55
|
+
var END_MATH = '</math>';
|
|
56
|
+
var hasUnclosedAll = function (hay, open, close) {
|
|
57
|
+
var from = 0;
|
|
58
|
+
for (;;) {
|
|
59
|
+
var i = hay.indexOf(open, from);
|
|
60
|
+
if (i < 0)
|
|
61
|
+
return false;
|
|
62
|
+
var j = hay.indexOf(close, i + open.length);
|
|
63
|
+
if (j < 0)
|
|
64
|
+
return true;
|
|
65
|
+
from = j + close.length;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Shallow & fast MathML pre-validation for MathJax (SVG).
|
|
70
|
+
*
|
|
71
|
+
* - Extracts the first `<math>…</math>` fragment.
|
|
72
|
+
* - Blocks obvious hazards (doctype, script, javascript: URLs, event handlers).
|
|
73
|
+
* - Ensures balanced tags with a tiny stack (not a full XML parser).
|
|
74
|
+
* - Allows visible text only inside `mi/mn/mo/mtext/ms`.
|
|
75
|
+
* - Ignores content inside `<annotation>` / `<annotation-xml>`.
|
|
76
|
+
*
|
|
77
|
+
* Not a full XML/DTD validator. Intended to be extremely fast and safe before
|
|
78
|
+
* passing MathML to MathJax. O(N) over the `<math>` fragment, no allocations
|
|
79
|
+
* beyond a small stack.
|
|
80
|
+
*/
|
|
81
|
+
var validateMathMLShallow = function (source, limits) {
|
|
82
|
+
var _a, _b, _c;
|
|
83
|
+
if (limits === void 0) { limits = {}; }
|
|
84
|
+
var _d = tslib_1.__assign(tslib_1.__assign({}, DEFAULT_VALIDATION_LIMITS), limits), maxBytes = _d.maxBytes, maxDepth = _d.maxDepth, maxNodes = _d.maxNodes;
|
|
85
|
+
if (typeof source !== 'string' || !source) {
|
|
86
|
+
return { ok: false, reason: VALIDATION_REASON.EMPTY };
|
|
87
|
+
}
|
|
88
|
+
if (source.length > maxBytes) {
|
|
89
|
+
return { ok: false, reason: VALIDATION_REASON.TOO_LARGE };
|
|
90
|
+
}
|
|
91
|
+
// Let's take the first <math>…</math>
|
|
92
|
+
var startIndex = source.indexOf(MATH_OPEN);
|
|
93
|
+
if (startIndex < 0) {
|
|
94
|
+
return { ok: false, reason: VALIDATION_REASON.NO_MATH };
|
|
95
|
+
}
|
|
96
|
+
var endIndex = source.indexOf(END_MATH, startIndex);
|
|
97
|
+
if (endIndex < 0) {
|
|
98
|
+
return { ok: false, reason: VALIDATION_REASON.UNCLOSED_MATH };
|
|
99
|
+
}
|
|
100
|
+
var mathFragment = source.slice(startIndex, endIndex + END_MATH.length);
|
|
101
|
+
// preflight on "stuck" sections
|
|
102
|
+
if (mathFragment.includes('<!--') && hasUnclosedAll(mathFragment, '<!--', '-->')) {
|
|
103
|
+
return { ok: false, reason: VALIDATION_REASON.UNCLOSED_COMMENT };
|
|
104
|
+
}
|
|
105
|
+
if (mathFragment.includes('<![CDATA[') && hasUnclosedAll(mathFragment, '<![CDATA[', ']]>')) {
|
|
106
|
+
return { ok: false, reason: VALIDATION_REASON.UNCLOSED_CDATA };
|
|
107
|
+
}
|
|
108
|
+
if (mathFragment.includes('<?') && hasUnclosedAll(mathFragment, '<?', '?>')) {
|
|
109
|
+
return { ok: false, reason: VALIDATION_REASON.UNCLOSED_PI };
|
|
110
|
+
}
|
|
111
|
+
// simple declaration <!FOO …>
|
|
112
|
+
if (/\<![A-Z]/.test(mathFragment)) {
|
|
113
|
+
var i = mathFragment.search(/\<![A-Z]/);
|
|
114
|
+
if (i >= 0 && mathFragment.indexOf('>', i + 2) < 0)
|
|
115
|
+
return { ok: false, reason: VALIDATION_REASON.UNCLOSED_DECL };
|
|
116
|
+
}
|
|
117
|
+
if (HAZARD_DOCTYPE_RE.test(mathFragment))
|
|
118
|
+
return { ok: false, reason: VALIDATION_REASON.DOCTYPE };
|
|
119
|
+
if (HAZARD_SCRIPT_RE.test(mathFragment))
|
|
120
|
+
return { ok: false, reason: VALIDATION_REASON.SCRIPT };
|
|
121
|
+
if (HAZARD_JS_URI_RE.test(mathFragment))
|
|
122
|
+
return { ok: false, reason: VALIDATION_REASON.JS_URI };
|
|
123
|
+
if (HAZARD_EVENT_ATTR_RE.test(mathFragment))
|
|
124
|
+
return { ok: false, reason: VALIDATION_REASON.EVENT_ATTR };
|
|
125
|
+
// Check xmlns at root (optionally strict)
|
|
126
|
+
var rootOpenTag = ((_a = OPEN_MATH_TAG_RE.exec(mathFragment)) === null || _a === void 0 ? void 0 : _a[0]) || '';
|
|
127
|
+
var rootXmlns = (_b = XMLNS_ATTR_RE.exec(rootOpenTag)) === null || _b === void 0 ? void 0 : _b[1];
|
|
128
|
+
if (rootXmlns && rootXmlns !== MATHML_XMLNS) {
|
|
129
|
+
return { ok: false, reason: VALIDATION_REASON.BAD_XMLNS, extra: rootXmlns };
|
|
130
|
+
}
|
|
131
|
+
var tagStack = [];
|
|
132
|
+
var nodeCount = 0;
|
|
133
|
+
var seenMathOpen = false;
|
|
134
|
+
var seenMathClose = false;
|
|
135
|
+
var annotationDepth = 0; //inside <annotation> / <annotation-xml> skip the content
|
|
136
|
+
MATHML_TOKEN_RE.lastIndex = 0;
|
|
137
|
+
for (var m = void 0; (m = MATHML_TOKEN_RE.exec(mathFragment));) {
|
|
138
|
+
var token = m[0];
|
|
139
|
+
// Comments
|
|
140
|
+
if (token.startsWith('<!--'))
|
|
141
|
+
continue;
|
|
142
|
+
// CDATA as text (outside annotations - only in text containers)
|
|
143
|
+
if (token.startsWith('<![CDATA[')) {
|
|
144
|
+
if (annotationDepth > 0)
|
|
145
|
+
continue;
|
|
146
|
+
var parent_1 = tagStack[tagStack.length - 1];
|
|
147
|
+
if (!MATHML_TEXT_CONTAINERS.has(parent_1)) {
|
|
148
|
+
return { ok: false, reason: VALIDATION_REASON.TEXT_OUTSIDE_TEXT_CONTAINER };
|
|
149
|
+
}
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
// Tags
|
|
153
|
+
if (token[0] === '<') {
|
|
154
|
+
var isClosingTag = token[1] === '/';
|
|
155
|
+
var isSelfClosing = !isClosingTag && /\/>$/.test(token);
|
|
156
|
+
var rawName = (_c = /^<\/?\s*([A-Za-z][\w:.-]*)/.exec(token)) === null || _c === void 0 ? void 0 : _c[1];
|
|
157
|
+
if (!rawName)
|
|
158
|
+
return { ok: false, reason: VALIDATION_REASON.BAD_TAG };
|
|
159
|
+
// remove namespace prefix (mml:mi -> mi), convert to lower
|
|
160
|
+
var localName = rawName.toLowerCase().replace(/^[a-z][\w-]*:/, '');
|
|
161
|
+
// accounting of annotation zones
|
|
162
|
+
var isAnno = MATHML_ANNOTATION_TAGS.has(localName);
|
|
163
|
+
if (!isClosingTag && isAnno && !isSelfClosing)
|
|
164
|
+
annotationDepth++;
|
|
165
|
+
else if (isClosingTag && isAnno && annotationDepth)
|
|
166
|
+
annotationDepth--;
|
|
167
|
+
// outside annotations - only known MathML tags
|
|
168
|
+
if (annotationDepth === 0 && !MATHML_ALLOWED_TAGS.has(localName)) {
|
|
169
|
+
return { ok: false, reason: VALIDATION_REASON.UNKNOWN_TAG, extra: localName };
|
|
170
|
+
}
|
|
171
|
+
if (isClosingTag) {
|
|
172
|
+
var top_1 = tagStack.pop();
|
|
173
|
+
if (!top_1 || top_1 !== localName) {
|
|
174
|
+
return { ok: false, reason: VALIDATION_REASON.MISMATCH, extra: "".concat(top_1 || 'none', "!=").concat(localName) };
|
|
175
|
+
}
|
|
176
|
+
if (localName === 'math' && tagStack.length === 0)
|
|
177
|
+
seenMathClose = true;
|
|
178
|
+
}
|
|
179
|
+
else if (!isSelfClosing) {
|
|
180
|
+
tagStack.push(localName);
|
|
181
|
+
nodeCount++;
|
|
182
|
+
if (!seenMathOpen) {
|
|
183
|
+
if (localName !== 'math')
|
|
184
|
+
return { ok: false, reason: VALIDATION_REASON.ROOT_NOT_MATH };
|
|
185
|
+
seenMathOpen = true;
|
|
186
|
+
}
|
|
187
|
+
if (nodeCount > maxNodes)
|
|
188
|
+
return { ok: false, reason: VALIDATION_REASON.TOO_MANY_NODES };
|
|
189
|
+
if (tagStack.length > maxDepth)
|
|
190
|
+
return { ok: false, reason: VALIDATION_REASON.TOO_DEEP };
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
// self-closing
|
|
194
|
+
nodeCount++;
|
|
195
|
+
if (nodeCount > maxNodes)
|
|
196
|
+
return { ok: false, reason: VALIDATION_REASON.TOO_MANY_NODES };
|
|
197
|
+
if (!seenMathOpen && localName !== 'math')
|
|
198
|
+
return { ok: false, reason: VALIDATION_REASON.ROOT_NOT_MATH };
|
|
199
|
+
if (!seenMathOpen && localName === 'math') {
|
|
200
|
+
seenMathOpen = true;
|
|
201
|
+
seenMathClose = true;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
// Text between tags: only in text containers (outside annotations)
|
|
207
|
+
if (annotationDepth > 0)
|
|
208
|
+
continue;
|
|
209
|
+
if (!token.trim())
|
|
210
|
+
continue;
|
|
211
|
+
var parent_2 = tagStack[tagStack.length - 1];
|
|
212
|
+
if (!MATHML_TEXT_CONTAINERS.has(parent_2)) {
|
|
213
|
+
return { ok: false, reason: VALIDATION_REASON.TEXT_OUTSIDE_TEXT_CONTAINER };
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
if (!seenMathOpen)
|
|
217
|
+
return { ok: false, reason: VALIDATION_REASON.NO_MATH };
|
|
218
|
+
if (!seenMathClose || tagStack.length)
|
|
219
|
+
return { ok: false, reason: VALIDATION_REASON.UNCLOSED_TAGS };
|
|
220
|
+
return { ok: true };
|
|
221
|
+
};
|
|
222
|
+
exports.validateMathMLShallow = validateMathMLShallow;
|
|
223
|
+
//# sourceMappingURL=validate-mathML.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-mathML.js","sourceRoot":"","sources":["../../../src/markdown/common/validate-mathML.ts"],"names":[],"mappings":";;;;AAIA,IAAM,iBAAiB,GAAG;IACxB,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;IAClB,aAAa,EAAE,eAAe;IAC9B,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,UAAU;IACpB,cAAc,EAAE,gBAAgB;IAChC,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,eAAe;IAC9B,2BAA2B,EAAE,6BAA6B;IAC1D,gBAAgB,EAAE,kBAAkB;IACpC,cAAc,EAAE,gBAAgB;IAChC,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;CACtB,CAAC;AAGX,IAAM,yBAAyB,GAAG;IAChC,QAAQ,EAAE,OAAS;IACnB,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,KAAM;CACR,CAAC;AAEX,IAAM,YAAY,GAAG,oCAA6C,CAAC;AAEnE,qFAAqF;AACrF,IAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,MAAM,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,QAAQ,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO;IAC1E,MAAM,EAAC,MAAM,EAAC,SAAS,EAAC,QAAQ,EAAC,OAAO,EAAC,YAAY,EAAC,eAAe;IACrE,aAAa,EAAC,MAAM,EAAC,QAAQ,EAAC,KAAK,EAAC,YAAY,EAAC,KAAK,EAAC,QAAQ,EAAC,QAAQ;IACxE,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,WAAW,EAAC,YAAY,EAAC,gBAAgB;CACpF,CAAC,CAAC;AAEH,6CAA6C;AAC7C,IAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,IAAI,CAAC,CAAC,CAAC;AACtE,IAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAC,gBAAgB,CAAC,CAAC,CAAC;AACxE,IAAM,iBAAiB,GAAG,aAAa,CAAC;AACxC,IAAM,gBAAgB,GAAI,YAAY,CAAC;AACvC,IAAM,gBAAgB,GAAI,cAAc,CAAC;AACzC,IAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAE/C,IAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAC1C,IAAM,aAAa,GAAM,0BAA0B,CAAC;AAEpD,0DAA0D;AAC1D,IAAM,eAAe,GAAG,8EAA8E,CAAC;AACvG,IAAM,SAAS,GAAI,OAAO,CAAC;AAC3B,IAAM,QAAQ,GAAG,SAAS,CAAC;AAE3B,IAAM,cAAc,GAAG,UAAC,GAAW,EAAE,IAAY,EAAE,KAAa;IAC9D,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,SAAS;QACP,IAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACxB,IAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACvB,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;KACzB;AACH,CAAC,CAAA;AAED;;;;;;;;;;;;GAYG;AACI,IAAM,qBAAqB,GAAG,UACnC,MAAc,EACd,MAAsD;;IAAtD,uBAAA,EAAA,WAAsD;IAEhD,IAAA,2CAAwC,yBAAyB,GAAK,MAAM,CAAE,EAA5E,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAE,QAAQ,cAAgD,CAAC;IAErF,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,EAAE;QACzC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,KAAK,EAAE,CAAC;KACvD;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,QAAQ,EAAC;QAC3B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,SAAS,EAAE,CAAC;KAC3D;IAED,sCAAsC;IACtC,IAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,UAAU,GAAG,CAAC,EAAE;QAClB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,OAAO,EAAE,CAAC;KACzD;IACD,IAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACtD,IAAI,QAAQ,GAAG,CAAC,EAAE;QAChB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,aAAa,EAAE,CAAC;KAC/D;IACD,IAAM,YAAY,GAAW,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAElF,gCAAgC;IAChC,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAChF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;KAClE;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,cAAc,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE;QAC1F,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,cAAc,EAAE,CAAC;KAChE;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;QAC3E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,WAAW,EAAE,CAAC;KAC7D;IAED,8BAA8B;IAC9B,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;QACjC,IAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;YAChD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,aAAa,EAAE,CAAC;KACjE;IAED,IAAI,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC;QAAG,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,OAAO,EAAE,CAAC;IACnG,IAAI,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC;QAAI,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC;IAClG,IAAI,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC;QAAI,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC;IAClG,IAAI,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,UAAU,EAAE,CAAC;IAExG,0CAA0C;IAC1C,IAAM,WAAW,GAAG,CAAA,MAAA,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,0CAAG,CAAC,CAAC,KAAI,EAAE,CAAC;IACnE,IAAM,SAAS,GAAK,MAAA,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,0CAAG,CAAC,CAAC,CAAC;IACzD,IAAI,SAAS,IAAI,SAAS,KAAK,YAAY,EAAE;QAC3C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;KAC7E;IAED,IAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,eAAe,GAAG,CAAC,CAAC,CAAC,yDAAyD;IAElF,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC;IAC9B,KAAK,IAAI,CAAC,SAAwB,EAAE,CAAC,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAI;QAC9E,IAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,WAAW;QACX,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,SAAS;QACvC,gEAAgE;QAChE,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;YACjC,IAAI,eAAe,GAAG,CAAC;gBAAE,SAAS;YAClC,IAAM,QAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAM,CAAC,EAAE;gBACvC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,2BAA2B,EAAE,CAAC;aAC7E;YACD,SAAS;SACV;QAED,OAAO;QACP,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YACpB,IAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YACtC,IAAM,aAAa,GAAG,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1D,IAAM,OAAO,GAAG,MAAA,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,0CAAG,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,OAAO,EAAE,CAAC;YAEtE,2DAA2D;YAC3D,IAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YAErE,iCAAiC;YACjC,IAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACrD,IAAI,CAAC,YAAY,IAAI,MAAM,IAAI,CAAC,aAAa;gBAAE,eAAe,EAAE,CAAC;iBAC5D,IAAI,YAAY,IAAI,MAAM,IAAI,eAAe;gBAAE,eAAe,EAAE,CAAC;YAEtE,+CAA+C;YAC/C,IAAI,eAAe,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBAChE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;aAC/E;YAED,IAAI,YAAY,EAAE;gBAChB,IAAM,KAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;gBAC3B,IAAI,CAAC,KAAG,IAAI,KAAG,KAAK,SAAS,EAAE;oBAC7B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAG,KAAG,IAAI,MAAM,eAAK,SAAS,CAAE,EAAE,CAAC;iBACnG;gBACD,IAAI,SAAS,KAAK,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,aAAa,GAAG,IAAI,CAAC;aACzE;iBAAM,IAAI,CAAC,aAAa,EAAE;gBACzB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACzB,SAAS,EAAE,CAAC;gBACZ,IAAI,CAAC,YAAY,EAAE;oBACjB,IAAI,SAAS,KAAK,MAAM;wBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,aAAa,EAAE,CAAC;oBACxF,YAAY,GAAG,IAAI,CAAC;iBACrB;gBACD,IAAI,SAAS,GAAG,QAAQ;oBAAS,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,cAAc,EAAE,CAAC;gBAChG,IAAI,QAAQ,CAAC,MAAM,GAAG,QAAQ;oBAAG,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC;aAC3F;iBAAM;gBACL,eAAe;gBACf,SAAS,EAAE,CAAC;gBACZ,IAAI,SAAS,GAAG,QAAQ;oBAAS,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,cAAc,EAAE,CAAC;gBAChG,IAAI,CAAC,YAAY,IAAI,SAAS,KAAK,MAAM;oBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,aAAa,EAAE,CAAC;gBACzG,IAAI,CAAC,YAAY,IAAI,SAAS,KAAK,MAAM,EAAE;oBAAE,YAAY,GAAG,IAAI,CAAC;oBAAC,aAAa,GAAG,IAAI,CAAC;iBAAE;aAC1F;YACD,SAAS;SACV;QAED,mEAAmE;QACnE,IAAI,eAAe,GAAG,CAAC;YAAE,SAAS;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAAS,SAAS;QACnC,IAAM,QAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAM,CAAC,EAAE;YACvC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,2BAA2B,EAAE,CAAC;SAC7E;KACF;IAED,IAAI,CAAC,YAAY;QAAsB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,OAAO,EAAE,CAAC;IAC/F,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,aAAa,EAAE,CAAC;IAErG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC,CAAA;AArIY,QAAA,qBAAqB,yBAqIjC"}
|
|
@@ -1,2 +1,7 @@
|
|
|
1
|
-
import { RuleBlock } from "markdown-it";
|
|
1
|
+
import MarkdownIt, { RuleBlock } from "markdown-it";
|
|
2
|
+
/**
|
|
3
|
+
* Returns terminator rules for the MathML block excluding the current rule (selfRule).
|
|
4
|
+
* The base list is cached at the MarkdownIt instance level.
|
|
5
|
+
*/
|
|
6
|
+
export declare function collectTerminatorRules(md: MarkdownIt, selfRule: RuleBlock, altGroup?: string): RuleBlock[];
|
|
2
7
|
export declare const mathMLBlock: RuleBlock;
|
|
@@ -1,16 +1,64 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mathMLBlock = void 0;
|
|
3
|
+
exports.mathMLBlock = exports.collectTerminatorRules = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var consts_1 = require("../common/consts");
|
|
6
|
-
var
|
|
6
|
+
var validate_mathML_1 = require("../common/validate-mathML");
|
|
7
|
+
var ALT_GROUP_FOR_MATHML = 'mathMLBlock';
|
|
8
|
+
var baseTerminatorsCache = new WeakMap();
|
|
9
|
+
/** Builds a basic list of terminator rules for a MathML block: paragraph + alt=ALT_GROUP_FOR_MATHML */
|
|
10
|
+
function collectBaseTerminators(md, altGroup) {
|
|
11
|
+
var e_1, _a;
|
|
12
|
+
var _b, _c;
|
|
13
|
+
if (altGroup === void 0) { altGroup = ALT_GROUP_FOR_MATHML; }
|
|
14
|
+
// 1) Standard "paragraph" terminators
|
|
15
|
+
var paragraphRules = (_b = md.block.ruler.getRules('paragraph')) !== null && _b !== void 0 ? _b : [];
|
|
16
|
+
// 2) Alternative rules from private __rules__ (soft checks)
|
|
17
|
+
var raw = (_c = md.block.ruler.__rules__) !== null && _c !== void 0 ? _c : [];
|
|
18
|
+
var altGroupRules = raw
|
|
19
|
+
.filter(function (r) { return (r === null || r === void 0 ? void 0 : r.enabled) && Array.isArray(r.alt) && r.alt.includes(altGroup); })
|
|
20
|
+
.map(function (r) { return r.fn; });
|
|
21
|
+
// 3) Glue and remove duplicates, maintaining order
|
|
22
|
+
var seen = new Set();
|
|
23
|
+
var merged = [];
|
|
24
|
+
try {
|
|
25
|
+
for (var _d = tslib_1.__values(tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(paragraphRules), false), tslib_1.__read(altGroupRules), false)), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
26
|
+
var fn = _e.value;
|
|
27
|
+
if (!seen.has(fn)) {
|
|
28
|
+
seen.add(fn);
|
|
29
|
+
merged.push(fn);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
34
|
+
finally {
|
|
35
|
+
try {
|
|
36
|
+
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
|
|
37
|
+
}
|
|
38
|
+
finally { if (e_1) throw e_1.error; }
|
|
39
|
+
}
|
|
40
|
+
return merged;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Returns terminator rules for the MathML block excluding the current rule (selfRule).
|
|
44
|
+
* The base list is cached at the MarkdownIt instance level.
|
|
45
|
+
*/
|
|
46
|
+
function collectTerminatorRules(md, selfRule, altGroup) {
|
|
47
|
+
if (altGroup === void 0) { altGroup = ALT_GROUP_FOR_MATHML; }
|
|
48
|
+
// Take from cache or collect the database
|
|
49
|
+
var base = baseTerminatorsCache.get(md);
|
|
50
|
+
if (!base) {
|
|
51
|
+
base = collectBaseTerminators(md, altGroup);
|
|
52
|
+
baseTerminatorsCache.set(md, base);
|
|
53
|
+
}
|
|
54
|
+
// Exclude selfRule on each call (it may differ)
|
|
55
|
+
return base.filter(function (fn) { return fn !== selfRule; });
|
|
56
|
+
}
|
|
57
|
+
exports.collectTerminatorRules = collectTerminatorRules;
|
|
7
58
|
var mathMLBlock = function (state, startLine, endLine, silent) {
|
|
8
59
|
try {
|
|
9
60
|
var pos = state.bMarks[startLine] + state.tShift[startLine];
|
|
10
61
|
var max = state.eMarks[startLine];
|
|
11
|
-
var nextLine_1 = startLine + 1;
|
|
12
|
-
var terminatorRules = tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(state.md.block.ruler.getRules('paragraph')), false), tslib_1.__read(state.md.block.ruler.getRules('mathMLBlock')), false);
|
|
13
|
-
// state.parentType = 'paragraph';
|
|
14
62
|
// Early exit if the first character is not '<'
|
|
15
63
|
if (state.src.charCodeAt(pos) !== 0x3C /* < */)
|
|
16
64
|
return false;
|
|
@@ -18,19 +66,22 @@ var mathMLBlock = function (state, startLine, endLine, silent) {
|
|
|
18
66
|
var lineText = state.src.slice(pos, max);
|
|
19
67
|
if (!consts_1.openTagMML.test(lineText))
|
|
20
68
|
return false;
|
|
69
|
+
if (consts_1.mathMLInlineRegex.test(lineText))
|
|
70
|
+
return false;
|
|
71
|
+
var nextLine_1 = startLine + 1;
|
|
21
72
|
var hasCloseTag = false;
|
|
73
|
+
var terminatorRules = collectTerminatorRules(state.md, exports.mathMLBlock);
|
|
22
74
|
// Iterate through lines until the closing tag or end of file
|
|
23
75
|
while (nextLine_1 < endLine) {
|
|
24
76
|
pos = state.bMarks[nextLine_1] + state.tShift[nextLine_1];
|
|
25
77
|
max = state.eMarks[nextLine_1];
|
|
26
|
-
lineText = state.src.slice(pos, max);
|
|
27
78
|
// Check for terminator rules
|
|
28
79
|
if (terminatorRules.some(function (rule) { return rule(state, nextLine_1, endLine, true); }))
|
|
29
80
|
break;
|
|
81
|
+
lineText = state.src.slice(pos, max);
|
|
30
82
|
// Check for closing tag
|
|
31
83
|
if (consts_1.closeTagMML.test(lineText)) {
|
|
32
|
-
|
|
33
|
-
nextLine_1++;
|
|
84
|
+
nextLine_1++;
|
|
34
85
|
hasCloseTag = true;
|
|
35
86
|
break;
|
|
36
87
|
}
|
|
@@ -41,9 +92,10 @@ var mathMLBlock = function (state, startLine, endLine, silent) {
|
|
|
41
92
|
return false;
|
|
42
93
|
// Get the content between the matched lines
|
|
43
94
|
var content = state.getLines(startLine, nextLine_1, state.blkIndent, false);
|
|
44
|
-
|
|
45
|
-
if (!
|
|
95
|
+
var validationMathML = (0, validate_mathML_1.validateMathMLShallow)(content);
|
|
96
|
+
if (!validationMathML.ok) {
|
|
46
97
|
return false;
|
|
98
|
+
}
|
|
47
99
|
// If in validation mode, return true
|
|
48
100
|
if (silent)
|
|
49
101
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mathml-block.js","sourceRoot":"","sources":["../../../src/markdown/md-block-rule/mathml-block.ts"],"names":[],"mappings":";;;;AACA,
|
|
1
|
+
{"version":3,"file":"mathml-block.js","sourceRoot":"","sources":["../../../src/markdown/md-block-rule/mathml-block.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.inlineMathML = void 0;
|
|
4
4
|
var convert_math_to_html_1 = require("../common/convert-math-to-html");
|
|
5
5
|
var consts_1 = require("../common/consts");
|
|
6
|
+
var validate_mathML_1 = require("../common/validate-mathML");
|
|
6
7
|
var inlineMathML = function (state, silent) {
|
|
7
8
|
var _a;
|
|
8
9
|
try {
|
|
@@ -13,7 +14,11 @@ var inlineMathML = function (state, silent) {
|
|
|
13
14
|
}
|
|
14
15
|
// Attempt to match the MathML inline pattern
|
|
15
16
|
var match = src.slice(pos).match(consts_1.mathMLInlineRegex);
|
|
16
|
-
if (!match
|
|
17
|
+
if (!match) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
var validationMathML = (0, validate_mathML_1.validateMathMLShallow)(match[0]);
|
|
21
|
+
if (!validationMathML.ok) {
|
|
17
22
|
return false;
|
|
18
23
|
}
|
|
19
24
|
// Determine the type of MathML (inline or display)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mathml-inline.js","sourceRoot":"","sources":["../../../src/markdown/md-inline-rule/mathml-inline.ts"],"names":[],"mappings":";;;AACA,uEAAmE;AACnE,
|
|
1
|
+
{"version":3,"file":"mathml-inline.js","sourceRoot":"","sources":["../../../src/markdown/md-inline-rule/mathml-inline.ts"],"names":[],"mappings":";;;AACA,uEAAmE;AACnE,2CAAqD;AACrD,6DAAoF;AAG7E,IAAM,YAAY,GAAe,UAAC,KAAK,EAAE,MAAM;;IACpD,IAAI;QACM,IAAA,GAAG,GAAkB,KAAK,IAAvB,EAAE,GAAG,GAAa,KAAK,IAAlB,EAAE,MAAM,GAAK,KAAK,OAAV,CAAW;QAEnC,8DAA8D;QAC9D,IAAI,GAAG,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE;YAC7D,OAAO,KAAK,CAAC;SACd;QAED,6CAA6C;QAC7C,IAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,0BAAiB,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,KAAK,CAAC;SACd;QACD,IAAI,gBAAgB,GAAqB,IAAA,uCAAqB,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE;YACxB,OAAO,KAAK,CAAC;SACd;QACD,mDAAmD;QACnD,IAAI,IAAI,GAAU,CAAA,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,OAAO,CAAC,MAAK,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC;QAEzF,mDAAmD;QACnD,IAAI,CAAC,MAAM,EAAE;YACX,IAAM,KAAK,GAAU,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7C,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACtD,KAAK,CAAC,SAAS,GAAG;gBAChB,KAAK,EAAE,KAAK,CAAC,GAAG;gBAChB,GAAG,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;aAC3B,CAAC;YACF,kEAAkE;YAClE,IAAA,wCAAiB,EAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;SACnD;QAED,+DAA+D;QAC/D,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7B,OAAO,IAAI,CAAC;KACb;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;QAChD,OAAO,KAAK,CAAC;KACd;AACH,CAAC,CAAA;AAxCY,QAAA,YAAY,gBAwCxB"}
|
|
@@ -14,14 +14,15 @@ var SerializedAsciiVisitor = /** @class */ (function (_super) {
|
|
|
14
14
|
/** Apply inherited attribute to all children */
|
|
15
15
|
_this.setChildInheritedAttribute = function (node, attrName) {
|
|
16
16
|
var e_1, _a;
|
|
17
|
+
var _b;
|
|
17
18
|
try {
|
|
18
|
-
var inherited = node.attributes.getAllInherited();
|
|
19
|
-
if (!inherited.hasOwnProperty(attrName) || !node.childNodes || !node.childNodes.length) {
|
|
19
|
+
var inherited = (node === null || node === void 0 ? void 0 : node.attributes) ? (_b = node === null || node === void 0 ? void 0 : node.attributes) === null || _b === void 0 ? void 0 : _b.getAllInherited() : null;
|
|
20
|
+
if (!inherited || !inherited.hasOwnProperty(attrName) || !node.childNodes || !node.childNodes.length) {
|
|
20
21
|
return;
|
|
21
22
|
}
|
|
22
23
|
try {
|
|
23
|
-
for (var
|
|
24
|
-
var child =
|
|
24
|
+
for (var _c = tslib_1.__values(node.childNodes), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
25
|
+
var child = _d.value;
|
|
25
26
|
if (child.attributes) {
|
|
26
27
|
child.attributes.setInherited(attrName, inherited[attrName]);
|
|
27
28
|
}
|
|
@@ -30,7 +31,7 @@ var SerializedAsciiVisitor = /** @class */ (function (_super) {
|
|
|
30
31
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
31
32
|
finally {
|
|
32
33
|
try {
|
|
33
|
-
if (
|
|
34
|
+
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
|
|
34
35
|
}
|
|
35
36
|
finally { if (e_1) throw e_1.error; }
|
|
36
37
|
}
|