Blame view

bower_components/prism/components/prism-coffeescript.js 1.75 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
  (function(Prism) {
  
  // Ignore comments starting with { to privilege string interpolation highlighting
  var comment = /#(?!\{).+/,
      interpolation = {
      	pattern: /#\{[^}]+\}/,
      	alias: 'variable'
      };
  
  Prism.languages.coffeescript = Prism.languages.extend('javascript', {
  	'comment': comment,
  	'string': [
  
  		// Strings are multiline
  		/'(?:\\?[^\\])*?'/,
  
  		{
  			// Strings are multiline
  			pattern: /"(?:\\?[^\\])*?"/,
  			inside: {
  				'interpolation': interpolation
  			}
  		}
  	],
  	'keyword': /\b(and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,
  	'class-member': {
  		pattern: /@(?!\d)\w+/,
  		alias: 'variable'
  	}
  });
  
  Prism.languages.insertBefore('coffeescript', 'comment', {
  	'multiline-comment': {
  		pattern: /###[\s\S]+?###/,
  		alias: 'comment'
  	},
  
  	// Block regexp can contain comments and interpolation
  	'block-regex': {
  		pattern: /\/{3}[\s\S]*?\/{3}/,
  		alias: 'regex',
  		inside: {
  			'comment': comment,
  			'interpolation': interpolation
  		}
  	}
  });
  
  Prism.languages.insertBefore('coffeescript', 'string', {
  	'inline-javascript': {
  		pattern: /`(?:\\?[\s\S])*?`/,
  		inside: {
  			'delimiter': {
  				pattern: /^`|`$/,
  				alias: 'punctuation'
  			},
  			rest: Prism.languages.javascript
  		}
  	},
  
  	// Block strings
  	'multiline-string': [
  		{
  			pattern: /'''[\s\S]*?'''/,
  			alias: 'string'
  		},
  		{
  			pattern: /"""[\s\S]*?"""/,
  			alias: 'string',
  			inside: {
  				interpolation: interpolation
  			}
  		}
  	]
  
  });
  
  Prism.languages.insertBefore('coffeescript', 'keyword', {
  	// Object property
  	'property': /(?!\d)\w+(?=\s*:(?!:))/
  });
  
  }(Prism));