Skip to content

Commit f62ca78

Browse files
Regex: Changed how languages embed regexes (#2532)
1 parent bf169e5 commit f62ca78

File tree

12 files changed

+138
-58
lines changed

12 files changed

+138
-58
lines changed

components.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components.json

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
"title": "JavaScript",
7474
"require": "clike",
7575
"modify": "markup",
76+
"optional": "regex",
7677
"alias": "js",
7778
"option": "default"
7879
},
@@ -210,7 +211,7 @@
210211
"oscript": "OneScript"
211212
},
212213
"owner": "Diversus23"
213-
},
214+
},
214215
"c": {
215216
"title": "C",
216217
"require": "clike",
@@ -969,14 +970,6 @@
969970
},
970971
"regex": {
971972
"title": "Regex",
972-
"modify": [
973-
"actionscript",
974-
"coffeescript",
975-
"flow",
976-
"javascript",
977-
"typescript",
978-
"vala"
979-
],
980973
"owner": "RunDevelopment"
981974
},
982975
"renpy": {
@@ -1181,6 +1174,7 @@
11811174
"vala": {
11821175
"title": "Vala",
11831176
"require": "clike",
1177+
"optional": "regex",
11841178
"owner": "TemplarVolk"
11851179
},
11861180
"vbnet": {

components/prism-javascript.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,17 @@ Prism.languages.insertBefore('javascript', 'keyword', {
2828
'regex': {
2929
pattern: /((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,
3030
lookbehind: true,
31-
greedy: true
31+
greedy: true,
32+
inside: {
33+
'regex-source': {
34+
pattern: /^(\/)[\s\S]+(?=\/[a-z]*$)/,
35+
lookbehind: true,
36+
alias: 'language-regex',
37+
inside: Prism.languages.regex
38+
},
39+
'regex-flags': /[a-z]+$/,
40+
'regex-delimiter': /^\/|\/$/
41+
}
3242
},
3343
// This must be declared before keyword because we use "function" inside the look-forward
3444
'function-variable': {

components/prism-javascript.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components/prism-regex.js

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -101,27 +101,4 @@
101101
}
102102
};
103103

104-
105-
[
106-
'actionscript',
107-
'coffescript',
108-
'flow',
109-
'javascript',
110-
'typescript',
111-
'vala'
112-
].forEach(function (lang) {
113-
var grammar = Prism.languages[lang];
114-
if (grammar) {
115-
grammar['regex'].inside = {
116-
'language-regex': {
117-
pattern: /^(\/)[\s\S]+(?=\/[a-z]*$)/i,
118-
lookbehind: true,
119-
inside: Prism.languages.regex
120-
},
121-
'regex-flags': /[a-z]+$/i,
122-
'regex-delimiter': /^\/|\/$/,
123-
};
124-
}
125-
});
126-
127104
}(Prism))

components/prism-regex.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components/prism-vala.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,16 @@ Prism.languages.insertBefore('vala','string', {
6969
Prism.languages.insertBefore('vala', 'keyword', {
7070
'regex': {
7171
pattern: /\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[imsx]{0,4}(?=\s*(?:$|[\r\n,.;})\]]))/,
72-
greedy: true
72+
greedy: true,
73+
inside: {
74+
'regex-source': {
75+
pattern: /^(\/)[\s\S]+(?=\/[a-z]*$)/,
76+
lookbehind: true,
77+
alias: 'language-regex',
78+
inside: Prism.languages.regex
79+
},
80+
'regex-flags': /[a-z]+$/,
81+
'regex-delimiter': /^\/|\/$/
82+
}
7383
}
7484
});

components/prism-vala.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

prism.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1474,7 +1474,17 @@ Prism.languages.insertBefore('javascript', 'keyword', {
14741474
'regex': {
14751475
pattern: /((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,
14761476
lookbehind: true,
1477-
greedy: true
1477+
greedy: true,
1478+
inside: {
1479+
'regex-source': {
1480+
pattern: /^(\/)[\s\S]+(?=\/[a-z]*$)/,
1481+
lookbehind: true,
1482+
alias: 'language-regex',
1483+
inside: Prism.languages.regex
1484+
},
1485+
'regex-flags': /[a-z]+$/,
1486+
'regex-delimiter': /^\/|\/$/
1487+
}
14781488
},
14791489
// This must be declared before keyword because we use "function" inside the look-forward
14801490
'function-variable': {

tests/languages/javascript!+regex/regex_inclusion.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
[
66
["regex", [
77
["regex-delimiter", "/"],
8-
["language-regex", [
8+
["regex-source", [
99
"a",
1010
["quantifier", "+"],
1111
["group", ["(?:"]],

0 commit comments

Comments
 (0)