mirror of
https://github.com/motion-canvas/motion-canvas.git
synced 2026-01-11 14:57:56 -05:00
fix: code will trigger PrismJS such that JSX is correctly highlighted (#20)
PrismJS relies on the 'after-tokenize' hook in order to clean up tokenization inside of plain text. Otherwise PrismJS will mark `<p>in</p>` as the JavaScript keyword `in`. Fixes #17 Co-authored-by: Ross Esmond <r.esmond@protonmail.com>
This commit is contained in:
@@ -95,7 +95,15 @@ export class Code extends Text {
|
||||
private getTokens(): (PrismJS.Token | string)[] {
|
||||
const language = this.language();
|
||||
if (language in PrismJS.languages) {
|
||||
return PrismJS.tokenize(this.text(), PrismJS.languages[language]);
|
||||
const env = {
|
||||
code: this.text(),
|
||||
grammar: PrismJS.languages[language],
|
||||
language: language,
|
||||
tokens: PrismJS.tokenize(this.text(), PrismJS.languages[language]),
|
||||
};
|
||||
// the after-tokenize hook will update env tokens for the jsx language
|
||||
PrismJS.hooks.run('after-tokenize', env);
|
||||
return env.tokens;
|
||||
} else {
|
||||
console.warn(
|
||||
`Missing language: ${language}.`,
|
||||
|
||||
Reference in New Issue
Block a user