diff --git a/CHANGES.md b/CHANGES.md index 323bab5cde..d767090542 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -16,6 +16,7 @@ Core Changes: Language Improvements: +- fix(elixir) Support function names with a slash (#2406) [Josh Goebel][] - fix(javascript) comma is allowed in a "value container" (#2403) [Josh Goebel][] - enh(apache) add `deny` and `allow` keywords [Josh Goebel][] - enh(apache) highlight numeric attributes values [Josh Goebel][] diff --git a/src/languages/elixir.js b/src/languages/elixir.js index 89f498774d..998fa745a1 100644 --- a/src/languages/elixir.js +++ b/src/languages/elixir.js @@ -19,7 +19,11 @@ export default function(hljs) { lexemes: ELIXIR_IDENT_RE, keywords: ELIXIR_KEYWORDS }; - + var NUMBER = { + className: 'number', + begin: '(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[1-9][0-9_]*(.[0-9_]+([eE][-+]?[0-9]+)?)?)', + relevance: 0 + }; var SIGIL_DELIMITERS = '[/|([{<"\']' var LOWERCASE_SIGIL = { className: 'string', @@ -128,11 +132,7 @@ export default function(hljs) { begin: ELIXIR_IDENT_RE + ':(?!:)', relevance: 0 }, - { - className: 'number', - begin: '(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[1-9][0-9_]*(.[0-9_]+([eE][-+]?[0-9]+)?)?)', - relevance: 0 - }, + NUMBER, { className: 'variable', begin: '(\\$\\W)|((\\$|\\@\\@?)(\\w+))' @@ -144,6 +144,15 @@ export default function(hljs) { begin: '(' + hljs.RE_STARTERS_RE + ')\\s*', contains: [ hljs.HASH_COMMENT_MODE, + { + // to prevent false regex triggers for the division function: + // /: + begin: /\/: (?=\d+\s*[,\]])/, + relevance: 0, + contains: [ + NUMBER + ] + }, { className: 'regexp', illegal: '\\n', diff --git a/test/markup/elixir/function-not-regex.expect.txt b/test/markup/elixir/function-not-regex.expect.txt new file mode 100644 index 0000000000..bd914311ce --- /dev/null +++ b/test/markup/elixir/function-not-regex.expect.txt @@ -0,0 +1,6 @@ +import Kernel, except: [ + spawn: 1, + +: 2, + /: 2, + Unless: 2 +] diff --git a/test/markup/elixir/function-not-regex.txt b/test/markup/elixir/function-not-regex.txt new file mode 100644 index 0000000000..bda5875d58 --- /dev/null +++ b/test/markup/elixir/function-not-regex.txt @@ -0,0 +1,6 @@ +import Kernel, except: [ + spawn: 1, + +: 2, + /: 2, + Unless: 2 +]