123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- (function (Prism) {
- Prism.languages.velocity = Prism.languages.extend('markup', {});
- var 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(?:false|true)\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));
|