| (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)); |