| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 | 
							- /*
 
- Language: Ruby
 
- Author: Anton Kovalyov <[email protected]>
 
- Contributors: Peter Leonov <[email protected]>, Vasily Polovnyov <[email protected]>, Loren Segal <[email protected]>, Pascal Hurni <[email protected]>, Cedric Sohrauer <[email protected]>
 
- Category: common
 
- */
 
- function(hljs) {
 
-   var RUBY_METHOD_RE = '[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?';
 
-   var RUBY_KEYWORDS = {
 
-     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',
 
-     literal:
 
-       'true false nil'
 
-   };
 
-   var YARDOCTAG = {
 
-     className: 'doctag',
 
-     begin: '@[A-Za-z]+'
 
-   };
 
-   var IRB_OBJECT = {
 
-     begin: '#<', end: '>'
 
-   };
 
-   var COMMENT_MODES = [
 
-     hljs.COMMENT(
 
-       '#',
 
-       '$',
 
-       {
 
-         contains: [YARDOCTAG]
 
-       }
 
-     ),
 
-     hljs.COMMENT(
 
-       '^\\=begin',
 
-       '^\\=end',
 
-       {
 
-         contains: [YARDOCTAG],
 
-         relevance: 10
 
-       }
 
-     ),
 
-     hljs.COMMENT('^__END__', '\\n$')
 
-   ];
 
-   var SUBST = {
 
-     className: 'subst',
 
-     begin: '#\\{', end: '}',
 
-     keywords: RUBY_KEYWORDS
 
-   };
 
-   var STRING = {
 
-     className: 'string',
 
-     contains: [hljs.BACKSLASH_ESCAPE, SUBST],
 
-     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: '\\|'},
 
-       {
 
-         // \B in the beginning suppresses recognition of ?-sequences where ?
 
-         // is the last character of a preceding identifier, as in: `func?4`
 
-         begin: /\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/
 
-       },
 
-       {
 
-         begin: /<<(-?)\w+$/, end: /^\s*\w+$/,
 
-       }
 
-     ]
 
-   };
 
-   var PARAMS = {
 
-     className: 'params',
 
-     begin: '\\(', end: '\\)', endsParent: true,
 
-     keywords: RUBY_KEYWORDS
 
-   };
 
-   var RUBY_DEFAULT_CONTAINS = [
 
-     STRING,
 
-     IRB_OBJECT,
 
-     {
 
-       className: 'class',
 
-       beginKeywords: 'class module', end: '$|;',
 
-       illegal: /=/,
 
-       contains: [
 
-         hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?'}),
 
-         {
 
-           begin: '<\\s*',
 
-           contains: [{
 
-             begin: '(' + hljs.IDENT_RE + '::)?' + hljs.IDENT_RE
 
-           }]
 
-         }
 
-       ].concat(COMMENT_MODES)
 
-     },
 
-     {
 
-       className: 'function',
 
-       beginKeywords: 'def', end: '$|;',
 
-       contains: [
 
-         hljs.inherit(hljs.TITLE_MODE, {begin: RUBY_METHOD_RE}),
 
-         PARAMS
 
-       ].concat(COMMENT_MODES)
 
-     },
 
-     {
 
-       // swallow namespace qualifiers before symbols
 
-       begin: hljs.IDENT_RE + '::'
 
-     },
 
-     {
 
-       className: 'symbol',
 
-       begin: hljs.UNDERSCORE_IDENT_RE + '(\\!|\\?)?:',
 
-       relevance: 0
 
-     },
 
-     {
 
-       className: 'symbol',
 
-       begin: ':(?!\\s)',
 
-       contains: [STRING, {begin: RUBY_METHOD_RE}],
 
-       relevance: 0
 
-     },
 
-     {
 
-       className: 'number',
 
-       begin: '(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b',
 
-       relevance: 0
 
-     },
 
-     {
 
-       begin: '(\\$\\W)|((\\$|\\@\\@?)(\\w+))' // variables
 
-     },
 
-     {
 
-       className: 'params',
 
-       begin: /\|/, end: /\|/,
 
-       keywords: RUBY_KEYWORDS
 
-     },
 
-     { // regexp container
 
-       begin: '(' + hljs.RE_STARTERS_RE + ')\\s*',
 
-       contains: [
 
-         IRB_OBJECT,
 
-         {
 
-           className: 'regexp',
 
-           contains: [hljs.BACKSLASH_ESCAPE, SUBST],
 
-           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(COMMENT_MODES),
 
-       relevance: 0
 
-     }
 
-   ].concat(COMMENT_MODES);
 
-   SUBST.contains = RUBY_DEFAULT_CONTAINS;
 
-   PARAMS.contains = RUBY_DEFAULT_CONTAINS;
 
-   var SIMPLE_PROMPT = "[>?]>";
 
-   var DEFAULT_PROMPT = "[\\w#]+\\(\\w+\\):\\d+:\\d+>";
 
-   var RVM_PROMPT = "(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>";
 
-   var IRB_DEFAULT = [
 
-     {
 
-       begin: /^\s*=>/,
 
-       starts: {
 
-         end: '$', contains: RUBY_DEFAULT_CONTAINS
 
-       }
 
-     },
 
-     {
 
-       className: 'meta',
 
-       begin: '^('+SIMPLE_PROMPT+"|"+DEFAULT_PROMPT+'|'+RVM_PROMPT+')',
 
-       starts: {
 
-         end: '$', contains: RUBY_DEFAULT_CONTAINS
 
-       }
 
-     }
 
-   ];
 
-   return {
 
-     aliases: ['rb', 'gemspec', 'podspec', 'thor', 'irb'],
 
-     keywords: RUBY_KEYWORDS,
 
-     illegal: /\/\*/,
 
-     contains: COMMENT_MODES.concat(IRB_DEFAULT).concat(RUBY_DEFAULT_CONTAINS)
 
-   };
 
- }
 
 
  |