thermos is a templating engine that lets you write HTML templates in CoffeeScript.
It's a branch of CoffeeMugg, a branch of CoffeeKup.
thermos = require 'thermos'
thermos.render ->
@doctype 5
@html ->
@head ->
@title "hello"
@js "main"
@body ->
@p "Hello world!"
HTML entities are automatically encoded for you. Writing this:
thermos.render ->
@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>
.
thermos = require 'thermos'
thermos.configure
helpers :
header_link : (text, url) ->
@h1 ->
@link_to text, url
thermos.render ->
@doctype 5
@html ->
@head ->
@title "hello"
@js "main"
@body ->
@header_link "Hello world!", "/"
@div "#content"
@p "foobar"
thermos = require 'thermos'
options =
helpers :
header_link : (text, url) ->
@h1 ->
@link_to text, url
thermos.render options, ->
@doctype 5
@html ->
@head ->
@title "hello"
@js "main"
@body ->
@header_link "Hello world!", "/"
@div "#content"
@p "foobar"
Currently, thermos includes @js
, @css
, and @link_to
helpers by default.
@link_to text, url
@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
CoffeeKup breaks closures. Extending CoffeeMugg isn't as nice as I'd like.
thermos uses mocha for running tests.
$ npm install
$ mocha
$ npm install thermos
jaekwon, for CoffeeMugg. mauricemach, for CoffeeKup.
Don't kill me, both.