diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-05-24 15:10:37 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-05-24 15:11:17 +0200 |
commit | 7a3df06eb573d36142bd1a8e03c5ce8752d300b3 (patch) | |
tree | 70bfaea8884c374876f607774850a3a51c0cb381 /node_modules/highlight.js/lib/languages/kotlin.js | |
parent | aca1143cb9eed16cf37f04e475e4257418dd18ac (diff) |
fix build issues and add typedoc
Diffstat (limited to 'node_modules/highlight.js/lib/languages/kotlin.js')
-rw-r--r-- | node_modules/highlight.js/lib/languages/kotlin.js | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/node_modules/highlight.js/lib/languages/kotlin.js b/node_modules/highlight.js/lib/languages/kotlin.js new file mode 100644 index 000000000..246e5c9f3 --- /dev/null +++ b/node_modules/highlight.js/lib/languages/kotlin.js @@ -0,0 +1,173 @@ +module.exports = function(hljs) { + var KEYWORDS = { + keyword: + 'abstract as val var vararg get set class object open private protected public noinline ' + + 'crossinline dynamic final enum if else do while for when throw try catch finally ' + + 'import package is in fun override companion reified inline lateinit init' + + 'interface annotation data sealed internal infix operator out by constructor super ' + + // to be deleted soon + 'trait volatile transient native default', + built_in: + 'Byte Short Char Int Long Boolean Float Double Void Unit Nothing', + literal: + 'true false null' + }; + var KEYWORDS_WITH_LABEL = { + className: 'keyword', + begin: /\b(break|continue|return|this)\b/, + starts: { + contains: [ + { + className: 'symbol', + begin: /@\w+/ + } + ] + } + }; + var LABEL = { + className: 'symbol', begin: hljs.UNDERSCORE_IDENT_RE + '@' + }; + + // for string templates + var SUBST = { + className: 'subst', + variants: [ + {begin: '\\$' + hljs.UNDERSCORE_IDENT_RE}, + {begin: '\\${', end: '}', contains: [hljs.APOS_STRING_MODE, hljs.C_NUMBER_MODE]} + ] + }; + var STRING = { + className: 'string', + variants: [ + { + begin: '"""', end: '"""', + contains: [SUBST] + }, + // Can't use built-in modes easily, as we want to use STRING in the meta + // context as 'meta-string' and there's no syntax to remove explicitly set + // classNames in built-in modes. + { + begin: '\'', end: '\'', + illegal: /\n/, + contains: [hljs.BACKSLASH_ESCAPE] + }, + { + begin: '"', end: '"', + illegal: /\n/, + contains: [hljs.BACKSLASH_ESCAPE, SUBST] + } + ] + }; + + var ANNOTATION_USE_SITE = { + className: 'meta', begin: '@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*' + hljs.UNDERSCORE_IDENT_RE + ')?' + }; + var ANNOTATION = { + className: 'meta', begin: '@' + hljs.UNDERSCORE_IDENT_RE, + contains: [ + { + begin: /\(/, end: /\)/, + contains: [ + hljs.inherit(STRING, {className: 'meta-string'}) + ] + } + ] + }; + + return { + keywords: KEYWORDS, + contains : [ + hljs.COMMENT( + '/\\*\\*', + '\\*/', + { + relevance : 0, + contains : [{ + className : 'doctag', + begin : '@[A-Za-z]+' + }] + } + ), + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + KEYWORDS_WITH_LABEL, + LABEL, + ANNOTATION_USE_SITE, + ANNOTATION, + { + className: 'function', + beginKeywords: 'fun', end: '[(]|$', + returnBegin: true, + excludeEnd: true, + keywords: KEYWORDS, + illegal: /fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/, + relevance: 5, + contains: [ + { + begin: hljs.UNDERSCORE_IDENT_RE + '\\s*\\(', returnBegin: true, + relevance: 0, + contains: [hljs.UNDERSCORE_TITLE_MODE] + }, + { + className: 'type', + begin: /</, end: />/, keywords: 'reified', + relevance: 0 + }, + { + className: 'params', + begin: /\(/, end: /\)/, + endsParent: true, + keywords: KEYWORDS, + relevance: 0, + contains: [ + { + begin: /:/, end: /[=,\/]/, endsWithParent: true, + contains: [ + {className: 'type', begin: hljs.UNDERSCORE_IDENT_RE}, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ], + relevance: 0 + }, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + ANNOTATION_USE_SITE, + ANNOTATION, + STRING, + hljs.C_NUMBER_MODE + ] + }, + hljs.C_BLOCK_COMMENT_MODE + ] + }, + { + className: 'class', + beginKeywords: 'class interface trait', end: /[:\{(]|$/, // remove 'trait' when removed from KEYWORDS + excludeEnd: true, + illegal: 'extends implements', + contains: [ + {beginKeywords: 'public protected internal private constructor'}, + hljs.UNDERSCORE_TITLE_MODE, + { + className: 'type', + begin: /</, end: />/, excludeBegin: true, excludeEnd: true, + relevance: 0 + }, + { + className: 'type', + begin: /[,:]\s*/, end: /[<\(,]|$/, excludeBegin: true, returnEnd: true + }, + ANNOTATION_USE_SITE, + ANNOTATION + ] + }, + STRING, + { + className: 'meta', + begin: "^#!/usr/bin/env", end: '$', + illegal: '\n' + }, + hljs.C_NUMBER_MODE + ] + }; +};
\ No newline at end of file |