From ef286e4bd218bb66b63dae3111c36c07d6c4ffbc Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 25 Dec 2019 19:17:46 -0500 Subject: [PATCH 1/3] enh(ini) support arrays and much cleaner grammar --- CHANGES.md | 1 + src/languages/ini.js | 83 +++++++++++++++++++------------- test/markup/ini/array.expect.txt | 9 ++++ test/markup/ini/array.txt | 10 ++++ 4 files changed, 70 insertions(+), 33 deletions(-) create mode 100644 test/markup/ini/array.expect.txt create mode 100644 test/markup/ini/array.txt diff --git a/CHANGES.md b/CHANGES.md index 7ceeff534a..1c474d877d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -14,6 +14,7 @@ Core Changes: Language Improvements: +- (ini) support arrays, clean up grammar (#) [Josh Goebel][] - (vbnet) add nameof operator to the keywords (#2329) [Youssef Victor][] - (stan) updated with improved coverage of language keywords and patterns. (#1829) [Jeffrey Arnold][] diff --git a/src/languages/ini.js b/src/languages/ini.js index e4042ebef4..236c5534b5 100644 --- a/src/languages/ini.js +++ b/src/languages/ini.js @@ -7,7 +7,31 @@ Website: https://github.com/toml-lang/toml */ function(hljs) { - var STRING = { + var NUMBERS = { + className: 'number', + relevance: 0, + variants: [ + { begin: /([\+\-]+)?[\d]+_[\d_]+/ }, + { begin: hljs.NUMBER_RE } + ] + }; + var COMMENTS = hljs.COMMENT(); + COMMENTS.variants = [ + {begin: /;/, end: /$/}, + {begin: /#/, end: /$/}, + ]; + var VARIABLES = { + className: 'variable', + variants: [ + { begin: /\$[\w\d"][\w\d_]*/ }, + { begin: /\$\{(.*?)}/ } + ] + }; + var LITERALS = { + className: 'literal', + begin: /\bon|off|true|false|yes|no\b/ + }; + var STRINGS = { className: "string", contains: [hljs.BACKSLASH_ESCAPE], variants: [ @@ -24,51 +48,44 @@ function(hljs) { } ] }; + var ARRAY = { + begin: /\[/, end: /\]/, + contains: [ + COMMENTS, + LITERALS, + VARIABLES, + STRINGS, + NUMBERS, + 'self' + ], + relevance:0 + }; + return { aliases: ['toml'], case_insensitive: true, illegal: /\S/, contains: [ - hljs.COMMENT(';', '$'), - hljs.HASH_COMMENT_MODE, + COMMENTS, { className: 'section', - begin: /^\s*\[+/, end: /\]+/ + begin: /\[+/, end: /\]+/ }, { - begin: /^[a-z0-9\[\]_\.-]+\s*=\s*/, end: '$', - returnBegin: true, - contains: [ - { - className: 'attr', - begin: /[a-z0-9\[\]_\.-]+/ - }, + begin: /^[a-z0-9\[\]_\.-]+(?=\s*=\s*)/, + className: 'attr', + starts: { - begin: /=/, endsWithParent: true, - relevance: 0, + end: /$/, contains: [ - hljs.COMMENT(';', '$'), - hljs.HASH_COMMENT_MODE, - { - className: 'literal', - begin: /\bon|off|true|false|yes|no\b/ - }, - { - className: 'variable', - variants: [ - {begin: /\$[\w\d"][\w\d_]*/}, - {begin: /\$\{(.*?)}/} - ] - }, - STRING, - { - className: 'number', - begin: /([\+\-]+)?[\d]+_[\d_]+/ - }, - hljs.NUMBER_MODE + COMMENTS, + ARRAY, + LITERALS, + VARIABLES, + STRINGS, + NUMBERS ] } - ] } ] }; diff --git a/test/markup/ini/array.expect.txt b/test/markup/ini/array.expect.txt new file mode 100644 index 0000000000..31bc35db02 --- /dev/null +++ b/test/markup/ini/array.expect.txt @@ -0,0 +1,9 @@ +moo=["foo"] + +KNOWN_PEERS = [ + "finland.some-host.com:11625", + "germany.some-host.com:11625", + "hongkong.some-host.com:11625", + 32, + true +] diff --git a/test/markup/ini/array.txt b/test/markup/ini/array.txt new file mode 100644 index 0000000000..9d7f488af9 --- /dev/null +++ b/test/markup/ini/array.txt @@ -0,0 +1,10 @@ + +moo=["foo"] + +KNOWN_PEERS = [ + "finland.some-host.com:11625", + "germany.some-host.com:11625", + "hongkong.some-host.com:11625", + 32, + true +] From 3cb40ae01855241162b738c86097fff961ad8130 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 25 Dec 2019 19:18:30 -0500 Subject: [PATCH 2/3] PR number --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 1c474d877d..270fede40f 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -14,7 +14,7 @@ Core Changes: Language Improvements: -- (ini) support arrays, clean up grammar (#) [Josh Goebel][] +- (ini) support arrays, clean up grammar (#2335) [Josh Goebel][] - (vbnet) add nameof operator to the keywords (#2329) [Youssef Victor][] - (stan) updated with improved coverage of language keywords and patterns. (#1829) [Jeffrey Arnold][] From 309d27df61f53411c761d022fbe79ba1f5fdd6e7 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Wed, 25 Dec 2019 19:24:06 -0500 Subject: [PATCH 3/3] tweak --- src/languages/ini.js | 38 +++++++++++++++----------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/src/languages/ini.js b/src/languages/ini.js index 236c5534b5..48ac5e4865 100644 --- a/src/languages/ini.js +++ b/src/languages/ini.js @@ -35,17 +35,10 @@ function(hljs) { className: "string", contains: [hljs.BACKSLASH_ESCAPE], variants: [ - { - begin: "'''", end: "'''", - relevance: 10 - }, { - begin: '"""', end: '"""', - relevance: 10 - }, { - begin: '"', end: '"' - }, { - begin: "'", end: "'" - } + { begin: "'''", end: "'''", relevance: 10 }, + { begin: '"""', end: '"""', relevance: 10 }, + { begin: '"', end: '"' }, + { begin: "'", end: "'" } ] }; var ARRAY = { @@ -74,18 +67,17 @@ function(hljs) { { begin: /^[a-z0-9\[\]_\.-]+(?=\s*=\s*)/, className: 'attr', - starts: - { - end: /$/, - contains: [ - COMMENTS, - ARRAY, - LITERALS, - VARIABLES, - STRINGS, - NUMBERS - ] - } + starts: { + end: /$/, + contains: [ + COMMENTS, + ARRAY, + LITERALS, + VARIABLES, + STRINGS, + NUMBERS + ] + } } ] };