From 2aabccd33050c6d33f00e3834ebfab7f7482684f Mon Sep 17 00:00:00 2001 From: Paul Bergeron Date: Fri, 20 Apr 2012 18:17:41 -0400 Subject: [PATCH 1/3] Groundwork for being able to load Jammit extensions --- lib/jammit.rb | 3 +-- lib/jammit/dependencies.rb | 3 +++ lib/jammit/extensions.rb | 3 +++ 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 lib/jammit/extensions.rb diff --git a/lib/jammit.rb b/lib/jammit.rb index 5cd9615f..a0996c5a 100644 --- a/lib/jammit.rb +++ b/lib/jammit.rb @@ -99,8 +99,7 @@ def self.load_configuration(config_path, soft=false) set_template_namespace(conf[:template_namespace]) set_template_extension(conf[:template_extension]) set_public_root(conf[:public_root]) if conf[:public_root] - symbolize_keys(conf[:stylesheets]) if conf[:stylesheets] - symbolize_keys(conf[:javascripts]) if conf[:javascripts] + conf.keys.each {|key| symbolize_keys(conf[key]) rescue nil} check_for_deprecations self end diff --git a/lib/jammit/dependencies.rb b/lib/jammit/dependencies.rb index 9714bd8a..8fb1be14 100644 --- a/lib/jammit/dependencies.rb +++ b/lib/jammit/dependencies.rb @@ -57,3 +57,6 @@ require 'jammit/routes' end +# Load user extentions +require 'jammit/extensions' + diff --git a/lib/jammit/extensions.rb b/lib/jammit/extensions.rb new file mode 100644 index 00000000..a60bba51 --- /dev/null +++ b/lib/jammit/extensions.rb @@ -0,0 +1,3 @@ +module Jammit + require File.join(ASSET_ROOT, 'lib', 'extensions', 'jammit.rb') if File.exists?(File.join(ASSET_ROOT, 'lib', 'extensions', 'jammit.rb')) +end From 011618eca7bc12a3484e4178d1aab9b4a8eea241 Mon Sep 17 00:00:00 2001 From: Paul Bergeron Date: Fri, 20 Apr 2012 19:48:52 -0400 Subject: [PATCH 2/3] Allow for custom assets in assets.yml, make sure they appear in the packger class --- lib/jammit.rb | 7 +++++++ lib/jammit/packager.rb | 13 +++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/jammit.rb b/lib/jammit.rb index a0996c5a..855d3ca1 100644 --- a/lib/jammit.rb +++ b/lib/jammit.rb @@ -145,6 +145,13 @@ def self.package!(options={}) packager.precache_all(options[:output_folder], options[:base_url]) end + def self.custom_assets + @configuration.select { |key, val| + lambda{ |val| val.respond_to?(:keys) rescue false}.call(val) && + ![:javascripts, :stylesheets].include?(key) + } + end + private # Allows command-line definition of `PUBLIC_ROOT`, for those using Jammit diff --git a/lib/jammit/packager.rb b/lib/jammit/packager.rb index 26cc7313..3ad09fe7 100644 --- a/lib/jammit/packager.rb +++ b/lib/jammit/packager.rb @@ -19,11 +19,11 @@ def initialize @config = { :css => (Jammit.configuration[:stylesheets] || {}), :js => (Jammit.configuration[:javascripts] || {}) - } + }.merge!(Jammit.custom_assets) @packages = { :css => create_packages(@config[:css]), :js => create_packages(@config[:js]) - } + }.merge!(create_custom_packages(Jammit.custom_assets)) end # Ask the packager to precache all defined assets, along with their gzip'd @@ -46,6 +46,9 @@ def precache_all(output_dir=nil, base_url=nil) end end end + @packages.keys.keep_if{|extension| ![:js, :css].include?(extension)}.each do |extension| + cacheable(extension, output_dir).each {|p| cache(p, extension.to_s, self.send(:"pack_#{extension}", p), output_dir)} + end end # Caches a single prebuilt asset package and gzips it at the highest @@ -169,6 +172,12 @@ def create_packages(config) packages end + def create_custom_packages(custom_assets) + results = {} + custom_assets.each { |key, val| results[key] = create_packages(val)} + results + end + # Raise a PackageNotFound exception for missing packages... def not_found(package, extension) raise PackageNotFound, "assets.yml does not contain a \"#{package}\" #{extension.to_s.upcase} package" From 610b1cb605f5df7bc1a0fdc5e0582f9c6454c5c4 Mon Sep 17 00:00:00 2001 From: Paul Bergeron Date: Mon, 23 Apr 2012 18:45:59 -0400 Subject: [PATCH 3/3] Fix singularization of package --- lib/jammit/packager.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/jammit/packager.rb b/lib/jammit/packager.rb index 3ad09fe7..d499549a 100644 --- a/lib/jammit/packager.rb +++ b/lib/jammit/packager.rb @@ -47,7 +47,7 @@ def precache_all(output_dir=nil, base_url=nil) end end @packages.keys.keep_if{|extension| ![:js, :css].include?(extension)}.each do |extension| - cacheable(extension, output_dir).each {|p| cache(p, extension.to_s, self.send(:"pack_#{extension}", p), output_dir)} + cacheable(extension, output_dir).each {|p| cache(p, extension.to_s, self.send(:"pack_#{extension}s", p), output_dir)} end end @@ -174,7 +174,7 @@ def create_packages(config) def create_custom_packages(custom_assets) results = {} - custom_assets.each { |key, val| results[key] = create_packages(val)} + custom_assets.each { |key, val| results[:"#{key.to_s.singularize}"] = create_packages(val)} results end