diff --git a/CHANGES.md b/CHANGES.md index 02d9f8824e..dad7859e26 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,21 +1,21 @@ -## Version 11.9.0 +## Version 11.8.0 New Grammars: - added 3rd party Lang grammar to SUPPORTED_LANGUAGES [AdamRaichu][] -[AdamRaichu]: https://github.com/AdamRaichu - -## Version 11.8.0 - Grammars: +- enh(js/ts) Added support for GraphQL tagged template strings [Ali Ukani][] - enh(javascript) add sessionStorage to list of built-in variables [Jeroen van Vianen][] - enh(http) Add support for HTTP/3 [Rijenkii][] +[AdamRaichu]: https://github.com/AdamRaichu +[Ali Ukani]: https://github.com/ali [Jeroen van Vianen]: https://github.com/morinel [Rijenkii]: https://github.com/rijenkii + ## Version 11.7.0 New Grammars: diff --git a/src/languages/javascript.js b/src/languages/javascript.js index e999cc66fe..12d96612fb 100644 --- a/src/languages/javascript.js +++ b/src/languages/javascript.js @@ -158,6 +158,19 @@ export default function(hljs) { subLanguage: 'css' } }; + const GRAPHQL_TEMPLATE = { + begin: 'gql`', + end: '', + starts: { + end: '`', + returnEnd: false, + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ], + subLanguage: 'graphql' + } + }; const TEMPLATE_STRING = { className: 'string', begin: '`', @@ -219,6 +232,7 @@ export default function(hljs) { hljs.QUOTE_STRING_MODE, HTML_TEMPLATE, CSS_TEMPLATE, + GRAPHQL_TEMPLATE, TEMPLATE_STRING, // Skip numbers when they are part of a variable name { match: /\$\d+/ }, @@ -453,6 +467,7 @@ export default function(hljs) { hljs.QUOTE_STRING_MODE, HTML_TEMPLATE, CSS_TEMPLATE, + GRAPHQL_TEMPLATE, TEMPLATE_STRING, COMMENT, // Skip numbers when they are part of a variable name diff --git a/test/markup/javascript/inline-languages.expect.txt b/test/markup/javascript/inline-languages.expect.txt index 0083820627..61b1dd0297 100644 --- a/test/markup/javascript/inline-languages.expect.txt +++ b/test/markup/javascript/inline-languages.expect.txt @@ -20,5 +20,15 @@ css` } `; +gql`query { viewer { id } }`; + +gql` + type Project { + name: String + tagline: String + contributors: [User] + } +`; + // Ensure that we're back in JavaScript mode. var foo = 10; diff --git a/test/markup/javascript/inline-languages.txt b/test/markup/javascript/inline-languages.txt index 0b9989ad5e..8f85860fa2 100644 --- a/test/markup/javascript/inline-languages.txt +++ b/test/markup/javascript/inline-languages.txt @@ -20,5 +20,15 @@ css` } `; +gql`query { viewer { id } }`; + +gql` + type Project { + name: String + tagline: String + contributors: [User] + } +`; + // Ensure that we're back in JavaScript mode. var foo = 10; diff --git a/test/markup/typescript/inline-languages.expect.txt b/test/markup/typescript/inline-languages.expect.txt index 38d86a73ed..20fd337ebe 100644 --- a/test/markup/typescript/inline-languages.expect.txt +++ b/test/markup/typescript/inline-languages.expect.txt @@ -20,5 +20,15 @@ css` } `; +gql`query { viewer { id } }`; + +gql` + type Project { + name: String + tagline: String + contributors: [User] + } +`; + // Ensure that we're back in TypeScript mode. var foo = 10; diff --git a/test/markup/typescript/inline-languages.txt b/test/markup/typescript/inline-languages.txt index 1cbead6d79..5901c744fc 100644 --- a/test/markup/typescript/inline-languages.txt +++ b/test/markup/typescript/inline-languages.txt @@ -20,5 +20,15 @@ css` } `; +gql`query { viewer { id } }`; + +gql` + type Project { + name: String + tagline: String + contributors: [User] + } +`; + // Ensure that we're back in TypeScript mode. var foo = 10;