Index: lib/src/prism/components/prism-batch.js |
diff --git a/lib/src/prism/components/prism-batch.js b/lib/src/prism/components/prism-batch.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c7ca9ca60d78e0c400e719e2b2c7046c0a6855a0 |
--- /dev/null |
+++ b/lib/src/prism/components/prism-batch.js |
@@ -0,0 +1,99 @@ |
+(function (Prism) { |
+ var variable = /%%?[~:\w]+%?|!\S+!/; |
+ var parameter = { |
+ pattern: /\/[a-z?]+(?=[ :]|$):?|-[a-z]\b|--[a-z-]+\b/im, |
+ alias: 'attr-name', |
+ inside: { |
+ 'punctuation': /:/ |
+ } |
+ }; |
+ var string = /"[^"]*"/; |
+ var number = /(?:\b|-)\d+\b/; |
+ |
+ Prism.languages.batch = { |
+ 'comment': [ |
+ /^::.*/m, |
+ { |
+ pattern: /((?:^|[&(])[ \t]*)rem\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im, |
+ lookbehind: true |
+ } |
+ ], |
+ 'label': { |
+ pattern: /^:.*/m, |
+ alias: 'property' |
+ }, |
+ 'command': [ |
+ { |
+ // FOR command |
+ pattern: /((?:^|[&(])[ \t]*)for(?: ?\/[a-z?](?:[ :](?:"[^"]*"|\S+))?)* \S+ in \([^)]+\) do/im, |
+ lookbehind: true, |
+ inside: { |
+ 'keyword': /^for\b|\b(?:in|do)\b/i, |
+ 'string': string, |
+ 'parameter': parameter, |
+ 'variable': variable, |
+ 'number': number, |
+ 'punctuation': /[()',]/ |
+ } |
+ }, |
+ { |
+ // IF command |
+ pattern: /((?:^|[&(])[ \t]*)if(?: ?\/[a-z?](?:[ :](?:"[^"]*"|\S+))?)* (?:not )?(?:cmdextversion \d+|defined \w+|errorlevel \d+|exist \S+|(?:"[^"]*"|\S+)?(?:==| (?:equ|neq|lss|leq|gtr|geq) )(?:"[^"]*"|\S+))/im, |
+ lookbehind: true, |
+ inside: { |
+ 'keyword': /^if\b|\b(?:not|cmdextversion|defined|errorlevel|exist)\b/i, |
+ 'string': string, |
+ 'parameter': parameter, |
+ 'variable': variable, |
+ 'number': number, |
+ 'operator': /\^|==|\b(?:equ|neq|lss|leq|gtr|geq)\b/i |
+ } |
+ }, |
+ { |
+ // ELSE command |
+ pattern: /((?:^|[&()])[ \t]*)else\b/im, |
+ lookbehind: true, |
+ inside: { |
+ 'keyword': /^else\b/i |
+ } |
+ }, |
+ { |
+ // SET command |
+ pattern: /((?:^|[&(])[ \t]*)set(?: ?\/[a-z](?:[ :](?:"[^"]*"|\S+))?)* (?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im, |
+ lookbehind: true, |
+ inside: { |
+ 'keyword': /^set\b/i, |
+ 'string': string, |
+ 'parameter': parameter, |
+ 'variable': [ |
+ variable, |
+ /\w+(?=(?:[*\/%+\-&^|]|<<|>>)?=)/ |
+ ], |
+ 'number': number, |
+ 'operator': /[*\/%+\-&^|]=?|<<=?|>>=?|[!~_=]/, |
+ 'punctuation': /[()',]/ |
+ } |
+ }, |
+ { |
+ // Other commands |
+ pattern: /((?:^|[&(])[ \t]*@?)\w+\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im, |
+ lookbehind: true, |
+ inside: { |
+ 'keyword': /^\w+\b/i, |
+ 'string': string, |
+ 'parameter': parameter, |
+ 'label': { |
+ pattern: /(^\s*):\S+/m, |
+ lookbehind: true, |
+ alias: 'property' |
+ }, |
+ 'variable': variable, |
+ 'number': number, |
+ 'operator': /\^/ |
+ } |
+ } |
+ ], |
+ 'operator': /[&@]/, |
+ 'punctuation': /[()']/ |
+ }; |
+}(Prism)); |