ruby.min.js
1 /*! `ruby` grammar compiled for Highlight.js 11.10.0 */ 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)})();