-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.coffee
61 lines (49 loc) · 1.37 KB
/
app.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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# My app
rand = (max) -> Math.ceil(Math.random()*max)
generateDiceArray = (faces, num=1) ->
console.log "#{num}d#{faces}"
rand(faces) for i in [1..num]
make = (req, res) ->
dices = generateDiceArray(
parseInt(req.params.faces),
parseInt(req.params.num)
)
data =
num: req.params.num
faces: req.params.faces
dices: dices
sum: dices.reduce (x,y) -> x + y
res.format
html: -> res.render 'dices', data
text: -> res.send "#{data.dices.join(' + ')} = #{data.sum}"
json: -> res.send data
# Express
express = require('express')
blade = require('blade')
stylus = require('stylus')
nib = require('nib')
app = express()
app.set 'title', 'Rándomer'
app.set 'view engine', 'blade'
app.use express.logger()
app.use blade.middleware(__dirname + '/views')
app.use stylus.middleware
src: __dirname + '/views',
dest: __dirname + '/static',
compile: (str, path) ->
stylus(str)
.set('filename', path)
.set('compress', true)
.use(nib())
.import('nib')
app.use express.static(__dirname + '/static')
params = require('express-params')
params.extend(app);
app.get '/', (req, res) -> res.redirect "/#{rand(10)}d#{rand(10)}"
numRegEx = /^[123456789]\d*$/
app.param 'faces', numRegEx
app.param 'num', numRegEx
app.get '/:faces', make
app.get '/(:num)d(:faces)', make
app.get '/(:num)/(:faces)', make
app.listen(process.env.PORT)