You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

33 lines
938 B
Ruby

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"