require "net/http" require "uri" version = File.read("VERSION").strip file "lib/pegjs-runtime-#{version}.min.js" => "lib/runtime.js" do |t| response = Net::HTTP.post_form( URI.parse("http://closure-compiler.appspot.com/compile"), { "js_code" => File.read(t.prerequisites.first), "compilation_level" => "SIMPLE_OPTIMIZATIONS", "output_format" => "text", "output_info" => "compiled_code" } ) if response.code != "200" abort "Error calling Google Closure Compiler API: #{response.message}" end File.open(t.name, "w") { |f| f.write(response.body) } end file "lib/metagrammar.js" => "lib/metagrammar.pegjs" do |t| system "bin/pegjs --start grammar PEG.grammarParser lib/metagrammar.pegjs" end desc "Build the minified parser runtime" task :minify => "lib/pegjs-runtime-#{version}.min.js" desc "Generate the grammar parser" task :metaparser => "lib/metagrammar.js"