forked from varvet/serenade.js
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathweb.coffee
35 lines (26 loc) · 1.15 KB
/
web.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
express = require 'express'
fs = require 'fs'
path = require 'path'
CoffeeScript = require 'coffee-script'
app = express.createServer(express.logger())
app.register '.serenade', require('./src/build')
app.get '/', (request, response) ->
examples = fs.readdirSync('examples').map (dir) -> { name: dir, url: "/#{dir}" }
response.render('index.serenade', model: { examples }, layout: false)
app.get '/:name', (request, response) ->
name = request.params.name
title = "Serenade.js example: #{name}"
source = "/src/#{name}"
response.render('show.serenade', model: { name, title, source }, layout: false)
app.get '/src/serenade.js', (request, response) ->
require('./src/build.coffee').Build.minified (code) ->
response.send(code)
app.get '/src/:name.coffee', (request, response) ->
source = fs.readFileSync("./examples/#{request.params.name}.coffee")
coffee = CoffeeScript.compile(source.toString())
response.send(coffee)
app.get '/src/:name.js', (request, response) ->
source = fs.readFileSync("./examples/#{request.params.name}.js")
response.send(source)
port = process.env.PORT || 3000
app.listen port, -> console.log("Listening on " + port)