Sha256: 31d72cc00390dae024da8b0b2a48218743ce1cc7669a9281b12e45bcc15c39fd

Contents?: true

Size: 1.2 KB

Versions: 3

Compression:

Stored size: 1.2 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).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

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
massimo-0.7.3 lib/massimo/javascript.rb
massimo-0.7.2 lib/massimo/javascript.rb
massimo-0.7.1 lib/massimo/javascript.rb