2021-03-11 00:35:00 +08:00
hljs . registerLanguage ( "ruby" , ( ( ) => { "use strict" ; function e ( ... e ) {
return e . map ( ( e => { return ( n = e ) ? "string" == typeof n ? n : n . source : null ; var n
} ) ) . join ( "" ) } return n => {
const a = "([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)" , i = {
keyword : "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__" ,
built _in : "proc lambda" , literal : "true false nil" } , s = { className : "doctag" ,
begin : "@[A-Za-z]+" } , r = { begin : "#<" , end : ">" } , b = [ n . COMMENT ( "#" , "$" , { contains : [ s ]
} ) , n . COMMENT ( "^=begin" , "^=end" , { contains : [ s ] , relevance : 10
} ) , n . COMMENT ( "^__END__" , "\\n$" ) ] , c = { className : "subst" , begin : /#\{/ , end : /\}/ ,
keywords : i } , t = { className : "string" , contains : [ n . BACKSLASH _ESCAPE , c ] , variants : [ {
begin : /'/ , end : /'/ } , { begin : /"/ , end : /"/ } , { begin : /`/ , end : /`/ } , { begin : /%[qQwWx]?\(/ ,
end : /\)/ } , { begin : /%[qQwWx]?\[/ , end : /\]/ } , { begin : /%[qQwWx]?\{/ , end : /\}/ } , {
begin : /%[qQwWx]?</ , end : />/ } , { begin : /%[qQwWx]?\// , end : /\// } , { begin : /%[qQwWx]?%/ ,
end : /%/ } , { begin : /%[qQwWx]?-/ , end : /-/ } , { begin : /%[qQwWx]?\|/ , end : /\|/ } , {
begin : /\B\?(\\\d{1,3})/ } , { begin : /\B\?(\\x[A-Fa-f0-9]{1,2})/ } , {
begin : /\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/ } , {
begin : /\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/ } , {
begin : /\B\?\\(c|C-)[\x20-\x7e]/ } , { begin : /\B\?\\?\S/ } , {
begin : /<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/ , returnBegin : ! 0 , contains : [ {
begin : /<<[-~]?'?/ } , n . END _SAME _AS _BEGIN ( { begin : /(\w+)/ , end : /(\w+)/ ,
contains : [ n . BACKSLASH _ESCAPE , c ] } ) ] } ] } , g = "[0-9](_?[0-9])*" , d = { className : "number" ,
relevance : 0 , variants : [ {
begin : ` \\ b([1-9](_?[0-9])*|0)( \\ .( ${ g } ))?([eE][+-]?( ${ g } )|r)?i? \\ b ` } , {
begin : "\\b0[dD][0-9](_?[0-9])*r?i?\\b" } , { begin : "\\b0[bB][0-1](_?[0-1])*r?i?\\b"
} , { begin : "\\b0[oO][0-7](_?[0-7])*r?i?\\b" } , {
begin : "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b" } , {
begin : "\\b0(_?[0-7])+r?i?\\b" } ] } , l = { className : "params" , begin : "\\(" , end : "\\)" ,
endsParent : ! 0 , keywords : i } , o = [ t , { className : "class" , beginKeywords : "class module" ,
end : "$|;" , illegal : /=/ , contains : [ n . inherit ( n . TITLE _MODE , {
begin : "[A-Za-z_]\\w*(::\\w+)*(\\?|!)?" } ) , { begin : "<\\s*" , contains : [ {
begin : "(" + n . IDENT _RE + "::)?" + n . IDENT _RE , relevance : 0 } ] } ] . concat ( b ) } , {
className : "function" , begin : e ( /def\s*/ , ( _ = a + "\\s*(\\(|;|$)" , e ( "(?=" , _ , ")" ) ) ) ,
relevance : 0 , keywords : "def" , end : "$|;" , contains : [ n . inherit ( n . TITLE _MODE , { begin : a
} ) , l ] . concat ( b ) } , { begin : n . IDENT _RE + "::" } , { className : "symbol" ,
begin : n . UNDERSCORE _IDENT _RE + "(!|\\?)?:" , relevance : 0 } , { className : "symbol" ,
begin : ":(?!\\s)" , contains : [ t , { begin : a } ] , relevance : 0 } , d , { className : "variable" ,
begin : "(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])" } , {
className : "params" , begin : /\|/ , end : /\|/ , relevance : 0 , keywords : i } , {
begin : "(" + n . RE _STARTERS _RE + "|unless)\\s*" , keywords : "unless" , contains : [ {
className : "regexp" , contains : [ n . BACKSLASH _ESCAPE , c ] , illegal : /\n/ , variants : [ {
begin : "/" , end : "/[a-z]*" } , { begin : /%r\{/ , end : /\}[a-z]*/ } , { begin : "%r\\(" ,
end : "\\)[a-z]*" } , { begin : "%r!" , end : "![a-z]*" } , { begin : "%r\\[" , end : "\\][a-z]*" } ]
} ] . concat ( r , b ) , relevance : 0 } ] . concat ( r , b ) ; var _ ; c . contains = o , l . contains = o
; const E = [ { begin : /^\s*=>/ , starts : { end : "$" , contains : o } } , { className : "meta" ,
begin : "^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])" ,
starts : { end : "$" , contains : o } } ] ; return b . unshift ( r ) , { name : "Ruby" ,
aliases : [ "rb" , "gemspec" , "podspec" , "thor" , "irb" ] , keywords : i , illegal : /\/\*/ ,
contains : [ n . SHEBANG ( { binary : "ruby" } ) ] . concat ( E ) . concat ( b ) . concat ( o ) } } } ) ( ) ) ;