remove check for the statement keyword
The check was removed because the jinja language can be extended with new keywords.
This commit is contained in:
parent
9db2105728
commit
0e85c48fad
4 changed files with 11 additions and 28 deletions
26
src/jinja.ts
26
src/jinja.ts
|
@ -22,7 +22,7 @@ export type Delimiter = "" | "-" | "+";
|
||||||
|
|
||||||
export interface Statement extends Node {
|
export interface Statement extends Node {
|
||||||
type: "statement";
|
type: "statement";
|
||||||
keyword: Keyword;
|
keyword: string;
|
||||||
delimiter: Delimiter;
|
delimiter: Delimiter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,30 +36,6 @@ export interface IgnoreBlock extends Node {
|
||||||
type: "ignore";
|
type: "ignore";
|
||||||
}
|
}
|
||||||
|
|
||||||
export type Keyword =
|
|
||||||
| "for"
|
|
||||||
| "endfor"
|
|
||||||
| "if"
|
|
||||||
| "else"
|
|
||||||
| "elif"
|
|
||||||
| "endif"
|
|
||||||
| "macro"
|
|
||||||
| "endmacro"
|
|
||||||
| "call"
|
|
||||||
| "endcall"
|
|
||||||
| "filter"
|
|
||||||
| "endfilter"
|
|
||||||
| "set"
|
|
||||||
| "endset"
|
|
||||||
| "include"
|
|
||||||
| "import"
|
|
||||||
| "from"
|
|
||||||
| "extends"
|
|
||||||
| "block"
|
|
||||||
| "endblock"
|
|
||||||
| "with"
|
|
||||||
| "endwith";
|
|
||||||
|
|
||||||
export const nonClosingStatements = [
|
export const nonClosingStatements = [
|
||||||
"else",
|
"else",
|
||||||
"elif",
|
"elif",
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import { Parser } from "prettier";
|
import { Parser } from "prettier";
|
||||||
import {
|
import {
|
||||||
Delimiter,
|
Delimiter,
|
||||||
Keyword,
|
|
||||||
Node,
|
Node,
|
||||||
Placeholder,
|
Placeholder,
|
||||||
Statement,
|
Statement,
|
||||||
|
@ -12,7 +11,7 @@ import {
|
||||||
const NOT_FOUND = -1;
|
const NOT_FOUND = -1;
|
||||||
|
|
||||||
const regex =
|
const regex =
|
||||||
/(?<pre>(?<newline>\n)?(\s*?))(?<node>{{\s*(?<expression>'([^']|\\')*'|"([^"]|\\")*"|[\S\s]*?)\s*}}|{%(?<startDelimiter>[-+]?)\s*(?<statement>(?<keyword>for|endfor|if|else|elif|endif|macro|endmacro|call|endcall|filter|endfilter|set|endset|include|import|from|extends|block|endblock|with|endwith)('([^']|\\')*'|"([^"]|\\")*"|[\S\s])*?)\s*(?<endDelimiter>[-+]?)%}|(?<comment>{#[\S\s]*?#})|(?<scriptBlock><(script)((?!<)[\s\S])*>((?!<\/script)[\s\S])*?{{[\s\S]*?<\/(script)>)|(?<styleBlock><(style)((?!<)[\s\S])*>((?!<\/style)[\s\S])*?{{[\s\S]*?<\/(style)>)|(?<ignoreBlock><!-- prettier-ignore-start -->[\s\S]*<!-- prettier-ignore-end -->))/;
|
/(?<pre>(?<newline>\n)?(\s*?))(?<node>{{\s*(?<expression>'([^']|\\')*'|"([^"]|\\")*"|[\S\s]*?)\s*}}|{%(?<startDelimiter>[-+]?)\s*(?<statement>(?<keyword>\w+)('([^']|\\')*'|"([^"]|\\")*"|[\S\s])*?)\s*(?<endDelimiter>[-+]?)%}|(?<comment>{#[\S\s]*?#})|(?<scriptBlock><(script)((?!<)[\s\S])*>((?!<\/script)[\s\S])*?{{[\s\S]*?<\/(script)>)|(?<styleBlock><(style)((?!<)[\s\S])*>((?!<\/style)[\s\S])*?{{[\s\S]*?<\/(style)>)|(?<ignoreBlock><!-- prettier-ignore-start -->[\s\S]*<!-- prettier-ignore-end -->))/;
|
||||||
|
|
||||||
export const parse: Parser<Node>["parse"] = (text) => {
|
export const parse: Parser<Node>["parse"] = (text) => {
|
||||||
const statementStack: Statement[] = [];
|
const statementStack: Statement[] = [];
|
||||||
|
@ -86,7 +85,7 @@ export const parse: Parser<Node>["parse"] = (text) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (statement) {
|
if (statement) {
|
||||||
const keyword = match.groups.keyword as Keyword;
|
const keyword = match.groups.keyword;
|
||||||
const delimiter = (match.groups.startDelimiter ||
|
const delimiter = (match.groups.startDelimiter ||
|
||||||
match.groups.endDelimiter) as Delimiter;
|
match.groups.endDelimiter) as Delimiter;
|
||||||
|
|
||||||
|
|
3
test/cases/statement_unknown/expected.html
Normal file
3
test/cases/statement_unknown/expected.html
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{% foo %}
|
||||||
|
<h1>Hello</h1>
|
||||||
|
{% endfoo %}
|
5
test/cases/statement_unknown/input.html
Normal file
5
test/cases/statement_unknown/input.html
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{%foo %}
|
||||||
|
<h1>Hello</h1>
|
||||||
|
{% endfoo
|
||||||
|
|
||||||
|
%}
|
Loading…
Reference in a new issue