Sha256: e40f2c166a1826c27e1d61a7adecabf5bc07b2beae6cd809c6db4e533fb97e3f

Contents?: true

Size: 1.75 KB

Versions: 5

Compression:

Stored size: 1.75 KB

Contents

module Massimo
  class Javascript < Massimo::Resource
    def render
      compress(compile)
    end
    
    def extension
      @extension ||= '.js'
    end
    
    protected
    
      def compile
        case source_path.extname
        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)
        when 'pack', 'packr'
          require 'packr' unless defined?(Packr)
          options = { :shrink_vars => true }.merge Massimo.config.options_for(:packr)
          Packr.pack(javascript, options)
        when 'yui', 'yui-compressor', 'yui/compressor'
          require 'yui/compressor' unless defined?(YUI)
          options = { :munge => true }.merge Massimo.config.options_for(:yui)
          YUI::JavaScriptCompressor.new(options).compress(javascript)
        when 'closure', 'closure-compiler', 'closure/compiler'
          require 'closure-compiler' unless defined?(Closure)
          options = Massimo.config.options_for(:closure)
          Closure::Compiler.new(options).compile(javascript)
        else
          javascript
        end.strip
      end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
massimo-0.8.4 lib/massimo/javascript.rb
massimo-0.8.3 lib/massimo/javascript.rb
massimo-0.8.2 lib/massimo/javascript.rb
massimo-0.8.1 lib/massimo/javascript.rb
massimo-0.8.0 lib/massimo/javascript.rb