BedSheet Moustache is a simple Fantom library that integrates Mustache templates with the BedSheet web framework.
It provides a cache for your compiled Mustache templates and throws MoustacheErrs to show details of compilation failures.
Install BedSheet Moustache
with the Fantom Repository Manager ( fanr ):
C:\> fanr install -r http://pods.fantomfactory.org/fanr/ afBedSheetMoustache
To use in a Fantom project, add a dependency to build.fan
:
depends = ["sys 1.0", ..., "afBedSheetMoustache 1.0"]
Full API & fandocs are available on the Fantom Pod Repository.
using afIoc::Inject
using afBedSheet::Text
using afBedSheetMoustache::MoustacheTemplates
const class RouteHandler {
@Inject
private const MoustacheTemplates templates
new make(|This|in) { in(this) }
Text renderPage() {
html := templates.renderFromFile(`res/index.moustache`.toFile)
return Text.fromHtml(html)
}
}
Mustache template errors are pretty printed with a snippet of the source code in error:
Moustache Compilation Err:
file:/C:/Projects/Fantom/BedSheetMoustache/test/app/compilationErr.moustache : Line 11
- Unbalanced "{" in tag "{ alienHeadSvg } <span class="brand">{{ title"
6: {{{ bedSheetCss }}}
7: </style>
8: </head>
9: <body>
10: <header>
==> 11: {{{ alienHeadSvg }
12: <span class="brand">{{ title }}</span>
13: </header>
14:
15: <main>
16: {{{ content }}}
Sections are also added to the standard BedSheet Err page to show the same.