thermos
thermos is a templating engine that lets you write HTML templates in CoffeeScript.
It's a branch of CoffeeMugg, a branch of CoffeeKup.
Usage
thermos = require 'thermos' thermosrender -> @doctype 5 @html -> @head -> @title "hello" @js "main" @body -> @p "Hello world!"
HTML entities
HTML entities are automatically encoded for you. Writing this:
thermosrender -> @h1 -> @span '<b>—&</b>"\'—hi'
will produce <h1><span>>b<—&>/b<"'—hi</span></h1>
You can use @html_safe
to prevent Thermos from auto-encoding entities for you. For example, @span @html_safe '<b>—&</b>"\''
will output <h1><span><b>—&</b>"\'</span></h1>
.
Extending thermos
Configuration
thermos = require 'thermos' thermosconfigure helpers : : @h1 -> @link_to texturl thermosrender -> @doctype 5 @html -> @head -> @title "hello" @js "main" @body -> @header_link "Hello world!""/" @div "#content" @p "foobar"
Passing options
thermos = require 'thermos' options = helpers : : @h1 -> @link_to texturl thermosrender options-> @doctype 5 @html -> @head -> @title "hello" @js "main" @body -> @header_link "Hello world!""/" @div "#content" @p "foobar"
Default helpers
Currently, thermos includes @js
, @css
, and @link_to
helpers by default.
@link_to texturl@js url@css url @link_to "click here""#anchor"@link_to "click here""http://example.com"@link_to "click here""/about" @js "jquery"@js "jquery.min"@js "jquery.min.js"@js "/vendor/jquery.min"@js "/vendor/jquery.min.js"@js "http://example.com/jquery"@js "http://example.com/jquery.js" @css "main"@css "main.css"# same as @js
Why thermos?
CoffeeKup breaks closures. Extending CoffeeMugg isn't as nice as I'd like.
Test
thermos uses mocha for running tests.
$ npm install$ mocha
Installation
$ npm install thermos
Thanks to
jaekwon, for CoffeeMugg. mauricemach, for CoffeeKup.
Don't kill me, both.