diff --git a/config.json b/config.json index 53f73a1..02d96dc 100644 --- a/config.json +++ b/config.json @@ -8,35 +8,50 @@ "mainDescription": "bold", "exampleDescription": "", "exampleCode": "", - "exampleToken": "underline" + "exampleToken": "underline", + "exampleNumber": "yellow, bold", + "exampleString": "green, italic", + "exampleBool": "magenta, bold" }, "base16": { "commandName": "bold", "mainDescription": "", "exampleDescription": "green", "exampleCode": "red", - "exampleToken": "cyan" + "exampleToken": "cyan", + "exampleNumber": "yellow, bold", + "exampleString": "green, italic", + "exampleBool": "magenta, bold" }, "ocean": { "commandName": "bold, cyan", "mainDescription": "", "exampleDescription": "green", "exampleCode": "cyan", - "exampleToken": "dim" + "exampleToken": "dim", + "exampleNumber": "yellow, bold", + "exampleString": "green, italic", + "exampleBool": "magenta, bold" }, "inverse": { "commandName": "bold, inverse", "mainDescription": "inverse", "exampleDescription": "black", "exampleCode": "inverse", - "exampleToken": "green, bgBlack, inverse" + "exampleToken": "green, bgBlack, inverse", + "exampleNumber": "yellow, bold", + "exampleString": "green, italic", + "exampleBool": "magenta, bold" }, "matrix": { "commandName": "bold", "mainDescription": "underline", "exampleDescription": "green, bgBlack", "exampleCode": "green, bgBlack", - "exampleToken": "green, bold, bgBlack" + "exampleToken": "green, bold, bgBlack", + "exampleNumber": "yellow, bold", + "exampleString": "green, italic", + "exampleBool": "magenta, bold" } }, "theme": "simple" diff --git a/lib/theme.js b/lib/theme.js index 127bfd5..553fe90 100644 --- a/lib/theme.js +++ b/lib/theme.js @@ -53,14 +53,21 @@ class Theme { if (!this.hasDistinctStylesForTypes()) return this.getStylingFunction(tokenName)(text); + let baseStyle = this.theme[tokenName] || ''; + let typeStyle = ''; + if (!Number.isNaN(Number(text))) - tokenName = 'exampleNumber'; - if (Number.isNaN(Number(text))) - tokenName = 'exampleString'; - if (/true|false/.test(text)) - tokenName = 'exampleBool'; + typeStyle = this.theme['exampleNumber']; + else if (/true|false/.test(text)) + typeStyle = this.theme['exampleBool']; + else + typeStyle = this.theme['exampleString']; + + let combinedStyle = baseStyle ? + baseStyle + (typeStyle ? ', ' + typeStyle : '') : + typeStyle; - return this.getStylingFunction(tokenName)(text); + return buildStylingFunction(combinedStyle)(text); } }