mirror of
				https://github.com/JKorf/CryptoExchange.Net
				synced 2025-10-30 18:07:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			195 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			195 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
| Language: Ruby
 | |
| Description: Ruby is a dynamic, open source programming language with a focus on simplicity and productivity.
 | |
| Website: https://www.ruby-lang.org/
 | |
| Author: Anton Kovalyov <anton@kovalyov.net>
 | |
| Contributors: 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>
 | |
| Category: common
 | |
| */
 | |
| 
 | |
| export default 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/
 | |
|       },
 | |
|       { // heredocs
 | |
|         begin: /<<[-~]?'?(\w+)(?:.|\n)*?\n\s*\1\b/,
 | |
|         returnBegin: true,
 | |
|         contains: [
 | |
|           { begin: /<<[-~]?'?/ },
 | |
|           hljs.END_SAME_AS_BEGIN({
 | |
|             begin: /(\w+)/, end: /(\w+)/,
 | |
|             contains: [hljs.BACKSLASH_ESCAPE, SUBST],
 | |
|           })
 | |
|         ]
 | |
|       }
 | |
|     ]
 | |
|   };
 | |
|   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 + '|unless)\\s*',
 | |
|       keywords: 'unless',
 | |
|       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 {
 | |
|     name: 'Ruby',
 | |
|     aliases: ['rb', 'gemspec', 'podspec', 'thor', 'irb'],
 | |
|     keywords: RUBY_KEYWORDS,
 | |
|     illegal: /\/\*/,
 | |
|     contains: COMMENT_MODES.concat(IRB_DEFAULT).concat(RUBY_DEFAULT_CONTAINS)
 | |
|   };
 | |
| }
 |