This may be a bit "get off of my lawn," but I would never use this. I respect the effort put into making it work, but I have no problem writing
renderTemplate: ->
"div":
"span .some-class":
_: ["Hello, "]
"strong #dyn_id":
_: ["#{@getName()}!"]
"subTemplate":
foo: bar
subTemplate: (args) ->
blockquote:
_: args.foo
getName: ->
"user name from DB or whatever"
(Then hand-rolled my own very simple JSON-to-HTML "renderer" in 20 minutes plus generating a CS class file to be compiled to JS for each template -- all really simple stuff.)Looks scary coming from years of HTML coding right? But HTML looked scary at first too.
Now: stylesheets are Stylus, templates and logic are CoffeeScript both server-side and client-side. I haven't been such a happy coder for a decade. Config files are a simplified Stylus/Coffee-like format that gets transformed to JSON. I'm actually using the CoffeeScript compiler here so in effect each config file gets transformed into a node.js "module". That means they could be turned into config "scripts" if necessary.
What I loved about Lisp in theory: code is data, data is code. Only the parens sucked for me. Now we're approaching this ideal again, slowly and emergently but surely. :)