diff --git a/CHANGES.md b/CHANGES.md index 950ce108ff..ca372a2c8b 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -17,6 +17,7 @@ Core Changes: Language Improvements: +- enh(bash) default value is another variable (#2439) [Josh Goebel][] - enh(bash) string nested within string (#2439) [Josh Goebel][] - enh(bash) Add arithmetic expression support (#2439) [Josh Goebel][] - enh(clojure) Add support for global definitions name (#2347) [Alexandre Grison][] diff --git a/src/languages/bash.js b/src/languages/bash.js index 093947df27..27141ea3ca 100644 --- a/src/languages/bash.js +++ b/src/languages/bash.js @@ -7,13 +7,21 @@ Category: common */ export default function(hljs) { - const VAR = { + const VAR = {}; + const BRACKET_VAR = { + begin: /\$\{/, end:/\}/, + contains: [ + { begin: /:-/, contains: [VAR] } // default values + ] + }; + Object.assign(VAR,{ className: 'variable', variants: [ {begin: /\$[\w\d#@][\w\d_]*/}, - {begin: /\$\{(.*?)}/} + BRACKET_VAR ] - }; + }); + const SUBST = { className: 'subst', begin: /\$\(/, end: /\)/, diff --git a/test/markup/bash/variables.expect.txt b/test/markup/bash/variables.expect.txt new file mode 100644 index 0000000000..708b15f2f2 --- /dev/null +++ b/test/markup/bash/variables.expect.txt @@ -0,0 +1,3 @@ +$A +${B} +${WURST:-${CARNE}} diff --git a/test/markup/bash/variables.txt b/test/markup/bash/variables.txt new file mode 100644 index 0000000000..eb89ed0cda --- /dev/null +++ b/test/markup/bash/variables.txt @@ -0,0 +1,3 @@ +$A +${B} +${WURST:-${CARNE}}