Skip to content

Commit af67c32

Browse files
Markup addInline improvements (#1798)
This makes some minor improvements to the new `addInline` function of markup.
1 parent b2298b1 commit af67c32

File tree

5 files changed

+45
-49
lines changed

5 files changed

+45
-49
lines changed

components/prism-markup.js

+15-15
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,20 @@ Object.defineProperty(Prism.languages.markup.tag, 'addInlined', {
6363
* addInlined('style', 'css');
6464
*/
6565
value: function addInlined(tagName, lang) {
66-
var inside = {};
66+
var includedCdataInside = {};
67+
includedCdataInside['language-' + lang] = {
68+
pattern: /(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,
69+
lookbehind: true,
70+
inside: Prism.languages[lang]
71+
};
72+
includedCdataInside['cdata'] = /^<!\[CDATA\[|\]\]>$/i;
73+
74+
var inside = {
75+
'included-cdata': {
76+
pattern: /<!\[CDATA\[[\s\S]*?\]\]>/i,
77+
inside: includedCdataInside
78+
}
79+
};
6780
inside['language-' + lang] = {
6881
pattern: /[\s\S]+/,
6982
inside: Prism.languages[lang]
@@ -74,20 +87,7 @@ Object.defineProperty(Prism.languages.markup.tag, 'addInlined', {
7487
pattern: RegExp(/(<__[\s\S]*?>)(?:<!\[CDATA\[[\s\S]*?\]\]>\s*|[\s\S])*?(?=<\/__>)/.source.replace(/__/g, tagName), 'i'),
7588
lookbehind: true,
7689
greedy: true,
77-
inside: {
78-
'included-cdata': {
79-
pattern: /<!\[CDATA\[[\s\S]*?\]\]>/i,
80-
inside: {
81-
'content': {
82-
pattern: /(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,
83-
lookbehind: true,
84-
inside: inside
85-
},
86-
'cdata': /^<!\[CDATA\[|\]\]>$/i
87-
}
88-
},
89-
rest: inside
90-
}
90+
inside: inside
9191
};
9292

9393
Prism.languages.insertBefore('markup', 'cdata', def);

components/prism-markup.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

prism.js

+15-15
Original file line numberDiff line numberDiff line change
@@ -627,7 +627,20 @@ Object.defineProperty(Prism.languages.markup.tag, 'addInlined', {
627627
* addInlined('style', 'css');
628628
*/
629629
value: function addInlined(tagName, lang) {
630-
var inside = {};
630+
var includedCdataInside = {};
631+
includedCdataInside['language-' + lang] = {
632+
pattern: /(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,
633+
lookbehind: true,
634+
inside: Prism.languages[lang]
635+
};
636+
includedCdataInside['cdata'] = /^<!\[CDATA\[|\]\]>$/i;
637+
638+
var inside = {
639+
'included-cdata': {
640+
pattern: /<!\[CDATA\[[\s\S]*?\]\]>/i,
641+
inside: includedCdataInside
642+
}
643+
};
631644
inside['language-' + lang] = {
632645
pattern: /[\s\S]+/,
633646
inside: Prism.languages[lang]
@@ -638,20 +651,7 @@ Object.defineProperty(Prism.languages.markup.tag, 'addInlined', {
638651
pattern: RegExp(/(<__[\s\S]*?>)(?:<!\[CDATA\[[\s\S]*?\]\]>\s*|[\s\S])*?(?=<\/__>)/.source.replace(/__/g, tagName), 'i'),
639652
lookbehind: true,
640653
greedy: true,
641-
inside: {
642-
'included-cdata': {
643-
pattern: /<!\[CDATA\[[\s\S]*?\]\]>/i,
644-
inside: {
645-
'content': {
646-
pattern: /(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,
647-
lookbehind: true,
648-
inside: inside
649-
},
650-
'cdata': /^<!\[CDATA\[|\]\]>$/i
651-
}
652-
},
653-
rest: inside
654-
}
654+
inside: inside
655655
};
656656

657657
Prism.languages.insertBefore('markup', 'cdata', def);

tests/languages/markup!+css/css_inclusion.test

+8-10
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,14 @@ foo {
6767
]],
6868
["included-cdata", [
6969
["cdata", "<![CDATA["],
70-
["content", [
71-
["language-css", [
72-
["selector", "foo"],
73-
["punctuation", "{"],
74-
["property", "bar"],
75-
["punctuation", ":"],
76-
" baz",
77-
["punctuation", ";"],
78-
["punctuation", "}"]
79-
]]
70+
["language-css", [
71+
["selector", "foo"],
72+
["punctuation", "{"],
73+
["property", "bar"],
74+
["punctuation", ":"],
75+
" baz",
76+
["punctuation", ";"],
77+
["punctuation", "}"]
8078
]],
8179
["cdata", "]]>"]
8280
]],

tests/languages/markup!+javascript/javascript_inclusion.test

+6-8
Original file line numberDiff line numberDiff line change
@@ -88,14 +88,12 @@ let foo = '</script>';
8888
]],
8989
["included-cdata", [
9090
["cdata", "<![CDATA["],
91-
["content", [
92-
["language-javascript", [
93-
["keyword", "let"],
94-
" foo ",
95-
["operator", "="],
96-
["string", "'</script>'"],
97-
["punctuation", ";"]
98-
]]
91+
["language-javascript", [
92+
["keyword", "let"],
93+
" foo ",
94+
["operator", "="],
95+
["string", "'</script>'"],
96+
["punctuation", ";"]
9997
]],
10098
["cdata", "]]>"]
10199
]],

0 commit comments

Comments
 (0)