(function (Prism) { function createBlock(prefix, inside, contentAlias) { return { pattern: RegExp('<#' + prefix + '[\\s\\S]*?#>'), alias: 'block', inside: { 'delimiter': { pattern: RegExp('^<#' + prefix + '|#>$'), alias: 'important' }, 'content': { pattern: /[\s\S]+/, inside: inside, alias: contentAlias } } }; } function createT4(insideLang) { var grammar = Prism.languages[insideLang]; var className = 'language-' + insideLang; return { 'block': { pattern: /<#[\s\S]+?#>/, inside: { 'directive': createBlock('@', { 'attr-value': { pattern: /=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/, inside: { 'punctuation': /^=|^["']|["']$/ } }, 'keyword': /\b\w+(?=\s)/, 'attr-name': /\b\w+/ }), 'expression': createBlock('=', grammar, className), 'class-feature': createBlock('\\+', grammar, className), 'standard': createBlock('', grammar, className) } } }; } Prism.languages['t4-templating'] = Object.defineProperty({}, 'createT4', { value: createT4 }); }(Prism));