Update to 8.0
This commit is contained in:
114
vendor/assets/javascripts/highlight_js/languages/elixir.js
vendored
Normal file
114
vendor/assets/javascripts/highlight_js/languages/elixir.js
vendored
Normal file
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
Language: Elixir
|
||||
Author: Josh Adams <josh@isotope11.com>
|
||||
Description: language definition for Elixir source code files (.ex and .exs). Based on ruby language support.
|
||||
*/
|
||||
|
||||
function(hljs) {
|
||||
var ELIXIR_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_]*(\\!|\\?)?';
|
||||
var ELIXIR_METHOD_RE = '[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?';
|
||||
var ELIXIR_KEYWORDS =
|
||||
'and false then defined module in return redo retry end for true self when ' +
|
||||
'next until do begin unless nil break not case cond alias while ensure or ' +
|
||||
'include use alias fn quote';
|
||||
var SUBST = {
|
||||
className: 'subst',
|
||||
begin: '#\\{', end: '}',
|
||||
lexemes: ELIXIR_IDENT_RE,
|
||||
keywords: ELIXIR_KEYWORDS
|
||||
};
|
||||
var STRING = {
|
||||
className: 'string',
|
||||
contains: [hljs.BACKSLASH_ESCAPE, SUBST],
|
||||
variants: [
|
||||
{
|
||||
begin: /'/, end: /'/
|
||||
},
|
||||
{
|
||||
begin: /"/, end: /"/
|
||||
}
|
||||
]
|
||||
};
|
||||
var PARAMS = {
|
||||
endsWithParent: true, returnEnd: true,
|
||||
lexemes: ELIXIR_IDENT_RE,
|
||||
keywords: ELIXIR_KEYWORDS,
|
||||
relevance: 0
|
||||
};
|
||||
var FUNCTION = {
|
||||
className: 'function',
|
||||
beginKeywords: 'def defmacro', end: /\bdo\b/,
|
||||
contains: [
|
||||
hljs.inherit(hljs.TITLE_MODE, {
|
||||
begin: ELIXIR_METHOD_RE,
|
||||
starts: PARAMS
|
||||
})
|
||||
]
|
||||
};
|
||||
var CLASS = hljs.inherit(FUNCTION, {
|
||||
className: 'class',
|
||||
beginKeywords: 'defmodule defrecord', end: /\bdo\b|$|;/
|
||||
})
|
||||
var ELIXIR_DEFAULT_CONTAINS = [
|
||||
STRING,
|
||||
hljs.HASH_COMMENT_MODE,
|
||||
CLASS,
|
||||
FUNCTION,
|
||||
{
|
||||
className: 'constant',
|
||||
begin: '(\\b[A-Z_]\\w*(.)?)+',
|
||||
relevance: 0
|
||||
},
|
||||
{
|
||||
className: 'symbol',
|
||||
begin: ':',
|
||||
contains: [STRING, {begin: ELIXIR_METHOD_RE}],
|
||||
relevance: 0
|
||||
},
|
||||
{
|
||||
className: 'symbol',
|
||||
begin: ELIXIR_IDENT_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+))'
|
||||
},
|
||||
{
|
||||
begin: '->'
|
||||
},
|
||||
{ // regexp container
|
||||
begin: '(' + hljs.RE_STARTERS_RE + ')\\s*',
|
||||
contains: [
|
||||
hljs.HASH_COMMENT_MODE,
|
||||
{
|
||||
className: 'regexp',
|
||||
illegal: '\\n',
|
||||
contains: [hljs.BACKSLASH_ESCAPE, SUBST],
|
||||
variants: [
|
||||
{
|
||||
begin: '/', end: '/[a-z]*'
|
||||
},
|
||||
{
|
||||
begin: '%r\\[', end: '\\][a-z]*'
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
relevance: 0
|
||||
}
|
||||
];
|
||||
SUBST.contains = ELIXIR_DEFAULT_CONTAINS;
|
||||
PARAMS.contains = ELIXIR_DEFAULT_CONTAINS;
|
||||
|
||||
return {
|
||||
lexemes: ELIXIR_IDENT_RE,
|
||||
keywords: ELIXIR_KEYWORDS,
|
||||
contains: ELIXIR_DEFAULT_CONTAINS
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user