73 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
(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));
 |