app.set 'zappa_prefix', '/zappa'
for verb in ['get', 'post', 'put', 'del', 'all']
do (verb) ->
context[verb] = (args...) ->
arity = args.length
if arity > 1
route
verb: verb
path: args[0]
middleware: flatten args[1...arity-1]
handler: args[arity-1]
else
for k, v of arguments[0]
route verb: verb, path: k, handler: v
return
context.client = (obj) ->
context.use 'zappa' unless zappa_used
for k, v of obj
js = ";zappa.run(#{v});"
js = minify(js) if app.settings['minify']
route verb: 'get', path: k, handler: js, contentType: 'js'
return
context.coffee = (obj) ->
for k, v of obj
js = ";#{coffeescript_helpers}(#{v})();"
js = minify(js) if app.settings['minify']
route verb: 'get', path: k, handler: js, contentType: 'js'
return
context.js = (obj) ->
for k, v of obj
js = String(v)
js = minify(js) if app.settings['minify']
route verb: 'get', path: k, handler: js, contentType: 'js'
return
context.css = (obj) ->
for k, v of obj
if typeof v is 'object'
coffee_css ?= require 'coffee-css'
css = coffee_css.compile v
else
css = String(v)
route verb: 'get', path: k, handler: css, contentType: 'css'
return
context.with = (obj) ->
zappa_with =
css: (modules) ->
if typeof modules is 'string'
modules = [modules]
for name in modules
module = require(name)
context[name] = (obj) ->
for k, v of obj
module.render v, filename: k, (err, css) ->
throw err if err
route verb: 'get', path: k, handler: css, contentType: 'css'
return
return
for k,v of obj
if zappa_with[k]
zappa_with[k] v
context.helper = (obj) ->
for k, v of obj
helpers[k] = v
return
context.postrender = (obj) ->
jsdom = require 'jsdom'
for k, v of obj
postrenders[k] = v
return
context.on = (obj) ->
for k, v of obj
ws_handlers[k] = v
return
context.view = (obj) ->
for k, v of obj
ext = path.extname k
p = path.join app.get('views'), k