Файл: error-kitty/node_modules/highlight.js/lib/languages/ruby.js
Строк: 153
<?php
module.exports = function(hljs) {
var RUBY_METHOD_RE = '[a-zA-Z_]\w*[!?=]?|[-+~]\@|<<|>>|=~|===?|<=>|[<>]=?|\*\*|[-/+%^&*~`|]|\[\]=?';
var RUBY_KEYWORDS =
'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 attr_reader attr_writer attr_accessor';
var YARDOCTAG = {
className: 'yardoctag',
begin: '@[A-Za-z]+'
};
var IRB_OBJECT = {
className: 'value',
begin: '#<', end: '>'
};
var COMMENT = {
className: 'comment',
variants: [
{
begin: '#', end: '$',
contains: [YARDOCTAG]
},
{
begin: '^\=begin', end: '^\=end',
contains: [YARDOCTAG],
relevance: 10
},
{
begin: '^__END__', 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: '%[qw]?\(', end: '\)'},
{begin: '%[qw]?\[', end: '\]'},
{begin: '%[qw]?{', end: '}'},
{begin: '%[qw]?<', end: '>'},
{begin: '%[qw]?/', end: '/'},
{begin: '%[qw]?%', end: '%'},
{begin: '%[qw]?-', end: '-'},
{begin: '%[qw]?\|', 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/
}
]
};
var PARAMS = {
className: 'params',
begin: '\(', end: '\)',
keywords: RUBY_KEYWORDS
};
var RUBY_DEFAULT_CONTAINS = [
STRING,
IRB_OBJECT,
COMMENT,
{
className: 'class',
beginKeywords: 'class module', end: '$|;',
illegal: /=/,
contains: [
hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\w*(::\w+)*(\?|\!)?'}),
{
className: 'inheritance',
begin: '<\s*',
contains: [{
className: 'parent',
begin: '(' + hljs.IDENT_RE + '::)?' + hljs.IDENT_RE
}]
},
COMMENT
]
},
{
className: 'function',
beginKeywords: 'def', end: ' |$|;',
relevance: 0,
contains: [
hljs.inherit(hljs.TITLE_MODE, {begin: RUBY_METHOD_RE}),
PARAMS,
COMMENT
]
},
{
className: 'constant',
begin: '(::)?(\b[A-Z]\w*(::)?)+',
relevance: 0
},
{
className: 'symbol',
begin: hljs.UNDERSCORE_IDENT_RE + '(\!|\?)?:',
relevance: 0
},
{
className: 'symbol',
begin: ':',
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
},
{
className: 'variable',
begin: '(\$\W)|((\$|\@\@?)(\w+))'
},
{ // regexp container
begin: '(' + hljs.RE_STARTERS_RE + ')\s*',
contains: [
IRB_OBJECT,
COMMENT,
{
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]*'}
]
}
],
relevance: 0
}
];
SUBST.contains = RUBY_DEFAULT_CONTAINS;
PARAMS.contains = RUBY_DEFAULT_CONTAINS;
var IRB_DEFAULT = [
{
begin: /^s*=>/,
className: 'status',
starts: {
end: '$', contains: RUBY_DEFAULT_CONTAINS
}
},
{
className: 'prompt',
begin: /^S[^=>n]*>+/,
starts: {
end: '$', contains: RUBY_DEFAULT_CONTAINS
}
}
];
return {
aliases: ['rb', 'gemspec', 'podspec', 'thor', 'irb'],
keywords: RUBY_KEYWORDS,
contains: [COMMENT].concat(IRB_DEFAULT).concat(RUBY_DEFAULT_CONTAINS)
};
};
?>