aboutsummaryrefslogtreecommitdiff
path: root/node_modules/highlight.js/lib/languages/elm.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-05-24 15:10:37 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-05-24 15:11:17 +0200
commit7a3df06eb573d36142bd1a8e03c5ce8752d300b3 (patch)
tree70bfaea8884c374876f607774850a3a51c0cb381 /node_modules/highlight.js/lib/languages/elm.js
parentaca1143cb9eed16cf37f04e475e4257418dd18ac (diff)
fix build issues and add typedoc
Diffstat (limited to 'node_modules/highlight.js/lib/languages/elm.js')
-rw-r--r--node_modules/highlight.js/lib/languages/elm.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/node_modules/highlight.js/lib/languages/elm.js b/node_modules/highlight.js/lib/languages/elm.js
new file mode 100644
index 000000000..893218dd8
--- /dev/null
+++ b/node_modules/highlight.js/lib/languages/elm.js
@@ -0,0 +1,83 @@
+module.exports = function(hljs) {
+ var COMMENT = {
+ variants: [
+ hljs.COMMENT('--', '$'),
+ hljs.COMMENT(
+ '{-',
+ '-}',
+ {
+ contains: ['self']
+ }
+ )
+ ]
+ };
+
+ var CONSTRUCTOR = {
+ className: 'type',
+ begin: '\\b[A-Z][\\w\']*', // TODO: other constructors (built-in, infix).
+ relevance: 0
+ };
+
+ var LIST = {
+ begin: '\\(', end: '\\)',
+ illegal: '"',
+ contains: [
+ {className: 'type', begin: '\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?'},
+ COMMENT
+ ]
+ };
+
+ var RECORD = {
+ begin: '{', end: '}',
+ contains: LIST.contains
+ };
+
+ return {
+ keywords:
+ 'let in if then else case of where module import exposing ' +
+ 'type alias as infix infixl infixr port effect command subscription',
+ contains: [
+
+ // Top-level constructions.
+
+ {
+ beginKeywords: 'port effect module', end: 'exposing',
+ keywords: 'port effect module where command subscription exposing',
+ contains: [LIST, COMMENT],
+ illegal: '\\W\\.|;'
+ },
+ {
+ begin: 'import', end: '$',
+ keywords: 'import as exposing',
+ contains: [LIST, COMMENT],
+ illegal: '\\W\\.|;'
+ },
+ {
+ begin: 'type', end: '$',
+ keywords: 'type alias',
+ contains: [CONSTRUCTOR, LIST, RECORD, COMMENT]
+ },
+ {
+ beginKeywords: 'infix infixl infixr', end: '$',
+ contains: [hljs.C_NUMBER_MODE, COMMENT]
+ },
+ {
+ begin: 'port', end: '$',
+ keywords: 'port',
+ contains: [COMMENT]
+ },
+
+ // Literals and names.
+
+ // TODO: characters.
+ hljs.QUOTE_STRING_MODE,
+ hljs.C_NUMBER_MODE,
+ CONSTRUCTOR,
+ hljs.inherit(hljs.TITLE_MODE, {begin: '^[_a-z][\\w\']*'}),
+ COMMENT,
+
+ {begin: '->|<-'} // No markup, relevance booster
+ ],
+ illegal: /;/
+ };
+}; \ No newline at end of file