JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
coffeescript, html, less, server
[peach-cgt.git] / server.coffee
1 listen_port = 8333
2 sys = require 'sys'
3 fs = require 'fs'
4 http = require 'http'
5 url = require 'url'
6 less = require 'less'
7 coffee = require 'coffee-script'
8
9 css_handler = (args, out, request, url_parts) ->
10         fs.readFile 'style.less', 'utf8', (err, data) ->
11                 if err
12                         return out.end 'Server failed to read style.less'
13                 less.render data, (err, css) ->
14                         if err
15                                 return out.end "Server failed to make css: #{err}"
16                         out.end css
17
18 js_handler = (args, out, request, url_parts) ->
19         fs.readFile 'client.coffee', 'utf8', (err, data) ->
20                 if err
21                         return out.end 'Server failed to read client.coffee'
22                 out.end coffee.compile data
23
24 html_handler = (args, out, request, url_parts) ->
25         fs.readFile 'index.html', 'utf8', (err, data) ->
26                 if err
27                         return out.end 'Server failed to read index.html'
28                 out.end data
29         
30
31 http_server = http.createServer (req, res) ->
32         url_parts = url.parse req.url, true
33         if url_parts.query is undefined
34                 url_parts.query = {}
35
36         rel_path = url_parts.pathname.substr 1
37
38         if rel_path.substr(rel_path.length - 4) is '.css'
39                 res.writeHead 200, 'Content-Type': 'text/css'
40                 return css_handler url_parts.query, res, req, url_parts
41         else if rel_path.substr rel_path.length - 3 is '.js'
42                 res.writeHead 200, 'Content-Type': 'text/javascript'
43                 return js_handler url_parts.query, res, req, url_parts
44                 
45         return html_handler url_parts.query, res, req, url_parts
46
47 http_server.listen listen_port, "127.0.0.1"
48 console.log "Server running at http://127.0.0.1:#{listen_port}/"