Skip to content
Find file
Fetching contributors…
Cannot retrieve contributors at this time
66 lines (48 sloc) 1.61 KB
require "rubygems"
require "bundler/setup"
file "lib/handlebars/parser.js" => "src/handlebars.yy" do
system "jison src/handlebars.yy"
sh "mv handlebars.js lib/handlebars/parser.js"
end
task :compile => "lib/handlebars/parser.js"
desc "run the spec suite"
task :spec => [:release] do
system "rspec -cfs spec"
end
task :default => [:compile, :test]
def remove_exports(string)
match = string.match(%r{^// BEGIN\(BROWSER\)\n(.*)\n^// END\(BROWSER\)}m)
match ? match[1] : string
end
minimal_deps = %w(ast jison_ext handlebars_lexer parser runtime utils).map do |file|
"lib/handlebars/#{file}.js"
end
debug_deps = %w(ast jison_ext handlebars_lexer printer parser runtime utils).map do |file|
"lib/handlebars/#{file}.js"
end
minimal_deps << "lib/handlebars.js"
debug_deps << "lib/handlebars.js" << "lib/handlebars/debug.js"
minimal_deps.unshift "dist"
debug_deps.unshift "dist"
def build_for_task(task)
FileUtils.rm_rf("dist/*") if File.directory?("dist")
FileUtils.mkdir_p("dist")
contents = ["var Handlebars = {};"]
task.prerequisites.each do |filename|
next if filename == "dist"
contents << "// #{filename}\n" + remove_exports(File.read(filename)) + ";"
end
File.open(task.name, "w") do |file|
file.puts contents.join("\n")
end
end
file "dist/handlebars.js" => minimal_deps do |task|
build_for_task(task)
end
file "dist/handlebars.debug.js" => debug_deps do |task|
build_for_task(task)
end
task :build => [:compile, "dist/handlebars.js"]
task :debug => [:compile, "dist/handlebars.debug.js"]
desc "build the build and debug versions of handlebars"
task :release => [:build, :debug]
Something went wrong with that request. Please try again.