import embeddedLanguages from '../embeddedLanguages.mjs'; import {merge, scopes} from '../util.mjs'; const elements = merge(embeddedLanguages.map(embeddedLanguage => ({ [`tagged-template-literal-block-${embeddedLanguage.id}`]: { begin: `(${embeddedLanguage.tags.join('|')})(\`)`, end: '`', beginCaptures: { 1: { name: scopes( 'entity.name.function.tagged-template.js', 'entity.name.embedded-source', ), }, 2: { name: scopes( 'string.template.js', 'punctuation.definition.string.template.begin.js', 'punctuation.definition.embedded-source.begin', ), }, }, endCaptures: { 0: { name: scopes( 'string.template.js', 'punctuation.definition.string.template.end.js', 'punctuation.definition.embedded-source.end', ), }, }, contentName: embeddedLanguage.embedScopeBlock, patterns: [ { include: embeddedLanguage.sourceScope, }, ], }, }))); export default { scopeName: 'embedded-string-highlighting.injection', injectionSelector: 'L:source.js -string -comment', repository: elements, patterns: Object.keys(elements).map(ruleKey => ({ include: `#${ruleKey}`, })), };