From 9309bd88e1f344f16c0cb2969f7be5e3951273f0 Mon Sep 17 00:00:00 2001 From: Sergey Prokhorov Date: Wed, 13 May 2020 22:30:27 +0200 Subject: [PATCH 1/3] (erlang) add support for underscore separators in numeric literals --- src/languages/erlang-repl.js | 2 +- src/languages/erlang.js | 2 +- test/detect/erlang-repl/default.txt | 4 ++++ test/detect/erlang/default.txt | 4 ++++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/languages/erlang-repl.js b/src/languages/erlang-repl.js index 6ba6e0ed49..5d1e6679e9 100644 --- a/src/languages/erlang-repl.js +++ b/src/languages/erlang-repl.js @@ -23,7 +23,7 @@ export default function(hljs) { hljs.COMMENT('%', '$'), { className: 'number', - begin: '\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)', + begin: '\\b(\\d+(_\\d+)*#[a-fA-F0-9]+(_[a-fA-F0-9]+)*|\\d+(_\\d+)*(\\.\\d+(_\\d+)*)?([eE][-+]?\\d+)?)', relevance: 0 }, hljs.APOS_STRING_MODE, diff --git a/src/languages/erlang.js b/src/languages/erlang.js index 2cec6aecf5..e37b94ea53 100644 --- a/src/languages/erlang.js +++ b/src/languages/erlang.js @@ -20,7 +20,7 @@ export default function(hljs) { var COMMENT = hljs.COMMENT('%', '$'); var NUMBER = { className: 'number', - begin: '\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)', + begin: '\\b(\\d+(_\\d+)*#[a-fA-F0-9]+(_[a-fA-F0-9]+)*|\\d+(_\\d+)*(\\.\\d+(_\\d+)*)?([eE][-+]?\\d+)?)', relevance: 0 }; var NAMED_FUN = { diff --git a/test/detect/erlang-repl/default.txt b/test/detect/erlang-repl/default.txt index 8f2bef358f..987edc0985 100644 --- a/test/detect/erlang-repl/default.txt +++ b/test/detect/erlang-repl/default.txt @@ -25,3 +25,7 @@ ok 5 11> 1.85e+3. 1850 +12> 16#DEAD_BEEF. +3735928559 +13> Million = 1_000_000. +1000000 diff --git a/test/detect/erlang/default.txt b/test/detect/erlang/default.txt index 528e06449d..5f72fc5f93 100644 --- a/test/detect/erlang/default.txt +++ b/test/detect/erlang/default.txt @@ -6,6 +6,10 @@ %% backwards compatibility -export([listen/1, listen/2, listen/3, listen/4, stop/1]). +-define(MILLION, 1_000_000). +-define(BIT_FLAG, 2#1100_0011_1010_0101). +-define(PI, 3.14159_26535_89793). + if L =/= [] -> % If L is not empty sum(L) / count(L); true -> From f6ff1ae9f3b1f5c6aeb7055a39b5b6002bd1292b Mon Sep 17 00:00:00 2001 From: Sergey Prokhorov Date: Wed, 13 May 2020 23:32:12 +0200 Subject: [PATCH 2/3] (erlang) numeric literals underscore separators - add tests --- CHANGES.md | 2 ++ test/markup/erlang/numbers.expect.txt | 14 ++++++++++++++ test/markup/erlang/numbers.txt | 14 ++++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 test/markup/erlang/numbers.expect.txt create mode 100644 test/markup/erlang/numbers.txt diff --git a/CHANGES.md b/CHANGES.md index 03e90acb8e..a631b26860 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -34,6 +34,7 @@ Language Improvements: - fix(yaml) Fix tags to include non-word characters (#2486) [Peter Plantinga][] - fix(swift) `@objcMembers` was being partially highlighted (#2543) [Nick Randall][] - enh(dart) Add `late` and `required` keywords, and `Never` built-in type (#2550) [Sam Rawlins][] +- enh(erlang) Add underscore separators to numeric literals (#2554) [Sergey Prokhorov][] [Josh Goebel]: https://github.com/yyyc514 [Peter Plantinga]: https://github.com/pplantinga @@ -42,6 +43,7 @@ Language Improvements: [Hankun Lin]: https://github.com/Linhk1606 [Nick Randall]: https://github.com/nicked [Sam Rawlins]: https://github.com/srawlins +[Sergey Prokhorov]: https://github.com/seriyps ## Version 10.0.2 diff --git a/test/markup/erlang/numbers.expect.txt b/test/markup/erlang/numbers.expect.txt new file mode 100644 index 0000000000..9fdb67b1ae --- /dev/null +++ b/test/markup/erlang/numbers.expect.txt @@ -0,0 +1,14 @@ +Integer = 1234 +BigInteger = 1_234_000 +NegInteger = -20_000 +Float = 2.34 +BigFloat = 3_333.14159_26535_89793 +SciFloat = 2.4e23 +PlusSciFloat = 2.4e+23 +SmallSciFloat = 2.4e-23 +Binary = 2#1010 +StrangeBinary = 2#1010_1010_1010 +Octal = 8#777 +StrangeOctal = 8#777_666_555 +Hex = 16#1ABEF +StrangeHex = 16#1234_FACE_987D diff --git a/test/markup/erlang/numbers.txt b/test/markup/erlang/numbers.txt new file mode 100644 index 0000000000..d14aff8819 --- /dev/null +++ b/test/markup/erlang/numbers.txt @@ -0,0 +1,14 @@ +Integer = 1234 +BigInteger = 1_234_000 +NegInteger = -20_000 +Float = 2.34 +BigFloat = 3_333.14159_26535_89793 +SciFloat = 2.4e23 +PlusSciFloat = 2.4e+23 +SmallSciFloat = 2.4e-23 +Binary = 2#1010 +StrangeBinary = 2#1010_1010_1010 +Octal = 8#777 +StrangeOctal = 8#777_666_555 +Hex = 16#1ABEF +StrangeHex = 16#1234_FACE_987D From ad3694ddc4db822fbf31b6dc3e7fb44f1608266f Mon Sep 17 00:00:00 2001 From: Sergey Prokhorov Date: Wed, 13 May 2020 23:54:44 +0200 Subject: [PATCH 3/3] (erlang) revert changes to autodetect --- test/detect/erlang-repl/default.txt | 4 ---- test/detect/erlang/default.txt | 4 ---- 2 files changed, 8 deletions(-) diff --git a/test/detect/erlang-repl/default.txt b/test/detect/erlang-repl/default.txt index 987edc0985..8f2bef358f 100644 --- a/test/detect/erlang-repl/default.txt +++ b/test/detect/erlang-repl/default.txt @@ -25,7 +25,3 @@ ok 5 11> 1.85e+3. 1850 -12> 16#DEAD_BEEF. -3735928559 -13> Million = 1_000_000. -1000000 diff --git a/test/detect/erlang/default.txt b/test/detect/erlang/default.txt index 5f72fc5f93..528e06449d 100644 --- a/test/detect/erlang/default.txt +++ b/test/detect/erlang/default.txt @@ -6,10 +6,6 @@ %% backwards compatibility -export([listen/1, listen/2, listen/3, listen/4, stop/1]). --define(MILLION, 1_000_000). --define(BIT_FLAG, 2#1100_0011_1010_0101). --define(PI, 3.14159_26535_89793). - if L =/= [] -> % If L is not empty sum(L) / count(L); true ->