Blame view

bower_components/prism/components/prism-ruby.js 2.82 KB
73bcce88   luigser   COMPONENTS
1
2
3
4
5
6
  /**
   * Original by Samuel Flores
   *
   * Adds the following new token classes:
   * 		constant, builtin, variable, symbol, regex
   */
eb240478   Luigi Serra   public room cards...
7
8
9
10
11
  (function(Prism) {
  	Prism.languages.ruby = Prism.languages.extend('clike', {
  		'comment': /#(?!\{[^\r\n]*?\}).*/,
  		'keyword': /\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/
  	});
73bcce88   luigser   COMPONENTS
12
  
eb240478   Luigi Serra   public room cards...
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
  	var interpolation = {
  		pattern: /#\{[^}]+\}/,
  		inside: {
  			'delimiter': {
  				pattern: /^#\{|\}$/,
  				alias: 'tag'
  			},
  			rest: Prism.util.clone(Prism.languages.ruby)
  		}
  	};
  
  	Prism.languages.insertBefore('ruby', 'keyword', {
  		'regex': [
  			{
  				pattern: /%r([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1[gim]{0,3}/,
  				inside: {
  					'interpolation': interpolation
  				}
  			},
  			{
  				pattern: /%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,
  				inside: {
  					'interpolation': interpolation
  				}
  			},
  			{
  				// Here we need to specifically allow interpolation
  				pattern: /%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,
  				inside: {
  					'interpolation': interpolation
  				}
  			},
  			{
  				pattern: /%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,
  				inside: {
  					'interpolation': interpolation
  				}
  			},
  			{
  				pattern: /%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,
  				inside: {
  					'interpolation': interpolation
  				}
  			},
  			{
  				pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,
  				lookbehind: true
  			}
  		],
  		'variable': /[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/,
  		'symbol': /:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/
  	});
  
  	Prism.languages.insertBefore('ruby', 'number', {
  		'builtin': /\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Fload|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,
  		'constant': /\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\b)/
  	});
73bcce88   luigser   COMPONENTS
70
  
eb240478   Luigi Serra   public room cards...
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
  	Prism.languages.ruby.string = [
  		{
  			pattern: /%[qQiIwWxs]?([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1/,
  			inside: {
  				'interpolation': interpolation
  			}
  		},
  		{
  			pattern: /%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,
  			inside: {
  				'interpolation': interpolation
  			}
  		},
  		{
  			// Here we need to specifically allow interpolation
  			pattern: /%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,
  			inside: {
  				'interpolation': interpolation
  			}
  		},
  		{
  			pattern: /%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,
  			inside: {
  				'interpolation': interpolation
  			}
  		},
  		{
  			pattern: /%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,
  			inside: {
  				'interpolation': interpolation
  			}
  		},
  		{
  			pattern: /("|')(#\{[^}]+\}|\\(?:\r?\n|\r)|\\?.)*?\1/,
73bcce88   luigser   COMPONENTS
105
  			inside: {
eb240478   Luigi Serra   public room cards...
106
  				'interpolation': interpolation
73bcce88   luigser   COMPONENTS
107
108
  			}
  		}
eb240478   Luigi Serra   public room cards...
109
110
  	];
  }(Prism));