Вход Регистрация
Файл: error-kitty/node_modules/highlight.js/lib/languages/coffeescript.js
Строк: 139
<?php
module
.exports = function(hljs) {
  var 
KEYWORDS = {
    
keyword:
      
// JS keywords
      
'in if for while finally new do return else break catch instanceof throw try this ' +
      
'switch continue typeof delete debugger super ' +
      
// Coffee keywords
      
'then unless until loop of by when and or is isnt not',
    
literal:
      
// JS literals
      
'true false null undefined ' +
      
// Coffee literals
      
'yes no on off',
    
reserved:
      
'case default function var void with const let enum export import native ' +
      
'__hasProp __extends __slice __bind __indexOf',
    
built_in:
      
'npm require console print module global window document'
  
};
  var 
JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';
  var 
TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE});
  var 
SUBST = {
    
className: 'subst',
    
begin: /#{/, end: /}/,
    
keywords: KEYWORDS
  
};
  var 
EXPRESSIONS = [
    
hljs.BINARY_NUMBER_MODE,
    
hljs.inherit(hljs.C_NUMBER_MODE, {starts: {end: '(\s*/)?', relevance: 0}}), // a number tries to eat the following slash to prevent treating it as a regexp
    
{
      
className: 'string',
      
variants: [
        {
          
begin: /'''/, end: /'''/,
          
contains: [hljs.BACKSLASH_ESCAPE]
        },
        {
          
begin: /'/, end: /'/,
          
contains: [hljs.BACKSLASH_ESCAPE]
        },
        {
          
begin: /"""/, end: /"""/,
          
contains: [hljs.BACKSLASH_ESCAPE, SUBST]
        },
        {
          
begin: /"/, end: /"/,
          
contains: [hljs.BACKSLASH_ESCAPE, SUBST]
        }
      ]
    },
    {
      
className: 'regexp',
      
variants: [
        {
          
begin: '///', end: '///',
          
contains: [SUBST, hljs.HASH_COMMENT_MODE]
        },
        {
          
begin: '//[gim]*',
          
relevance: 0
        
},
        {
          
// regex can't start with space to parse x / 2 / 3 as two divisions
          // regex can't start with *, and it supports an "illegal" in the main mode
          
begin: //(?![ *])(\/|.)*?/[gim]*(?=W|$)/
        
}
      ]
    },
    {
      
className: 'property',
      
begin: '@' + JS_IDENT_RE
    
},
    {
      
begin: '`', end: '`',
      
excludeBegin: true, excludeEnd: true,
      
subLanguage: 'javascript'
    
}
  ];
  
SUBST.contains = EXPRESSIONS;

  return {
    
aliases: ['coffee', 'cson', 'iced'],
    
keywords: KEYWORDS,
    
illegal: //*/,
    
contains: EXPRESSIONS.concat([
      {
        
className: 'comment',
        
begin: '###', end: '###'
      
},
      
hljs.HASH_COMMENT_MODE,
      {
        
className: 'function',
        
begin: '(^\s*|\B)(' + JS_IDENT_RE + '\s*=\s*)?(\(.*\))?\s*\B[-=]>', end: '[-=]>',
        
returnBegin: true,
        
contains: [
          
TITLE,
          {
            
className: 'params',
            
begin: '\([^\(]', returnBegin: true,
            
/* We need another contained nameless mode to not have every nested
            pair of parens to be called "params" */
            
contains: [{
              
begin: /(/, end: /)/,
              
keywords: KEYWORDS,
              
contains: ['self'].concat(EXPRESSIONS)
            }]
          }
        ]
      },
      {
        
className: 'class',
        
beginKeywords: 'class',
        
end: '$',
        
illegal: /[:="[]]/,
        contains: [
          {
            beginKeywords: 'extends',
            endsWithParent: true,
            illegal: /[:="
[]]/,
            
contains: [TITLE]
          },
          
TITLE
        
]
      },
      {
        
className: 'attribute',
        
begin: JS_IDENT_RE + ':', end: ':',
        
returnBegin: true, excludeEnd: true,
        
relevance: 0
      
}
    ])
  };
};
?>
Онлайн: 2
Реклама