UNPKG

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