Inital Commit
[oweals/finalsclub.git] / node_modules / jade / support / coffee-script / Rakefile
1 require 'erb'
2 require 'fileutils'
3 require 'rake/testtask'
4 require 'rubygems'
5 require 'yui/compressor'
6
7 HEADER = <<-EOS
8 /**
9  * CoffeeScript Compiler v0.9.4
10  * http://coffeescript.org
11  *
12  * Copyright 2010, Jeremy Ashkenas
13  * Released under the MIT License
14  */
15 EOS
16
17 desc "Build the documentation page"
18 task :doc do
19   source = 'documentation/index.html.erb'
20   child = fork { exec "bin/coffee -bcw -o documentation/js documentation/coffee/*.coffee" }
21   at_exit { Process.kill("INT", child) }
22   Signal.trap("INT") { exit }
23   loop do
24     mtime = File.stat(source).mtime
25     if !@mtime || mtime > @mtime
26       rendered = ERB.new(File.read(source)).result(binding)
27       File.open('index.html', 'w+') {|f| f.write(rendered) }
28     end
29     @mtime = mtime
30     sleep 1
31   end
32 end
33
34 desc "Build the single concatenated and minified script for the browser"
35 task :browser do
36   sources = %w(helpers rewriter lexer parser scope nodes coffee-script browser)
37   code = sources.inject '' do |js, name|
38     js << <<-"JS"
39       require['./#{name}'] = new function(){
40         var exports = this;
41         #{ File.read "lib/#{name}.js" }
42       }
43     JS
44   end
45   code = YUI::JavaScriptCompressor.new.compress(<<-"JS")
46     this.CoffeeScript = function(){
47       function require(path){ return require[path] }
48       #{ code }
49       return require['./coffee-script']
50     }()
51   JS
52   File.open('extras/coffee-script.js', 'wb+') {|f| f.write(HEADER + code) }
53 end