prettier-plugin-jinja-template
Version:
Prettier plugin for formatting jinja templates.
49 lines (46 loc) • 1.08 kB
text/typescript
import { regex } from "regex";
export default regex`
(?<node>
# Expression
\{\{
(?<startDelimiterEx>\g<DELIMITER>?)\s*
(?<expression>(?>\g<ESCAPEQUOTES> | \g<ALLSYMBOLS>)*?)
\s*(?<endDelimiterEx>\g<DELIMITER>?)
\}\}
|
# Statement
\{%
(?<startDelimiter>\g<DELIMITER>?)\s*
(?<statement>
(?<keyword>\w+)
(?>\g<ESCAPEQUOTES> | \g<ALLSYMBOLS>)*?
)
\s*(?<endDelimiter>\g<DELIMITER>?)
%\}
|
# 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>\{\#\g<EVERYTHING>\#\})
|
# HTML Comment
(?<htmlComment><!--\g<EVERYTHING>-->\s*)
|
# Script Block
(?<scriptBlock><script\g<EVERYTHING>>\g<EVERYTHING><\/script>\s*)
|
# Style Block
(?<styleBlock><style\g<EVERYTHING>>\g<EVERYTHING><\/style>\s*)
)
(?(DEFINE)
(?<EVERYTHING> \g<ALLSYMBOLS>*?)
(?<ALLSYMBOLS> [\s\S])
(?<DELIMITER> [\-+])
(?<ESCAPEQUOTES> '[^']*'|"[^"]*")
)
`;