Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
sprockets-boa / lib / sprockets / sass_compressor.rb
Size: Mime:
require 'json'
require 'sass'

module Sprockets
  # Public: Sass CSS minifier.
  #
  # To accept the default options
  #
  #     environment.register_bundle_processor 'text/css',
  #       Sprockets::SassCompressor
  #
  # Or to pass options to the Sass::Engine class.
  #
  #     environment.register_bundle_processor 'text/css',
  #       Sprockets::SassCompressor.new({ ... })
  #
  class SassCompressor
    VERSION = '1'

    def self.call(*args)
      new.call(*args)
    end

    def initialize(options = {})
      @options = options
      @cache_key = [
        'SassCompressor',
        ::Sass::VERSION,
        VERSION,
        JSON.generate(options)
      ]
    end

    def call(input)
      data = input[:data]
      input[:cache].fetch(@cache_key + [data]) do
        options = {
          syntax: :scss,
          cache: false,
          read_cache: false,
          style: :compressed
        }.merge(@options)
        ::Sass::Engine.new(data, options).render
      end
    end
  end
end