Skip to content

Instantly share code, notes, and snippets.

@ppcano
Created January 19, 2012 11:35
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ppcano/1639521 to your computer and use it in GitHub Desktop.
Save ppcano/1639521 to your computer and use it in GitHub Desktop.
assetfile
require "rake-pipeline-web-filters"
require "json"
class HandlebarsFilter < Rake::Pipeline::Filter
def initialize(&block)
block ||= proc { |input| input.sub(/\.handlebars$/, '.js') }
super(&block)
end
def generate_output(inputs, output)
inputs.each do |input|
name = File.basename(input.path, '.handlebars')
output.write "Ember.TEMPLATES['#{name}'] = Ember.Handlebars.compile(#{input.read.to_json});"
#output.write "return Ember.Handlebars.compile(#{input.read.to_json})"
end
end
end
input "packages"
input "templates"
input "app"
output "source"
# also include app, it could be improved
match "*/lib/**/*.js" do
minispade :rewrite_requires => true, :module_id_generator => proc { |input|
id = input.path.dup
id.sub!('/lib/', '/')
id.sub!(/\.js$/, '')
id.sub!(/\/main$/, '')
#id.sub!('/tests', '/~tests')
id
}
filter ConcatFilter, "packages.js"
end
match "ember-mk/css/*.css" do
filter ConcatFilter, "ember-mk.css"
end
match "*.handlebars" do
filter HandlebarsFilter
#minispade :module_id_generator => proc { |input| File.basename(input.fullpath, ".js") + "_template" }
concat "templates.js"
end
# Hack to ignore certain files and not being placed at output directory
match "*/tests/**/*.js" do
filter ConcatFilter, "trash"
end
match "**/*.{json,md}" do
filter ConcatFilter, "trash"
end
match "**/README" do
filter ConcatFilter, "trash"
end
match "*/*.js" do
filter ConcatFilter, "trash"
end
# vim: filetype=ruby
</body>
</html>
<script type="text/javascript">
minispade.require('handlebars');
minispade.require('ember-metal');
minispade.require('ember-runtime');
minispade.require('ember-views');
minispade.require('ember-states');
minispade.require('metamorph');
minispade.require('ember-handlebars');
minispade.require('ember-touch');
minispade.require('ember-mk');
</script>
<script type="text/javascript" src="source/templates.js"></script>
<script type="text/javascript">
minispade.require('app');
</script>
update:
rm -rf packages/*; \
cp -pr ~/Git/forks/ember.js/packages/* ./packages; \
cp -pr ~/Git/forks/sproutcore-touch/packages/ember-touch ./packages; \
cp -pr ~/Git/emberjs/ember-mk/packages/ember-mk ./packages
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment