/Python27/Lib/site-packages/IPython/html/static/components/highlight.js/src/languages/ruby.js
https://github.com/mantidproject/3rdpartylibs-win32 · JavaScript · 195 lines · 187 code · 3 blank · 5 comment · 4 complexity · f0cb2bd1c556ad48f327146ee8115f30 MD5 · raw file
- /*
- Language: Ruby
- Author: Anton Kovalyov <anton@kovalyov.net>
- Contributors: Peter Leonov <gojpeg@yandex.ru>, Vasily Polovnyov <vast@whiteants.net>, Loren Segal <lsegal@soen.ca>
- */
- function(hljs) {
- var RUBY_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_]*(\\!|\\?)?';
- var RUBY_METHOD_RE = '[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?';
- var RUBY_KEYWORDS = {
- keyword:
- 'and false then defined module in return redo if BEGIN retry end for true self when ' +
- 'next until do begin unless END rescue nil else break undef not super class case ' +
- 'require yield alias while ensure elsif or include'
- };
- var YARDOCTAG = {
- className: 'yardoctag',
- begin: '@[A-Za-z]+'
- };
- var COMMENTS = [
- {
- className: 'comment',
- begin: '#', end: '$',
- contains: [YARDOCTAG]
- },
- {
- className: 'comment',
- begin: '^\\=begin', end: '^\\=end',
- contains: [YARDOCTAG],
- relevance: 10
- },
- {
- className: 'comment',
- begin: '^__END__', end: '\\n$'
- }
- ];
- var SUBST = {
- className: 'subst',
- begin: '#\\{', end: '}',
- lexems: RUBY_IDENT_RE,
- keywords: RUBY_KEYWORDS
- };
- var STR_CONTAINS = [hljs.BACKSLASH_ESCAPE, SUBST];
- var STRINGS = [
- {
- className: 'string',
- begin: '\'', end: '\'',
- contains: STR_CONTAINS,
- relevance: 0
- },
- {
- className: 'string',
- begin: '"', end: '"',
- contains: STR_CONTAINS,
- relevance: 0
- },
- {
- className: 'string',
- begin: '%[qw]?\\(', end: '\\)',
- contains: STR_CONTAINS
- },
- {
- className: 'string',
- begin: '%[qw]?\\[', end: '\\]',
- contains: STR_CONTAINS
- },
- {
- className: 'string',
- begin: '%[qw]?{', end: '}',
- contains: STR_CONTAINS
- },
- {
- className: 'string',
- begin: '%[qw]?<', end: '>',
- contains: STR_CONTAINS,
- relevance: 10
- },
- {
- className: 'string',
- begin: '%[qw]?/', end: '/',
- contains: STR_CONTAINS,
- relevance: 10
- },
- {
- className: 'string',
- begin: '%[qw]?%', end: '%',
- contains: STR_CONTAINS,
- relevance: 10
- },
- {
- className: 'string',
- begin: '%[qw]?-', end: '-',
- contains: STR_CONTAINS,
- relevance: 10
- },
- {
- className: 'string',
- begin: '%[qw]?\\|', end: '\\|',
- contains: STR_CONTAINS,
- relevance: 10
- }
- ];
- var FUNCTION = {
- className: 'function',
- beginWithKeyword: true, end: ' |$|;',
- keywords: 'def',
- contains: [
- {
- className: 'title',
- begin: RUBY_METHOD_RE,
- lexems: RUBY_IDENT_RE,
- keywords: RUBY_KEYWORDS
- },
- {
- className: 'params',
- begin: '\\(', end: '\\)',
- lexems: RUBY_IDENT_RE,
- keywords: RUBY_KEYWORDS
- }
- ].concat(COMMENTS)
- };
- var RUBY_DEFAULT_CONTAINS = COMMENTS.concat(STRINGS.concat([
- {
- className: 'class',
- beginWithKeyword: true, end: '$|;',
- keywords: 'class module',
- contains: [
- {
- className: 'title',
- begin: '[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?',
- relevance: 0
- },
- {
- className: 'inheritance',
- begin: '<\\s*',
- contains: [{
- className: 'parent',
- begin: '(' + hljs.IDENT_RE + '::)?' + hljs.IDENT_RE
- }]
- }
- ].concat(COMMENTS)
- },
- FUNCTION,
- {
- className: 'constant',
- begin: '(::)?(\\b[A-Z]\\w*(::)?)+',
- relevance: 0
- },
- {
- className: 'symbol',
- begin: ':',
- contains: STRINGS.concat([{begin: RUBY_METHOD_RE}]),
- relevance: 0
- },
- {
- className: 'symbol',
- begin: RUBY_IDENT_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
- },
- {
- className: 'number',
- begin: '\\?\\w'
- },
- {
- className: 'variable',
- begin: '(\\$\\W)|((\\$|\\@\\@?)(\\w+))'
- },
- { // regexp container
- begin: '(' + hljs.RE_STARTERS_RE + ')\\s*',
- contains: COMMENTS.concat([
- {
- className: 'regexp',
- begin: '/', end: '/[a-z]*',
- illegal: '\\n',
- contains: [hljs.BACKSLASH_ESCAPE, SUBST]
- }
- ]),
- relevance: 0
- }
- ]));
- SUBST.contains = RUBY_DEFAULT_CONTAINS;
- FUNCTION.contains[1].contains = RUBY_DEFAULT_CONTAINS;
- return {
- lexems: RUBY_IDENT_RE,
- keywords: RUBY_KEYWORDS,
- contains: RUBY_DEFAULT_CONTAINS
- };
- }