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