Temple templates with vibe.d support and first D experiences
John Colvin via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed Mar 18 06:14:04 PDT 2015
On Wednesday, 18 March 2015 at 08:13:37 UTC, István Zólyomi wrote:
> Hi,
>
> I've been lurking around in the forums for quite a long time
> now, but only recently tried D for a bit more than some trivial
> experimentation. Though the documentation of external libraries
> and the tooling itself is far from a commercial solution in
> quality, I understand that it's a community effort, so my
> experience is good in overall.
>
> I really like what I've seen of vibe.d so far. The only strange
> part was Diet templates: though the concept is not bad at all,
> it's not practical. Unless you're also a good web designer, you
> usually start from existing HTML templates, using Diet
> templates would require a complete rewrite in such cases.
>
> I've seen in some forums that the Temple template engine may be
> more practical in such cases and it has vibe.d support, so I
> gave it a try. I have the following function mapped to some URL:
>
> void hello(HTTPServerRequest req, HTTPServerResponse res)
> {
> auto ctx = new TempleContext;
> ctx.username = "testing";
>
> // Gives compile error
> // renderTemple!("Hello <%= var.username %>")(res, ctx);
>
> // I'd expect this behaves the same, but works fine
> string content = compile_temple!("Hello <%= var.username
> %>").toString(ctx);
> res.writeBody(content);
> }
>
> In the code above, function renderTemplate() gives the
> following compile error which I could not solve so far:
>
> Compiling using dmd...
> Compiling Temple with Vibed support
> TempleFunc-mixin-1(51): Error: static assert "Filter does not
> have a case that accepts a VariantN!32LU"
> TempleFunc-mixin-1(17): instantiated from here:
> __temple_buff_filtered_put!(VariantN!32LU)
> ../../../.dub/packages/temple-0.7.3/src/temple/package.d:47:
> InlineTemplate(1): instantiated from here:
> __temple_put_expr!(VariantN!32LU)
> src/temple/temple.d(77): instantiated from here:
> TempleFunc!(TempleHtmlFilter)
> ../../../.dub/packages/temple-0.7.3/src/temple/package.d(43):
> ... (2 instantiations, -v to show) ...
> ../../../.dub/packages/temple-0.7.3/src/temple/vibe.d(53):
> instantiated from here: Temple!("Hello <%= var.username %>",
> TempleHtmlFilter)
> source/app.d(...): instantiated from here:
> renderTemple!("Hello <%= var.username %>", TempleContext)
>
> I'm using dub to build and run the application. Am I doing
> something wrong here, or is it something environmental like a
> library version conflict or wrong D deployment?
>
> thanks
> István
which dmd version?
More information about the Digitalmars-d-learn
mailing list