We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Looks like jinja2cpp just doesn't match the spec here on parsing dict/map literals. https://jinja.palletsprojects.com/en/2.10.x/templates/#literals
Here's what works in Python (but doesn't work with jinja2cpp).
{% set foo = {"bar":"baz"} %}
Here's what currently works in jinja2cpp (but doesn't work with Python).
{% set foo = {"bar"="baz"} %}
Here's the local code changes I made to make jinja2cpp behave the same as Python and match the docs/spec.
diff --git a/jinja2cpp/src/expression_parser.cpp b/jinja2cpp/src/expression_parser.cpp --- a/jinja2cpp/src/expression_parser.cpp +++ b/jinja2cpp/src/expression_parser.cpp @@ -395,11 +395,11 @@ if (key != Token::String) return MakeParseError(ErrorCode::ExpectedStringLiteral, key); - if (!lexer.EatIfEqual('=')) + if (!lexer.EatIfEqual(':')) { auto tok = lexer.PeekNextToken(); auto tok1 = tok; - tok1.type = Token::Assign; + tok1.type = Token::Colon; return MakeParseError(ErrorCode::ExpectedToken, tok, {tok1}); } diff --git a/jinja2cpp/src/lexer.h b/jinja2cpp/src/lexer.h --- a/jinja2cpp/src/lexer.h +++ b/jinja2cpp/src/lexer.h @@ -37,6 +37,7 @@ RCrlBracket = '}', Assign = '=', Comma = ',', + Colon = ':', Eof = 256, // General diff --git a/jinja2cpp/src/template_parser.h b/jinja2cpp/src/template_parser.h --- a/jinja2cpp/src/template_parser.h +++ b/jinja2cpp/src/template_parser.h @@ -1017,6 +1017,7 @@ { Token::RCrlBracket, UNIVERSAL_STR("}") }, { Token::Assign, UNIVERSAL_STR("=") }, { Token::Comma, UNIVERSAL_STR(",") }, + { Token::Colon, UNIVERSAL_STR(":") }, { Token::Eof, UNIVERSAL_STR("<<End of block>>") }, { Token::Equal, UNIVERSAL_STR("==") }, { Token::NotEqual, UNIVERSAL_STR("!=") },
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Looks like jinja2cpp just doesn't match the spec here on parsing dict/map literals.
https://jinja.palletsprojects.com/en/2.10.x/templates/#literals
Here's what works in Python (but doesn't work with jinja2cpp).
Here's what currently works in jinja2cpp (but doesn't work with Python).
Here's the local code changes I made to make jinja2cpp behave the same as Python and match the docs/spec.
The text was updated successfully, but these errors were encountered: