You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.4 KiB
99 lines
2.4 KiB
(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*))?)* \S+ in \([^)]+\) do/im, |
|
lookbehind: true, |
|
inside: { |
|
'keyword': /\b(?:do|in)\b|^for\b/i, |
|
'string': string, |
|
'parameter': parameter, |
|
'variable': variable, |
|
'number': number, |
|
'punctuation': /[()',]/ |
|
} |
|
}, |
|
{ |
|
// IF command |
|
pattern: /((?:^|[&(])[ \t]*)if(?: \/[a-z?](?:[ :](?:"[^"]*"|[^\s"/]\S*))?)* (?:not )?(?:cmdextversion \d+|defined \w+|errorlevel \d+|exist \S+|(?:"[^"]*"|(?!")(?:(?!==)\S)+)?(?:==| (?:equ|geq|gtr|leq|lss|neq) )(?:"[^"]*"|[^\s"]\S*))/im, |
|
lookbehind: true, |
|
inside: { |
|
'keyword': /\b(?:cmdextversion|defined|errorlevel|exist|not)\b|^if\b/i, |
|
'string': string, |
|
'parameter': parameter, |
|
'variable': variable, |
|
'number': number, |
|
'operator': /\^|==|\b(?:equ|geq|gtr|leq|lss|neq)\b/i |
|
} |
|
}, |
|
{ |
|
// ELSE command |
|
pattern: /((?:^|[&()])[ \t]*)else\b/im, |
|
lookbehind: true, |
|
inside: { |
|
'keyword': /^else\b/i |
|
} |
|
}, |
|
{ |
|
// SET command |
|
pattern: /((?:^|[&(])[ \t]*)set(?: \/[a-z](?:[ :](?:"[^"]*"|[^\s"/]\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]))*/m, |
|
lookbehind: true, |
|
inside: { |
|
'keyword': /^\w+\b/, |
|
'string': string, |
|
'parameter': parameter, |
|
'label': { |
|
pattern: /(^\s*):\S+/m, |
|
lookbehind: true, |
|
alias: 'property' |
|
}, |
|
'variable': variable, |
|
'number': number, |
|
'operator': /\^/ |
|
} |
|
} |
|
], |
|
'operator': /[&@]/, |
|
'punctuation': /[()']/ |
|
}; |
|
}(Prism));
|
|
|