c97aec5aa5f5892b6a51792e82d5127adfab768b97f3adc497a12eafb0eda2d9.json 27 KB

1
  1. {"ast":null,"code":"/*\nLanguage: Ruby\nDescription: Ruby is a dynamic, open source programming language with a focus on simplicity and productivity.\nWebsite: https://www.ruby-lang.org/\nAuthor: Anton Kovalyov <anton@kovalyov.net>\nContributors: Peter Leonov <gojpeg@yandex.ru>, Vasily Polovnyov <vast@whiteants.net>, Loren Segal <lsegal@soen.ca>, Pascal Hurni <phi@ruby-reactive.org>, Cedric Sohrauer <sohrauer@googlemail.com>\nCategory: common, scripting\n*/\n\nfunction ruby(hljs) {\n const regex = hljs.regex;\n const RUBY_METHOD_RE = '([a-zA-Z_]\\\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?)';\n // TODO: move concepts like CAMEL_CASE into `modes.js`\n const CLASS_NAME_RE = regex.either(/\\b([A-Z]+[a-z0-9]+)+/,\n // ends in caps\n /\\b([A-Z]+[a-z0-9]+)+[A-Z]+/);\n const CLASS_NAME_WITH_NAMESPACE_RE = regex.concat(CLASS_NAME_RE, /(::\\w+)*/);\n // very popular ruby built-ins that one might even assume\n // are actual keywords (despite that not being the case)\n const PSEUDO_KWS = [\"include\", \"extend\", \"prepend\", \"public\", \"private\", \"protected\", \"raise\", \"throw\"];\n const RUBY_KEYWORDS = {\n \"variable.constant\": [\"__FILE__\", \"__LINE__\", \"__ENCODING__\"],\n \"variable.language\": [\"self\", \"super\"],\n 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\", ...PSEUDO_KWS],\n built_in: [\"proc\", \"lambda\", \"attr_accessor\", \"attr_reader\", \"attr_writer\", \"define_method\", \"private_constant\", \"module_function\"],\n literal: [\"true\", \"false\", \"nil\"]\n };\n const YARDOCTAG = {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n };\n const IRB_OBJECT = {\n begin: '#<',\n end: '>'\n };\n const COMMENT_MODES = [hljs.COMMENT('#', '$', {\n contains: [YARDOCTAG]\n }), hljs.COMMENT('^=begin', '^=end', {\n contains: [YARDOCTAG],\n relevance: 10\n }), hljs.COMMENT('^__END__', hljs.MATCH_NOTHING_RE)];\n const SUBST = {\n className: 'subst',\n begin: /#\\{/,\n end: /\\}/,\n keywords: RUBY_KEYWORDS\n };\n const STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [{\n begin: /'/,\n end: /'/\n }, {\n begin: /\"/,\n end: /\"/\n }, {\n begin: /`/,\n end: /`/\n }, {\n begin: /%[qQwWx]?\\(/,\n end: /\\)/\n }, {\n begin: /%[qQwWx]?\\[/,\n end: /\\]/\n }, {\n begin: /%[qQwWx]?\\{/,\n end: /\\}/\n }, {\n begin: /%[qQwWx]?</,\n end: />/\n }, {\n begin: /%[qQwWx]?\\//,\n end: /\\//\n }, {\n begin: /%[qQwWx]?%/,\n end: /%/\n }, {\n begin: /%[qQwWx]?-/,\n end: /-/\n }, {\n begin: /%[qQwWx]?\\|/,\n end: /\\|/\n },\n // in the following expressions, \\B in the beginning suppresses recognition of ?-sequences\n // where ? is the last character of a preceding identifier, as in: `func?4`\n {\n begin: /\\B\\?(\\\\\\d{1,3})/\n }, {\n begin: /\\B\\?(\\\\x[A-Fa-f0-9]{1,2})/\n }, {\n begin: /\\B\\?(\\\\u\\{?[A-Fa-f0-9]{1,6}\\}?)/\n }, {\n begin: /\\B\\?(\\\\M-\\\\C-|\\\\M-\\\\c|\\\\c\\\\M-|\\\\M-|\\\\C-\\\\M-)[\\x20-\\x7e]/\n }, {\n begin: /\\B\\?\\\\(c|C-)[\\x20-\\x7e]/\n }, {\n begin: /\\B\\?\\\\?\\S/\n },\n // heredocs\n {\n // this guard makes sure that we have an entire heredoc and not a false\n // positive (auto-detect, etc.)\n begin: regex.concat(/<<[-~]?'?/, regex.lookahead(/(\\w+)(?=\\W)[^\\n]*\\n(?:[^\\n]*\\n)*?\\s*\\1\\b/)),\n contains: [hljs.END_SAME_AS_BEGIN({\n begin: /(\\w+)/,\n end: /(\\w+)/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n })]\n }]\n };\n\n // Ruby syntax is underdocumented, but this grammar seems to be accurate\n // as of version 2.7.2 (confirmed with (irb and `Ripper.sexp(...)`)\n // https://docs.ruby-lang.org/en/2.7.0/doc/syntax/literals_rdoc.html#label-Numbers\n const decimal = '[1-9](_?[0-9])*|0';\n const digits = '[0-9](_?[0-9])*';\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n // decimal integer/float, optionally exponential or rational, optionally imaginary\n {\n begin: `\\\\b(${decimal})(\\\\.(${digits}))?([eE][+-]?(${digits})|r)?i?\\\\b`\n },\n // explicit decimal/binary/octal/hexadecimal integer,\n // optionally rational and/or imaginary\n {\n begin: \"\\\\b0[dD][0-9](_?[0-9])*r?i?\\\\b\"\n }, {\n begin: \"\\\\b0[bB][0-1](_?[0-1])*r?i?\\\\b\"\n }, {\n begin: \"\\\\b0[oO][0-7](_?[0-7])*r?i?\\\\b\"\n }, {\n begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\\\b\"\n },\n // 0-prefixed implicit octal integer, optionally rational and/or imaginary\n {\n begin: \"\\\\b0(_?[0-7])+r?i?\\\\b\"\n }]\n };\n const PARAMS = {\n variants: [{\n match: /\\(\\)/\n }, {\n className: 'params',\n begin: /\\(/,\n end: /(?=\\))/,\n excludeBegin: true,\n endsParent: true,\n keywords: RUBY_KEYWORDS\n }]\n };\n const INCLUDE_EXTEND = {\n match: [/(include|extend)\\s+/, CLASS_NAME_WITH_NAMESPACE_RE],\n scope: {\n 2: \"title.class\"\n },\n keywords: RUBY_KEYWORDS\n };\n const CLASS_DEFINITION = {\n variants: [{\n match: [/class\\s+/, CLASS_NAME_WITH_NAMESPACE_RE, /\\s+<\\s+/, CLASS_NAME_WITH_NAMESPACE_RE]\n }, {\n match: [/\\b(class|module)\\s+/, CLASS_NAME_WITH_NAMESPACE_RE]\n }],\n scope: {\n 2: \"title.class\",\n 4: \"title.class.inherited\"\n },\n keywords: RUBY_KEYWORDS\n };\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n const METHOD_DEFINITION = {\n match: [/def/, /\\s+/, RUBY_METHOD_RE],\n scope: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [PARAMS]\n };\n const OBJECT_CREATION = {\n relevance: 0,\n match: [CLASS_NAME_WITH_NAMESPACE_RE, /\\.new[. (]/],\n scope: {\n 1: \"title.class\"\n }\n };\n\n // CamelCase\n const CLASS_REFERENCE = {\n relevance: 0,\n match: CLASS_NAME_RE,\n scope: \"title.class\"\n };\n const RUBY_DEFAULT_CONTAINS = [STRING, CLASS_DEFINITION, INCLUDE_EXTEND, OBJECT_CREATION, UPPER_CASE_CONSTANT, CLASS_REFERENCE, METHOD_DEFINITION, {\n // swallow namespace qualifiers before symbols\n begin: hljs.IDENT_RE + '::'\n }, {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '(!|\\\\?)?:',\n relevance: 0\n }, {\n className: 'symbol',\n begin: ':(?!\\\\s)',\n contains: [STRING, {\n begin: RUBY_METHOD_RE\n }],\n relevance: 0\n }, NUMBER, {\n // negative-look forward attempts to prevent false matches like:\n // @ident@ or $ident$ that might indicate this is not ruby at all\n className: \"variable\",\n begin: '(\\\\$\\\\W)|((\\\\$|@@?)(\\\\w+))(?=[^@$?])' + `(?![A-Za-z])(?![@$?'])`\n }, {\n className: 'params',\n begin: /\\|/,\n end: /\\|/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0,\n // this could be a lot of things (in other languages) other than params\n keywords: RUBY_KEYWORDS\n }, {\n // regexp container\n begin: '(' + hljs.RE_STARTERS_RE + '|unless)\\\\s*',\n keywords: 'unless',\n contains: [{\n className: 'regexp',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n illegal: /\\n/,\n variants: [{\n begin: '/',\n end: '/[a-z]*'\n }, {\n begin: /%r\\{/,\n end: /\\}[a-z]*/\n }, {\n begin: '%r\\\\(',\n end: '\\\\)[a-z]*'\n }, {\n begin: '%r!',\n end: '![a-z]*'\n }, {\n begin: '%r\\\\[',\n end: '\\\\][a-z]*'\n }]\n }].concat(IRB_OBJECT, COMMENT_MODES),\n relevance: 0\n }].concat(IRB_OBJECT, COMMENT_MODES);\n SUBST.contains = RUBY_DEFAULT_CONTAINS;\n PARAMS.contains = RUBY_DEFAULT_CONTAINS;\n\n // >>\n // ?>\n const SIMPLE_PROMPT = \"[>?]>\";\n // irb(main):001:0>\n const DEFAULT_PROMPT = \"[\\\\w#]+\\\\(\\\\w+\\\\):\\\\d+:\\\\d+[>*]\";\n const RVM_PROMPT = \"(\\\\w+-)?\\\\d+\\\\.\\\\d+\\\\.\\\\d+(p\\\\d+)?[^\\\\d][^>]+>\";\n const IRB_DEFAULT = [{\n begin: /^\\s*=>/,\n starts: {\n end: '$',\n contains: RUBY_DEFAULT_CONTAINS\n }\n }, {\n className: 'meta.prompt',\n begin: '^(' + SIMPLE_PROMPT + \"|\" + DEFAULT_PROMPT + '|' + RVM_PROMPT + ')(?=[ ])',\n starts: {\n end: '$',\n keywords: RUBY_KEYWORDS,\n contains: RUBY_DEFAULT_CONTAINS\n }\n }];\n COMMENT_MODES.unshift(IRB_OBJECT);\n return {\n name: 'Ruby',\n aliases: ['rb', 'gemspec', 'podspec', 'thor', 'irb'],\n keywords: RUBY_KEYWORDS,\n illegal: /\\/\\*/,\n contains: [hljs.SHEBANG({\n binary: \"ruby\"\n })].concat(IRB_DEFAULT).concat(COMMENT_MODES).concat(RUBY_DEFAULT_CONTAINS)\n };\n}\nmodule.exports = ruby;","map":{"version":3,"names":["ruby","hljs","regex","RUBY_METHOD_RE","CLASS_NAME_RE","either","CLASS_NAME_WITH_NAMESPACE_RE","concat","PSEUDO_KWS","RUBY_KEYWORDS","keyword","built_in","literal","YARDOCTAG","className","begin","IRB_OBJECT","end","COMMENT_MODES","COMMENT","contains","relevance","MATCH_NOTHING_RE","SUBST","keywords","STRING","BACKSLASH_ESCAPE","variants","lookahead","END_SAME_AS_BEGIN","decimal","digits","NUMBER","PARAMS","match","excludeBegin","endsParent","INCLUDE_EXTEND","scope","CLASS_DEFINITION","UPPER_CASE_CONSTANT","METHOD_DEFINITION","OBJECT_CREATION","CLASS_REFERENCE","RUBY_DEFAULT_CONTAINS","IDENT_RE","UNDERSCORE_IDENT_RE","excludeEnd","RE_STARTERS_RE","illegal","SIMPLE_PROMPT","DEFAULT_PROMPT","RVM_PROMPT","IRB_DEFAULT","starts","unshift","name","aliases","SHEBANG","binary","module","exports"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/highlight.js/lib/languages/ruby.js"],"sourcesContent":["/*\nLanguage: Ruby\nDescription: Ruby is a dynamic, open source programming language with a focus on simplicity and productivity.\nWebsite: https://www.ruby-lang.org/\nAuthor: Anton Kovalyov <anton@kovalyov.net>\nContributors: Peter Leonov <gojpeg@yandex.ru>, Vasily Polovnyov <vast@whiteants.net>, Loren Segal <lsegal@soen.ca>, Pascal Hurni <phi@ruby-reactive.org>, Cedric Sohrauer <sohrauer@googlemail.com>\nCategory: common, scripting\n*/\n\nfunction ruby(hljs) {\n const regex = hljs.regex;\n const RUBY_METHOD_RE = '([a-zA-Z_]\\\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?)';\n // TODO: move concepts like CAMEL_CASE into `modes.js`\n const CLASS_NAME_RE = regex.either(\n /\\b([A-Z]+[a-z0-9]+)+/,\n // ends in caps\n /\\b([A-Z]+[a-z0-9]+)+[A-Z]+/,\n )\n ;\n const CLASS_NAME_WITH_NAMESPACE_RE = regex.concat(CLASS_NAME_RE, /(::\\w+)*/);\n // very popular ruby built-ins that one might even assume\n // are actual keywords (despite that not being the case)\n const PSEUDO_KWS = [\n \"include\",\n \"extend\",\n \"prepend\",\n \"public\",\n \"private\",\n \"protected\",\n \"raise\",\n \"throw\"\n ];\n const RUBY_KEYWORDS = {\n \"variable.constant\": [\n \"__FILE__\",\n \"__LINE__\",\n \"__ENCODING__\"\n ],\n \"variable.language\": [\n \"self\",\n \"super\",\n ],\n keyword: [\n \"alias\",\n \"and\",\n \"begin\",\n \"BEGIN\",\n \"break\",\n \"case\",\n \"class\",\n \"defined\",\n \"do\",\n \"else\",\n \"elsif\",\n \"end\",\n \"END\",\n \"ensure\",\n \"for\",\n \"if\",\n \"in\",\n \"module\",\n \"next\",\n \"not\",\n \"or\",\n \"redo\",\n \"require\",\n \"rescue\",\n \"retry\",\n \"return\",\n \"then\",\n \"undef\",\n \"unless\",\n \"until\",\n \"when\",\n \"while\",\n \"yield\",\n ...PSEUDO_KWS\n ],\n built_in: [\n \"proc\",\n \"lambda\",\n \"attr_accessor\",\n \"attr_reader\",\n \"attr_writer\",\n \"define_method\",\n \"private_constant\",\n \"module_function\"\n ],\n literal: [\n \"true\",\n \"false\",\n \"nil\"\n ]\n };\n const YARDOCTAG = {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n };\n const IRB_OBJECT = {\n begin: '#<',\n end: '>'\n };\n const COMMENT_MODES = [\n hljs.COMMENT(\n '#',\n '$',\n { contains: [ YARDOCTAG ] }\n ),\n hljs.COMMENT(\n '^=begin',\n '^=end',\n {\n contains: [ YARDOCTAG ],\n relevance: 10\n }\n ),\n hljs.COMMENT('^__END__', hljs.MATCH_NOTHING_RE)\n ];\n const SUBST = {\n className: 'subst',\n begin: /#\\{/,\n end: /\\}/,\n keywords: RUBY_KEYWORDS\n };\n const STRING = {\n className: 'string',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n variants: [\n {\n begin: /'/,\n end: /'/\n },\n {\n begin: /\"/,\n end: /\"/\n },\n {\n begin: /`/,\n end: /`/\n },\n {\n begin: /%[qQwWx]?\\(/,\n end: /\\)/\n },\n {\n begin: /%[qQwWx]?\\[/,\n end: /\\]/\n },\n {\n begin: /%[qQwWx]?\\{/,\n end: /\\}/\n },\n {\n begin: /%[qQwWx]?</,\n end: />/\n },\n {\n begin: /%[qQwWx]?\\//,\n end: /\\//\n },\n {\n begin: /%[qQwWx]?%/,\n end: /%/\n },\n {\n begin: /%[qQwWx]?-/,\n end: /-/\n },\n {\n begin: /%[qQwWx]?\\|/,\n end: /\\|/\n },\n // in the following expressions, \\B in the beginning suppresses recognition of ?-sequences\n // where ? is the last character of a preceding identifier, as in: `func?4`\n { begin: /\\B\\?(\\\\\\d{1,3})/ },\n { begin: /\\B\\?(\\\\x[A-Fa-f0-9]{1,2})/ },\n { begin: /\\B\\?(\\\\u\\{?[A-Fa-f0-9]{1,6}\\}?)/ },\n { begin: /\\B\\?(\\\\M-\\\\C-|\\\\M-\\\\c|\\\\c\\\\M-|\\\\M-|\\\\C-\\\\M-)[\\x20-\\x7e]/ },\n { begin: /\\B\\?\\\\(c|C-)[\\x20-\\x7e]/ },\n { begin: /\\B\\?\\\\?\\S/ },\n // heredocs\n {\n // this guard makes sure that we have an entire heredoc and not a false\n // positive (auto-detect, etc.)\n begin: regex.concat(\n /<<[-~]?'?/,\n regex.lookahead(/(\\w+)(?=\\W)[^\\n]*\\n(?:[^\\n]*\\n)*?\\s*\\1\\b/)\n ),\n contains: [\n hljs.END_SAME_AS_BEGIN({\n begin: /(\\w+)/,\n end: /(\\w+)/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n })\n ]\n }\n ]\n };\n\n // Ruby syntax is underdocumented, but this grammar seems to be accurate\n // as of version 2.7.2 (confirmed with (irb and `Ripper.sexp(...)`)\n // https://docs.ruby-lang.org/en/2.7.0/doc/syntax/literals_rdoc.html#label-Numbers\n const decimal = '[1-9](_?[0-9])*|0';\n const digits = '[0-9](_?[0-9])*';\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n // decimal integer/float, optionally exponential or rational, optionally imaginary\n { begin: `\\\\b(${decimal})(\\\\.(${digits}))?([eE][+-]?(${digits})|r)?i?\\\\b` },\n\n // explicit decimal/binary/octal/hexadecimal integer,\n // optionally rational and/or imaginary\n { begin: \"\\\\b0[dD][0-9](_?[0-9])*r?i?\\\\b\" },\n { begin: \"\\\\b0[bB][0-1](_?[0-1])*r?i?\\\\b\" },\n { begin: \"\\\\b0[oO][0-7](_?[0-7])*r?i?\\\\b\" },\n { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\\\b\" },\n\n // 0-prefixed implicit octal integer, optionally rational and/or imaginary\n { begin: \"\\\\b0(_?[0-7])+r?i?\\\\b\" }\n ]\n };\n\n const PARAMS = {\n variants: [\n {\n match: /\\(\\)/,\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /(?=\\))/,\n excludeBegin: true,\n endsParent: true,\n keywords: RUBY_KEYWORDS,\n }\n ]\n };\n\n const INCLUDE_EXTEND = {\n match: [\n /(include|extend)\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE\n ],\n scope: {\n 2: \"title.class\"\n },\n keywords: RUBY_KEYWORDS\n };\n\n const CLASS_DEFINITION = {\n variants: [\n {\n match: [\n /class\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE,\n /\\s+<\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE\n ]\n },\n {\n match: [\n /\\b(class|module)\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE\n ]\n }\n ],\n scope: {\n 2: \"title.class\",\n 4: \"title.class.inherited\"\n },\n keywords: RUBY_KEYWORDS\n };\n\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n\n const METHOD_DEFINITION = {\n match: [\n /def/, /\\s+/,\n RUBY_METHOD_RE\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n };\n\n const OBJECT_CREATION = {\n relevance: 0,\n match: [\n CLASS_NAME_WITH_NAMESPACE_RE,\n /\\.new[. (]/\n ],\n scope: {\n 1: \"title.class\"\n }\n };\n\n // CamelCase\n const CLASS_REFERENCE = {\n relevance: 0,\n match: CLASS_NAME_RE,\n scope: \"title.class\"\n };\n\n const RUBY_DEFAULT_CONTAINS = [\n STRING,\n CLASS_DEFINITION,\n INCLUDE_EXTEND,\n OBJECT_CREATION,\n UPPER_CASE_CONSTANT,\n CLASS_REFERENCE,\n METHOD_DEFINITION,\n {\n // swallow namespace qualifiers before symbols\n begin: hljs.IDENT_RE + '::' },\n {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '(!|\\\\?)?:',\n relevance: 0\n },\n {\n className: 'symbol',\n begin: ':(?!\\\\s)',\n contains: [\n STRING,\n { begin: RUBY_METHOD_RE }\n ],\n relevance: 0\n },\n NUMBER,\n {\n // negative-look forward attempts to prevent false matches like:\n // @ident@ or $ident$ that might indicate this is not ruby at all\n className: \"variable\",\n begin: '(\\\\$\\\\W)|((\\\\$|@@?)(\\\\w+))(?=[^@$?])' + `(?![A-Za-z])(?![@$?'])`\n },\n {\n className: 'params',\n begin: /\\|/,\n end: /\\|/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0, // this could be a lot of things (in other languages) other than params\n keywords: RUBY_KEYWORDS\n },\n { // regexp container\n begin: '(' + hljs.RE_STARTERS_RE + '|unless)\\\\s*',\n keywords: 'unless',\n contains: [\n {\n className: 'regexp',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n illegal: /\\n/,\n variants: [\n {\n begin: '/',\n end: '/[a-z]*'\n },\n {\n begin: /%r\\{/,\n end: /\\}[a-z]*/\n },\n {\n begin: '%r\\\\(',\n end: '\\\\)[a-z]*'\n },\n {\n begin: '%r!',\n end: '![a-z]*'\n },\n {\n begin: '%r\\\\[',\n end: '\\\\][a-z]*'\n }\n ]\n }\n ].concat(IRB_OBJECT, COMMENT_MODES),\n relevance: 0\n }\n ].concat(IRB_OBJECT, COMMENT_MODES);\n\n SUBST.contains = RUBY_DEFAULT_CONTAINS;\n PARAMS.contains = RUBY_DEFAULT_CONTAINS;\n\n // >>\n // ?>\n const SIMPLE_PROMPT = \"[>?]>\";\n // irb(main):001:0>\n const DEFAULT_PROMPT = \"[\\\\w#]+\\\\(\\\\w+\\\\):\\\\d+:\\\\d+[>*]\";\n const RVM_PROMPT = \"(\\\\w+-)?\\\\d+\\\\.\\\\d+\\\\.\\\\d+(p\\\\d+)?[^\\\\d][^>]+>\";\n\n const IRB_DEFAULT = [\n {\n begin: /^\\s*=>/,\n starts: {\n end: '$',\n contains: RUBY_DEFAULT_CONTAINS\n }\n },\n {\n className: 'meta.prompt',\n begin: '^(' + SIMPLE_PROMPT + \"|\" + DEFAULT_PROMPT + '|' + RVM_PROMPT + ')(?=[ ])',\n starts: {\n end: '$',\n keywords: RUBY_KEYWORDS,\n contains: RUBY_DEFAULT_CONTAINS\n }\n }\n ];\n\n COMMENT_MODES.unshift(IRB_OBJECT);\n\n return {\n name: 'Ruby',\n aliases: [\n 'rb',\n 'gemspec',\n 'podspec',\n 'thor',\n 'irb'\n ],\n keywords: RUBY_KEYWORDS,\n illegal: /\\/\\*/,\n contains: [ hljs.SHEBANG({ binary: \"ruby\" }) ]\n .concat(IRB_DEFAULT)\n .concat(COMMENT_MODES)\n .concat(RUBY_DEFAULT_CONTAINS)\n };\n}\n\nmodule.exports = ruby;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}