You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.8 KiB
68 lines
1.8 KiB
require 'rake'
|
|
require 'rake/clean'
|
|
|
|
task :default => :test
|
|
|
|
ROOT = File.expand_path('..', __FILE__)
|
|
MUSTACHE_JS = File.read(File.join(ROOT, 'mustache.js'))
|
|
|
|
def mustache_version
|
|
match = MUSTACHE_JS.match(/exports\.version = "([^"]+)";/)
|
|
match[1]
|
|
end
|
|
|
|
def minified_file
|
|
ENV['FILE'] || 'mustache.min.js'
|
|
end
|
|
|
|
desc "Run all tests, requires vows (see http://vowsjs.org)"
|
|
task :test do
|
|
sh "vows --spec"
|
|
end
|
|
|
|
desc "Minify to #{minified_file}, requires UglifyJS (see http://marijnhaverbeke.nl/uglifyjs)"
|
|
task :minify do
|
|
sh "uglifyjs mustache.js > #{minified_file}"
|
|
end
|
|
|
|
desc "Run JSHint, requires jshint (see http://www.jshint.com)"
|
|
task :lint do
|
|
sh "jshint mustache.js"
|
|
end
|
|
|
|
# Creates a task that uses the various template wrappers to make a wrapped
|
|
# output file. There is some extra complexity because Dojo and YUI use
|
|
# different final locations.
|
|
def templated_build(name, opts={})
|
|
short = name.downcase
|
|
source = File.join("wrappers", short)
|
|
dependencies = ["mustache.js"] + Dir.glob("#{source}/*.tpl.*")
|
|
target_js = opts[:location] ? "mustache.js" : "#{short}.mustache.js"
|
|
|
|
CLEAN.include(opts[:location] ? opts[:location] : target_js)
|
|
|
|
desc "Package for #{name}"
|
|
task short.to_sym => dependencies do
|
|
puts "Packaging for #{name}"
|
|
|
|
mkdir_p opts[:location] if opts[:location]
|
|
|
|
files = [
|
|
"#{source}/mustache.js.pre",
|
|
'mustache.js',
|
|
"#{source}/mustache.js.post"
|
|
]
|
|
|
|
open("#{opts[:location] || '.'}/#{target_js}", 'w') do |f|
|
|
files.each {|file| f << File.read(file) }
|
|
end
|
|
|
|
puts "Done, see #{opts[:location] || '.'}/#{target_js}"
|
|
end
|
|
end
|
|
|
|
templated_build "jQuery"
|
|
templated_build "MooTools"
|
|
templated_build "Dojo", :location => "dojox/string"
|
|
templated_build "YUI3", :location => "yui3/mustache"
|
|
templated_build "qooxdoo"
|