On 8/31/21 8:40 PM, someone wrote:
> On Tuesday, 31 August 2021 at 14:06:32 UTC, Steven Schveighoffer wrote:
> The generation of code to output the page depends on the diet file format (i.e. code islands are designated by the leading -
).
> However, vibe-d does not require using the diet template system.
Does that means I can still get the code islands resolved on a, say, plain-XHTML file ?
Or does that means that I should output HTML/XHTML from my own functions instead ?
Vibe just provides an output range for use in diet. You can use anything, including just writing the data yourself, or using an alternative template system.
> > Given how templating systems work (and how D allows strings to be used as code using mixins), it's likely pretty trivial to write a simple templating system to do this. All you need is an escape protocol that is unlikely to appear in HTML, and you can probably get away with a 10 line function that doesn't need to actually parse the HTML.
Probably. Bit I am not a huge fan of modifying libraries for minor functionality fixes (unless is really really necessary). For whatever reasons I already have custom nginx builds etc etc so I do not want to keep tracking and fixing more software -in the end is a pain-in-the-ass.
You aren't modifying anything. Vibe-d provides default access to diet-ng, but you have no obligation to use it. Just use the output range (HTTPServerResponse.bodyWriter
) and hook up your preferred templating system.
I think you are misunderstanding the architecture of vibe. There is no need to replace anything inside vibe to use a different templating system, it does not depend on diet at all, just provides default access.
The views directory isn't exactly special either (though there may be code in dub that deals with looking at modification times), nor is the extension .dt
.
Most of the diet compiler is dealing with transforming the pug format into HTML, and proper string interpolation. The code island stuff is quite trivial (just copied as-is).
Oh, and I realized I forgot about string interpolation. You definitely want a way to change D expressions into string output. You can still do this with code-islands, but a good template system would handle the boilerplate for you.
Which leads me to -- diet really should be split into 2 parts, one that handles the pug parsing and compiling, and one that handles proper string interpolation. Then you could leverage that second part.
-Steve