Вход Регистрация
Файл: 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)
  };
};
?>
Онлайн: 2
Реклама