Class: Csso::Compressor

Inherits:
Object
  • Object
show all
Defined in:
lib/csso/compressor.rb

Defined Under Namespace

Classes: Legacy

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, &block) ⇒ Compressor

sprockets 2:



24
25
26
# File 'lib/csso/compressor.rb', line 24

def initialize path, &block
  @block = block
end

Class Method Details

.call(input) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/csso/compressor.rb', line 3

def self.call(input)
  require 'csso'
  #TODO: settings?
  if input[:metadata] && input[:metadata][:map]
    css, map = Csso.optimize_with_sourcemap(input[:data],
      # Sprockets::PathUtils.split_subpath(input[:load_path], input[:filename])
      # sprockets seems to ignore filenames here, so we may save some mem:
      'uri'
    )
    map = Sprockets::SourceMapUtils.combine_source_maps(
      input[:metadata][:map],
      Sprockets::SourceMapUtils.decode_json_source_map(map)["mappings"]
    )
    { data: css, map: map }
  else
    { data: Csso.optimize(input[:data], true) }
  end
end

Instance Method Details

#render(context, opts = {}) ⇒ Object



28
29
30
# File 'lib/csso/compressor.rb', line 28

def render context, opts={}
  self.class.call({data: @block.call})[:data]
end