]>
luflow.net public git repositories - flow-web.git/blob - static/highlight/languages/ruby.min.js
1 /*! `ruby` grammar compiled for Highlight.js 11.11.1 */
2 (()=>{var e
=(()=>{"use strict";return e
=>{
3 const n
=e
.regex
,a
="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",s
=n
.either(/\b([A
-Z
]+[a
-z0
-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),i
=n
.concat(s
,/(::\w+)*/),t
={
4 "variable.constant":["__FILE__","__LINE__","__ENCODING__"],
5 "variable.language":["self","super"],
6 keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield","include","extend","prepend","public","private","protected","raise","throw"],
7 built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],
8 literal:["true","false","nil"]},c
={className:"doctag",begin:"@[A-Za-z]+"},r
={
9 begin:"#<",end:">"},b
=[e
.COMMENT("#","$",{contains:[c
]
10 }),e
.COMMENT("^=begin","^=end",{contains:[c
],relevance:10
11 }),e
.COMMENT("^__END__",e
.MATCH_NOTHING_RE
)],l
={className:"subst",begin:/#\{/,
12 end:/\}/,keywords:t
},d
={className:"string",contains:[e
.BACKSLASH_ESCAPE
,l
],
13 variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{
14 begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{
15 begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,
16 end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{
17 begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{
18 begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{
19 begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{
20 begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{
21 begin:n.concat(/<<[-~]?'?/,n
.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),
22 contains:[e
.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,
23 contains:[e
.BACKSLASH_ESCAPE
,l
]})]}]},o
="[0-9](_?[0-9])*",g
={className:"number",
24 relevance:0,variants:[{
25 begin:`\\b([1-9](_?[0-9])*|0)(\\.(${o}))?([eE][+-]?(${o})|r)?i?\\b`},{
26 begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"
27 },{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{
28 begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{
29 begin:"\\b0(_?[0-7])+r?i?\\b"}]},_
={variants:[{match:/\(\)/},{
30 className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,
31 keywords:t
}]},u
=[d
,{variants:[{match:[/class\s+/,i
,/\s+<\s+/,i
]},{
32 match:[/\b(class|module)\s+/,i
]}],scope:{2:"title.class",
33 4:"title.class.inherited"},keywords:t
},{match:[/(include|extend)\s+/,i
],scope:{
34 2:"title.class"},keywords:t
},{relevance:0,match:[i
,/\.new[. (]/],scope:{
35 1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,
36 className:"variable.constant"},{relevance:0,match:s
,scope:"title.class"},{
37 match:[/def/,/\s+/,a
],scope:{1:"keyword",3:"title.function"},contains:[_
]},{
38 begin:e
.IDENT_RE
+"::"},{className:"symbol",
39 begin:e
.UNDERSCORE_IDENT_RE
+"(!|\\?)?:",relevance:0},{className:"symbol",
40 begin:":(?!\\s)",contains:[d
,{begin:a
}],relevance:0},g
,{className:"variable",
41 begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{
42 className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,
43 relevance:0,keywords:t
},{begin:"("+e
.RE_STARTERS_RE
+"|unless)\\s*",
44 keywords:"unless",contains:[{className:"regexp",contains:[e
.BACKSLASH_ESCAPE
,l
],
45 illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{
46 begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",
47 end:"\\][a-z]*"}]}].concat(r
,b
),relevance:0}].concat(r
,b
)
48 ;l
.contains
=u
,_
.contains
=u
;const m
=[{begin:/^\s*=>/,starts:{end:"$",contains:u
}
49 },{className:"meta.prompt",
50 begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])",
51 starts:{end:"$",keywords:t
,contains:u
}}];return b
.unshift(r
),{name:"Ruby",
52 aliases:["rb","gemspec","podspec","thor","irb"],keywords:t
,illegal:/\/\*/,
53 contains:[e
.SHEBANG({binary:"ruby"})].concat(m
).concat(b
).concat(u
)}}})()
54 ;hljs
.registerLanguage("ruby",e
)})();