@koha-community/prettier-plugin-template-toolkit
Version:
Prettier plugin for formatting Template::Toolkit templates.
50 lines (47 loc) • 1.18 kB
text/typescript
import { regex } from "regex";
export default regex`
(?<node>
# Ignore block
(?<ignoreBlock>
(<!--\s*prettier-ignore-start\s*--> | \[%\#\s*prettier-ignore-start\s*%\])
\g<EVERYTHING>
(<!--\s*prettier-ignore-end\s*--> | \[%\#\s*prettier-ignore-end\s*%\])
)
|
# Comment
(?<comment>\[%\s?\#\g<EVERYTHING>%\])
|
# Statement
\[%
(?<startDelimiter>\g<DELIMITER>?)\s*
(?<statement>
(?<keyword>IF|ELSE|ELSIF|UNLESS|FOREACH|FOR|WHILE|FILTER|WRAPPER|MACRO|BLOCK|\w+\s?=\s?BLOCK|SWITCH|CASE|END)
(?:\s+\g<ESCAPEQUOTES> | \g<ALLSYMBOLS>)*?
)
\s*(?<endDelimiter>\g<DELIMITER>?)
%\]
|
# Expression
\[%
(?<startDelimiterEx>\g<DELIMITER>?)\s*
(?<expression>(?>\g<ESCAPEQUOTES> | \g<ALLSYMBOLS>)*?)
\s*(?<endDelimiterEx>\g<DELIMITER>?)
%\]
|
# Script Block
(?<scriptBlock>
(?<scriptOpeningTag><script(?:\s+[^>]*?)?>)
(?<scriptContent>[\s\S]*?)
(?<scriptClosingTag></script>)
)
|
# Style Block
(?<styleBlock><style\g<EVERYTHING>>\g<EVERYTHING><\/style>\s*)
)
(?(DEFINE)
(?<EVERYTHING> \g<ALLSYMBOLS>*?)
(?<ALLSYMBOLS> [\s\S])
(?<DELIMITER> [\-~])
(?<ESCAPEQUOTES> '[^']*'|"[^"]*")
)
`;