Skip to content

Extending the if/unless helpers #595

@ammmze

Description

@ammmze

I'm just barely starting to dig into this library, but i'm attempting to simulate the helpers that mandrill uses. Specifically, wanting to support their if expressions.

But haven't been able to get too far yet because I blow up with syntax errors with the backticks. I haven't written a helper yet since I need to get past the syntax piece first.

Here's my simple test.

assertEquals("Foo: is bar", handlebars.compileInline("Foo: {{#if `foo == "bar"`}}is bar{{/if}}").apply(new HashMap<String, String>(){{
            put("foo", "bar");
        }}));

Which yields this stack trace...

com.github.jknack.handlebars.HandlebarsException: inline@33185c00:1:11: found: '`'
Foo: {{#if `foo == "bar"`}}is bar{{/if}}
           ^


	at com.github.jknack.handlebars.internal.HbsErrorReporter.syntaxError(HbsErrorReporter.java:93)
	at org.antlr.v4.runtime.ProxyErrorListener.syntaxError(ProxyErrorListener.java:65)
	at com.github.jknack.handlebars.internal.HbsParserFactory$2.notifyListeners(HbsParserFactory.java:148)
	at org.antlr.v4.runtime.Lexer.nextToken(Lexer.java:168)
	at org.antlr.v4.runtime.BufferedTokenStream.fetch(BufferedTokenStream.java:185)
	at org.antlr.v4.runtime.BufferedTokenStream.sync(BufferedTokenStream.java:168)
	at org.antlr.v4.runtime.BufferedTokenStream.consume(BufferedTokenStream.java:152)
	at org.antlr.v4.runtime.Parser.consume(Parser.java:593)
	at org.antlr.v4.runtime.Parser.match(Parser.java:226)
	at com.github.jknack.handlebars.internal.HbsParser.sexpr(HbsParser.java:884)
	at com.github.jknack.handlebars.internal.HbsParser.block(HbsParser.java:657)
	at com.github.jknack.handlebars.internal.HbsParser.statement(HbsParser.java:336)
	at com.github.jknack.handlebars.internal.HbsParser.body(HbsParser.java:222)
	at com.github.jknack.handlebars.internal.HbsParser.template(HbsParser.java:165)
	at com.github.jknack.handlebars.internal.HbsParserFactory$1.parse(HbsParserFactory.java:84)
	at com.github.jknack.handlebars.cache.NullTemplateCache.get(NullTemplateCache.java:54)
	at com.github.jknack.handlebars.Handlebars.compile(Handlebars.java:414)
	at com.github.jknack.handlebars.Handlebars.compileInline(Handlebars.java:384)
	at com.github.jknack.handlebars.Handlebars.compileInline(Handlebars.java:368)
	at com.example.handlebars.HandlebarsImplTest.testIfExpression(HandlebarsImplTest.java:39)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions