Sha256: d9bed3f7b24d9b892311d9d6d1aea0ab087605f13cac3459cf22c50ef457a471

Contents?: true

Size: 1.26 KB

Versions: 2

Compression:

Stored size: 1.26 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

2 entries across 2 versions & 1 rubygems

Version Path
massimo-0.7.5 lib/massimo/javascript.rb
massimo-0.7.4 lib/massimo/javascript.rb