ruby.min.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /*! `ruby` grammar compiled for Highlight.js 11.3.1 */
  2. (()=>{var e=(()=>{"use strict";return e=>{
  3. const n=e.regex,a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={
  4. 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__",
  5. built_in:"proc lambda",literal:"true false nil"},s={className:"doctag",
  6. begin:"@[A-Za-z]+"},b={begin:"#<",end:">"},r=[e.COMMENT("#","$",{contains:[s]
  7. }),e.COMMENT("^=begin","^=end",{contains:[s],relevance:10
  8. }),e.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/,
  9. keywords:i},t={className:"string",contains:[e.BACKSLASH_ESCAPE,c],variants:[{
  10. begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,
  11. end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{
  12. begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,
  13. end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{
  14. begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{
  15. begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{
  16. begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{
  17. begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{
  18. begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),
  19. contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,
  20. contains:[e.BACKSLASH_ESCAPE,c]})]}]},d="[0-9](_?[0-9])*",g={className:"number",
  21. relevance:0,variants:[{
  22. begin:`\\b([1-9](_?[0-9])*|0)(\\.(${d}))?([eE][+-]?(${d})|r)?i?\\b`},{
  23. begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"
  24. },{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{
  25. begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{
  26. begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)",
  27. endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module",
  28. end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{
  29. begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{
  30. begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE,relevance:0}]}].concat(r)},{
  31. className:"function",begin:n.concat(/def\s+/,n.lookahead(a+"\\s*(\\(|;|$)")),
  32. relevance:0,keywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:a
  33. }),l].concat(r)},{begin:e.IDENT_RE+"::"},{className:"symbol",
  34. begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",
  35. begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},g,{className:"variable",
  36. begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{
  37. className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{
  38. begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{
  39. className:"regexp",contains:[e.BACKSLASH_ESCAPE,c],illegal:/\n/,variants:[{
  40. begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",
  41. end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]
  42. }].concat(b,r),relevance:0}].concat(b,r);c.contains=o,l.contains=o;const _=[{
  43. begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta",
  44. begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])",
  45. starts:{end:"$",contains:o}}];return r.unshift(b),{name:"Ruby",
  46. aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/,
  47. contains:[e.SHEBANG({binary:"ruby"})].concat(_).concat(r).concat(o)}}})()
  48. ;hljs.registerLanguage("ruby",e)})();