49 lines
1.1 KiB
TypeScript
49 lines
1.1 KiB
TypeScript
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}`,
|
|
})),
|
|
};
|