UNPKG

reprism

Version:

Modular Syntax highlighting for the web

78 lines (73 loc) 2.18 kB
export default { language: 'velocity', init: Prism => { (function (Prism) { Prism.languages.velocity = Prism.languages.extend('markup', {}) const velocity = { variable: { pattern: /(^|[^\\](?:\\\\)*)\$!?(?:[a-z][\w-]*(?:\([^)]*\))?(?:\.[a-z][\w-]*(?:\([^)]*\))?|\[[^\]]+])*|{[^}]+})/i, lookbehind: true, inside: {}, // See below }, string: { pattern: /"[^"]*"|'[^']*'/, greedy: true, }, number: /\b\d+\b/, boolean: /\b(?:true|false)\b/, operator: /[=!<>]=?|[+*/%-]|&&|\|\||\.\.|\b(?:eq|g[et]|l[et]|n(?:e|ot))\b/, punctuation: /[(){}[\]:,.]/, } velocity.variable.inside = { string: velocity.string, function: { pattern: /([^\w-])[a-z][\w-]*(?=\()/, lookbehind: true, }, number: velocity.number, boolean: velocity.boolean, punctuation: velocity.punctuation, } Prism.languages.insertBefore('velocity', 'comment', { unparsed: { pattern: /(^|[^\\])#\[\[[\s\S]*?]]#/, lookbehind: true, greedy: true, inside: { punctuation: /^#\[\[|]]#$/, }, }, 'velocity-comment': [ { pattern: /(^|[^\\])#\*[\s\S]*?\*#/, lookbehind: true, greedy: true, alias: 'comment', }, { pattern: /(^|[^\\])##.*/, lookbehind: true, greedy: true, alias: 'comment', }, ], directive: { pattern: /(^|[^\\](?:\\\\)*)#@?(?:[a-z][\w-]*|{[a-z][\w-]*})(?:\s*\((?:[^()]|\([^()]*\))*\))?/i, lookbehind: true, inside: { keyword: { pattern: /^#@?(?:[a-z][\w-]*|{[a-z][\w-]*})|\bin\b/, inside: { punctuation: /[{}]/, }, }, rest: velocity, }, }, variable: velocity.variable, }) Prism.languages.velocity.tag.inside['attr-value'].inside.rest = Prism.languages.velocity }(Prism)) }, }