lib/massimo/javascript.rb in massimo-0.6.2 vs lib/massimo/javascript.rb in massimo-0.6.3

- old
+ new

@@ -1,24 +1,44 @@ module Massimo class Javascript < Massimo::Resource def render - case source_path.extname.to_s - when '.coffee' - require 'coffee-script' unless defined?(CoffeeScript) - CoffeeScript.compile(content, Massimo.config.options_for(:coffee_script)) - else - require 'sprockets' unless defined?(Sprockets) - options = Massimo.config.options_for(:sprockets).merge( - :assert_root => Massimo.config.output_path, - :source_files => [ source_path.to_s ] - ) - secretary = Sprockets::Secretary.new(options) - secretary.install_assets - secretary.concatenation.to_s - end + compress(compile) end def extension @extension ||= '.js' end + + protected + + def compile + case source_path.extname.to_s + when '.coffee' + require 'coffee-script' unless defined?(CoffeeScript) + CoffeeScript.compile(content, Massimo.config.options_for(:coffee_script)) + else + require 'sprockets' unless defined?(Sprockets) + options = Massimo.config.options_for(:sprockets).merge( + :assert_root => Massimo.config.output_path, + :source_files => [ source_path.to_s ] + ) + secretary = Sprockets::Secretary.new(options) + secretary.install_assets + secretary.concatenation.to_s + end + end + + def compress(javascript) + case Massimo.config.javascripts_compressor.to_s + when 'min', 'jsmin' + require 'jsmin' unless defined?(JSMin) + JSMin.minify(javascript).strip + when 'pack', 'packr' + require 'packr' unless defined?(Packr) + options = { :shrink_vars => true }.merge Massimo.config.options_for(:packr) + Packr.pack(javascript, options) + else + javascript + end + end end end