Skip to content

Commit

Permalink
Refactor some Prism grammars
Browse files Browse the repository at this point in the history
  • Loading branch information
FIameCaster committed Apr 18, 2024
1 parent cdf4aec commit 508a163
Show file tree
Hide file tree
Showing 11 changed files with 41 additions and 39 deletions.
4 changes: 2 additions & 2 deletions package/src/prism/languages/bbcode.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ languages.shortcode = languages.bbcode = {
pattern: /\[\/?[^\s=\]]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s"'\]=]+))?(?:\s+[^\s=\]]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s"'\]=]+))*\s*\]/,
inside: {
'punctuation': /^\[\/?|\]$/,
'tag': /^[^\s=\]]+/,
'attr-value': {
pattern: /(=\s*)(?:"[^"]*"|'[^']*'|[^\s"'\]=]+)/,
pattern: /(=\s*)(?:"[^"]*"|'[^']*'|\S+)/,
lookbehind: true,
inside: {
'punctuation': /^["']|["']$/,
}
},
'attr-equals': /=/,
'tag': /^\S+/,
'attr-name': /\S+/
}
}
Expand Down
2 changes: 1 addition & 1 deletion package/src/prism/languages/css-extras.js
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ insertBefore(css, 'function', {
},
'color': [
{
pattern: /(^|[^\w-])(?:aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|(?:dark)?(?:blue|cyan|goldenrod|gr[ae]y|green|khaki|magenta|olivegreen|orange|orchid|red|salmon|seagreen|slateblue|slategr[ae]y|turquoise|violet)|deeppink|deepskyblue|dimgr[ae]y|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|greenyellow|honeydew|hotpink|indianred|indigo|ivory|lavender|lavenderblush|lawngreen|lemonchiffon|light(?:blue|coral|cyan|goldenrodyellow|gr[ae]y|green|pink|salmon|seagreen|skyblue|slategr[ae]y|steelblue|yellow)|lime|limegreen|linen|maroon|medium(?:aquamarine|blue|orchid|purple|seagreen|slateblue|springgreen|turquoise|violetred)|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orangered|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|rosybrown|royalblue|saddlebrown|sandybrown|seashell|sienna|silver|skyblue|snow|springgreen|steelblue|tan|teal|thistle|tomato|transparent|wheat|white|whitesmoke|yellow|yellowgreen)(?![\w-])/i,
pattern: /(^|[^\w-])(?:(?:alice|cadet|cornflower|deepsky|dodger|midnight|powder|royal|sky|steel)blue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blueviolet|brown|burlywood|chartreuse|chocolate|coral|cornsilk|crimson|(?:dark)?(?:blue|cyan|goldenrod|gr[ae]y|green|khaki|magenta|olivegreen|orange|orchid|red|salmon|seagreen|slateblue|slategr[ae]y|turquoise|violet)|deeppink|dimgr[ae]y|firebrick|floralwhite|(?:forest|lawn|lime|pale|spring)green|fuchsia|gainsboro|ghostwhite|gold|greenyellow|honeydew|hotpink|indianred|indigo|ivory|lavender|lavenderblush|lemonchiffon|light(?:blue|coral|cyan|goldenrodyellow|gr[ae]y|green|pink|salmon|seagreen|skyblue|slategr[ae]y|steelblue|yellow)|lime|linen|maroon|medium(?:aquamarine|blue|orchid|purple|seagreen|slateblue|springgreen|turquoise|violetred)|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orangered|palegoldenrod|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|purple|rebeccapurple|rosybrown|saddlebrown|sandybrown|seashell|sienna|silver|snow|tan|teal|thistle|tomato|transparent|wheat|white|whitesmoke|yellow|yellowgreen)(?![\w-])/i,
lookbehind: true
},
{
Expand Down
2 changes: 1 addition & 1 deletion package/src/prism/languages/dataweave.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ languages.dataweave = {
},
'comment': clikeComment(),
'regex': {
pattern: /\/(?:[^\\/\n]|\\[^\n])+\//g,
pattern: /\/(?:[^\\\n/]|\\[^\n])+\//g,
greedy: true
},
'keyword': /\b(?:and|as|at|case|do|else|fun|if|input|is|match|not|ns|null|or|output|type|unless|update|using|var)\b/,
Expand Down
2 changes: 1 addition & 1 deletion package/src/prism/languages/hcl.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ languages.hcl = {
pattern: /(?:data|resource)\s+(?:"(?:\\[\s\S]|[^\\"])*")(?=\s+"[\w-]+"\s+\{)/i,
inside: {
'type': {
pattern: /(resource|data|\s+)(?:"(?:\\[\s\S]|[^\\"])*")/i,
pattern: /(resource|data|\s)(?:"(?:\\[\s\S]|[^\\"])*")/i,
lookbehind: true,
alias: 'variable'
}
Expand Down
6 changes: 3 additions & 3 deletions package/src/prism/languages/javascript.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ languages.js = languages.javascript = Object.assign(js, {
/(function(?:\s+(?!\d)(?:(?!\s)[$\w\xa0-\uffff])+)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,
/(^|[^$\w\xa0-\uffff]|\s)(?!\d)(?:(?!\s)[$\w\xa0-\uffff])+(?=\s*=>)/,
/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,
/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|[gls]et|if|implements|import|in|instanceof|interface|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xa0-\uffff]))(?:(?!\d)(?:(?!\s)[$\w\xa0-\uffff])+\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/
/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|continue|default|do|else|finally|for|if|return|switch|throw|try|while|yield|class|const|debugger|delete|enum|extends|function|[gs]et|export|from|import|implements|in|instanceof|interface|let|new|null|of|package|private|protected|public|static|super|this|typeof|undefined|var|void|with)(?![$\w\xa0-\uffff]))(?:(?!\d)(?:(?!\s)[$\w\xa0-\uffff])+\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/
].map(pattern => ({
pattern,
lookbehind: true,
Expand All @@ -98,7 +98,7 @@ languages.js = languages.javascript = Object.assign(js, {
lookbehind: true
},
{
pattern: /(^|[^.]|\.{3}\s*)\b(?:await|break|case|catch|continue|do|default|else|finally|for|if|return|switch|throw|try|while|yield)\b/,
pattern: /(^|[^.]|\.{3}\s*)\b(?:await|break|case|catch|continue|default|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,
alias: 'control-flow',
lookbehind: true
},
Expand All @@ -120,7 +120,7 @@ languages.js = languages.javascript = Object.assign(js, {
lookbehind: true
},
'literal-property': {
pattern: /((?:^|[,{])[ \t]*)(?!\d)(?:(?!\s)[$\w\xa0-\uffff])+(?=\s*:)/m,
pattern: /([\n,{][ \t]*)(?!\d)(?:(?!\s)[$\w\xa0-\uffff])+(?=\s*:)/,
lookbehind: true,
alias: 'property'
},
Expand Down
13 changes: 4 additions & 9 deletions package/src/prism/languages/json5.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,18 @@
import { languages } from '../core.js';
import { extend } from '../utils/language.js';
import { clikeString } from '../utils/patterns.js';
import './json.js';

var string = /(["'])(?:\\[\s\S]|(?!\1)[^\\\n])*\1/g;
var string = clikeString();

languages.json5 = extend('json', {
'property': [
{
pattern: RegExp(string.source + '(?=\\s*:)', 'g'),
greedy: true
},
RegExp(string.pattern.source + '(?=\\s*:)'),
{
pattern: /(?!\d)(?:(?!\s)[$\w\xa0-\uffff])+(?=\s*:)/,
alias: 'unquoted'
}
],
'string': {
pattern: string,
greedy: true
},
'string': string,
'number': /[+-]?\b(?:NaN|Infinity|0x[a-fA-F\d]+)\b|[+-]?(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[eE][+-]?\d+\b)?/
});
4 changes: 2 additions & 2 deletions package/src/prism/languages/markdown.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ var createInline = pattern => re(`((?:^|[^\\\\])(?:\\\\\\\\)*)(?:${pattern})`, i
var tableCell = /(?:\\.|``(?:[^\n`]|`(?!`))+``|`[^\n`]+`|[^\\\n|`])+/;
var tableRow = replace(/\|?<0>(?:\|<0>)+\|?(?:\n|(?![\s\S]))/.source, [tableCell.source]);
var tableLine = /\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?\n/.source;
var markdown = languages.markdown = languages.md = clone(languages.html);
var markdown = languages.md = languages.markdown = clone(languages.html);

insertBefore(markdown, 'prolog', {
'front-matter-block': {
Expand Down Expand Up @@ -122,7 +122,7 @@ insertBefore(markdown, 'prolog', {
pattern: /\S.*\n(?:==+|--+)(?=[ \t]*$)/m,
alias: 'important',
inside: {
punctuation: /==+$|--+$/
punctuation: /=+$|-+$/
}
},
{
Expand Down
18 changes: 6 additions & 12 deletions package/src/prism/languages/vbnet.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,17 @@ import { extend } from '../utils/language.js';
import './basic.js';

languages.vbnet = extend('basic', {
'comment': [
{
pattern: /(?:!|rem\b).+/i,
inside: {
'keyword': /^rem/i
}
},
{
pattern: /'.*/g,
greedy: true
'comment': {
pattern: /(?:!|'|rem\b).*/i,
inside: {
'keyword': /^rem/i
}
],
},
'string': {
pattern: /(^|[^"])"(?:""|[^"])*"(?!")/g,
lookbehind: true,
greedy: true
},
'keyword': /(?:\b(?:addhandler|addressof|alias|and|andalso|as|beep|bload|boolean|bsave|byref|byval|call absolute|call|case|catch|cbool|c?byte|cc?har|c?date|cdbl|cdec|chain|chdir|cu?int|class|clear|close|cls|cobj|com|common|const|continue|c?sbyte|c?u?short|c?sng|cstr|c?type|cu?lng|data|decimal|declare|def(?: fn| seg|dbl|int|lng|sng|str)|default|delegate|dim|directcast|do|double|else|elseif|enum|environ|erase|error|event|exit|false|true|field|files|finally|for each|for|friend|function|[gls]et|gettype|getxmlnamespace|global|gosub|goto|handles|i[fns]|implements|imports|inherits|input|interface|ioctl|isnot|key|kill|lib|like|line input|locate|lock|loop|[lr]set|me|mkdir|mod|module|mustinherit|mustoverride|mybase|myclass|name|namespace|narrowing|new|next|not|nothing|notinheritable|notoverridable|object|off?|on(?: com| error| key| timer)?|open|operator|option base|option|optional|orelse|out|overloads|overridable|overrides|paramarray|partial|poke|private|property|protected|public|put|raiseevent|read|readonly|redim|rem|removehandler|restore|resume|return|rmdir|run|select case|select|shadows|shared|shell|single|sleep|static|step|stop|string|structure|sub|swap|synclock|system|[tw]hen|throw|timer|to|troff|tron|try|trycast|typeof|u?integer|u?long|unlock|until|using|view print|wait|w?end|while|widening|with|withevents|write|writeonly|x?or)|\B(?:#const|#else|#elseif|#end|#if))(?:\$|\b)/i,
'keyword': /(?:\b(?:addhandler|addressof|alias|and|andalso|as|beep|bload|boolean|bsave|byref|byval|call absolute|call|case|catch|cbool|c?byte|cc?har|c?date|cdbl|cdec|chain|chdir|cu?int|class|clear|close|cls|cobj|com|common|const|continue|c?sbyte|c?u?short|c?sng|cstr|c?type|cu?lng|data|decimal|declare|def(?: fn| seg|dbl|int|lng|sng|str)|default|delegate|dim|directcast|do|double|else|elseif|enum|environ|erase|error|event|exit|false|true|field|files|finally|for each|for|friend|function|[gls]et|gettype|getxmlnamespace|global|gosub|goto|handles|i[fns]|implements|imports|inherits|input|interface|ioctl|isnot|key|kill|lib|like|line input|locate|lock|loop|[lr]set|me|mkdir|mod|module|mustinherit|mustoverride|mybase|myclass|name|namespace|narrowing|new|next|not|nothing|notinheritable|notoverridable|object|off?|on (?:com|error|key|timer)|on|open|operator|option base|option|optional|orelse|out|overloads|overridable|overrides|paramarray|partial|poke|private|property|protected|public|put|raiseevent|read|readonly|redim|removehandler|restore|resume|return|rmdir|run|select case|select|shadows|shared|shell|single|sleep|static|step|stop|string|structure|sub|swap|synclock|system|[tw]hen|throw|timer|to|troff|tron|try|trycast|typeof|u?integer|u?long|unlock|until|using|view print|wait|w?end|while|widening|with|withevents|write|writeonly|x?or)|\B#(?:const|else|elseif|end|if))(?:\$|\b)/i,
'punctuation': /[(){},:;]/
});
15 changes: 13 additions & 2 deletions package/src/prism/tests/languages/arff/keyword_feature.test
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@attribute
@attribute class {Iris-setosa,Iris-versicolor,Iris-virginica}
@data
@end
@relation
Expand All @@ -7,11 +7,22 @@

[
["keyword", "@attribute"],
" class ",
["punctuation", "{"],
"Iris-setosa",
["punctuation", ","],
"Iris-versicolor",
["punctuation", ","],
"Iris-virginica",
["punctuation", "}"],

["keyword", "@data"],

["keyword", "@end"],

["keyword", "@relation"]
]

----------------------------------------------------

Checks for all keywords.
Checks for all keywords.
12 changes: 8 additions & 4 deletions package/src/prism/tests/languages/vbnet/comment_feature.test
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,15 @@ REM foobar

[
["comment", ["!foobar"]],
["comment", [["keyword", "REM"], " foobar"]],
["comment", "'"],
["comment", "'foobar"]
["comment", [
["keyword", "REM"],
" foobar"
]],

["comment", ["'"]],
["comment", ["'foobar"]]
]

----------------------------------------------------

Checks for comments
Checks for comments
2 changes: 0 additions & 2 deletions package/src/prism/tests/languages/vbnet/keyword_feature.test
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,6 @@ RAISEEVENT
READ
READONLY
REDIM
REM
REMOVEHANDLER
RESTORE
RESUME
Expand Down Expand Up @@ -375,7 +374,6 @@ XOR
["keyword", "READ"],
["keyword", "READONLY"],
["keyword", "REDIM"],
["keyword", "REM"],
["keyword", "REMOVEHANDLER"],
["keyword", "RESTORE"],
["keyword", "RESUME"],
Expand Down

0 comments on commit 508a163

Please sign in to comment.