You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.5 KiB
63 lines
1.5 KiB
(function (Prism) { |
|
Prism.languages.latte = { |
|
'comment': /^\{\*[\s\S]*/, |
|
'latte-tag': { |
|
// https://latte.nette.org/en/tags |
|
pattern: /(^\{(?:\/(?=[a-z]))?)(?:[=_]|[a-z]\w*\b(?!\())/i, |
|
lookbehind: true, |
|
alias: 'important' |
|
}, |
|
'delimiter': { |
|
pattern: /^\{\/?|\}$/, |
|
alias: 'punctuation' |
|
}, |
|
'php': { |
|
pattern: /\S(?:[\s\S]*\S)?/, |
|
alias: 'language-php', |
|
inside: Prism.languages.php |
|
} |
|
}; |
|
|
|
var markupLatte = Prism.languages.extend('markup', {}); |
|
Prism.languages.insertBefore('inside', 'attr-value', { |
|
'n-attr': { |
|
pattern: /n:[\w-]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+))?/, |
|
inside: { |
|
'attr-name': { |
|
pattern: /^[^\s=]+/, |
|
alias: 'important' |
|
}, |
|
'attr-value': { |
|
pattern: /=[\s\S]+/, |
|
inside: { |
|
'punctuation': [ |
|
/^=/, |
|
{ |
|
pattern: /^(\s*)["']|["']$/, |
|
lookbehind: true |
|
} |
|
], |
|
'php': { |
|
pattern: /\S(?:[\s\S]*\S)?/, |
|
inside: Prism.languages.php |
|
} |
|
} |
|
}, |
|
} |
|
}, |
|
}, markupLatte.tag); |
|
|
|
Prism.hooks.add('before-tokenize', function (env) { |
|
if (env.language !== 'latte') { |
|
return; |
|
} |
|
var lattePattern = /\{\*[\s\S]*?\*\}|\{[^'"\s{}*](?:[^"'/{}]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|\/\*(?:[^*]|\*(?!\/))*\*\/)*\}/g; |
|
Prism.languages['markup-templating'].buildPlaceholders(env, 'latte', lattePattern); |
|
env.grammar = markupLatte; |
|
}); |
|
|
|
Prism.hooks.add('after-tokenize', function (env) { |
|
Prism.languages['markup-templating'].tokenizePlaceholders(env, 'latte'); |
|
}); |
|
|
|
}(Prism));
|
|
|