芝麻web文件管理V1.00
编辑当前文件:/home/qrafawbu/kwesioben.com/accufy/docs/assets/vendor/highlight.js/languages/coffeescript.js
/* Language: CoffeeScript Author: Dmytrii Nagirniak
Contributors: Oleg Efimov
, Cédric Néhémie
Description: CoffeeScript is a programming language that transcompiles to JavaScript. For info about language see http://coffeescript.org/ Category: common, scripting Website: https://coffeescript.org */ import * as ECMAScript from "./lib/ecmascript"; export default function(hljs) { var COFFEE_BUILT_INS = [ 'npm', 'print' ]; var COFFEE_LITERALS = [ 'yes', 'no', 'on', 'off' ]; var COFFEE_KEYWORDS = [ 'then', 'unless', 'until', 'loop', 'by', 'when', 'and', 'or', 'is', 'isnt', 'not' ]; var NOT_VALID_KEYWORDS = [ "var", "const", "let", "function", "static" ]; var excluding = (list) => (kw) => !list.includes(kw); var KEYWORDS = { keyword: ECMAScript.KEYWORDS.concat(COFFEE_KEYWORDS).filter(excluding(NOT_VALID_KEYWORDS)).join(" "), literal: ECMAScript.LITERALS.concat(COFFEE_LITERALS).join(" "), built_in: ECMAScript.BUILT_INS.concat(COFFEE_BUILT_INS).join(" ") }; var JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*'; 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]{0,3}(?=\\W)', 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]{0,3}(?=\W)/ } ] }, { begin: '@' + JS_IDENT_RE // relevance booster }, { subLanguage: 'javascript', excludeBegin: true, excludeEnd: true, variants: [ { begin: '```', end: '```', }, { begin: '`', end: '`', } ] } ]; SUBST.contains = EXPRESSIONS; var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE}); var PARAMS_RE = '(\\(.*\\))?\\s*\\B[-=]>'; var PARAMS = { 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) }] }; return { name: 'CoffeeScript', aliases: ['coffee', 'cson', 'iced'], keywords: KEYWORDS, illegal: /\/\*/, contains: EXPRESSIONS.concat([ hljs.COMMENT('###', '###'), hljs.HASH_COMMENT_MODE, { className: 'function', begin: '^\\s*' + JS_IDENT_RE + '\\s*=\\s*' + PARAMS_RE, end: '[-=]>', returnBegin: true, contains: [TITLE, PARAMS] }, { // anonymous function start begin: /[:\(,=]\s*/, relevance: 0, contains: [ { className: 'function', begin: PARAMS_RE, end: '[-=]>', returnBegin: true, contains: [PARAMS] } ] }, { className: 'class', beginKeywords: 'class', end: '$', illegal: /[:="\[\]]/, contains: [ { beginKeywords: 'extends', endsWithParent: true, illegal: /[:="\[\]]/, contains: [TITLE] }, TITLE ] }, { begin: JS_IDENT_RE + ':', end: ':', returnBegin: true, returnEnd: true, relevance: 0 } ]) }; }