Blame view

bower_components/prism/components/prism-less.js 1.41 KB
73bcce88   luigser   COMPONENTS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  /* FIXME :
   :extend() is not handled specifically : its highlighting is buggy.
   Mixin usage must be inside a ruleset to be highlighted.
   At-rules (e.g. import) containing interpolations are buggy.
   Detached rulesets are highlighted as at-rules.
   A comment before a mixin usage prevents the latter to be properly highlighted.
   */
  
  Prism.languages.less = Prism.languages.extend('css', {
  	'comment': [
  		/\/\*[\w\W]*?\*\//,
  		{
  			pattern: /(^|[^\\])\/\/.*/,
  			lookbehind: true
  		}
  	],
  	'atrule': {
  		pattern: /@[\w-]+?(?:\([^{}]+\)|[^(){};])*?(?=\s*\{)/i,
  		inside: {
  			'punctuation': /[:()]/
  		}
  	},
  	// selectors and mixins are considered the same
  	'selector': {
  		pattern: /(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\([^{}]*\)|[^{};@])*?(?=\s*\{)/,
  		inside: {
  			// mixin parameters
  			'variable': /@+[\w-]+/
  		}
  	},
  
  	'property': /(\b|\B)(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i,
  	'punctuation': /[{}();:,]/,
  	'operator': /[+\-*\/]/
  });
  
  // Invert function and punctuation positions
  Prism.languages.insertBefore('less', 'punctuation', {
  	'function': Prism.languages.less.function
  });
  
  Prism.languages.insertBefore('less', 'property', {
  	'variable': [
  		// Variable declaration (the colon must be consumed!)
  		{
  			pattern: /@[\w-]+\s*:/,
  			inside: {
  				"punctuation": /:/
  			}
  		},
  
  		// Variable usage
  		/@@?[\w-]+/
  	],
  	'mixin-usage': {
  		pattern: /([{;]\s*)[.#](?!\d)[\w-]+.*?(?=[(;])/,
  		lookbehind: true,
  		alias: 'function'
  	}
  });