Sha256: cfaaef95e1e439dbb8ef1ced284a06db3728aa6065a1d0174544cc8055ae8288

Contents?: true

Size: 947 Bytes

Versions: 1

Compression:

Stored size: 947 Bytes

Contents

class MiniAsset::Css < MiniAsset::Base

  def content_type
    'text/css'
  end

  def cache_file
    super.sub(/\.(\w+)/, "#{production? ? '-p' : ''}.\\1").sub('.scss', '.css')
  end

  def update_cache
    node_sass = './node_modules/node-sass/bin/node-sass'
    node_opts = production? ? '--output-style compressed' : '--source-comments'
    run! "#{node_sass} #{node_opts} '#{local_file}' '#{cache_file}'"
  end

  def compiled_data
    if do_compile?
      update_cache
    else
      # extract linked files from css cache and compile if needed
      data = File.read cache_file
      files = []
      data.gsub(%r{(app/assets/[\w\-\./]+)}) { files.push($1) unless files.include?($1) }

      final_check = false
      cache_time  = File.mtime(cache_file).to_i
      for file in files
        final_check ||= true if cache_time <= File.mtime(file).to_i
      end

      update_cache if final_check
    end

    File.read cache_file
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lux-fw-0.1.17 ./lib/vendor/mini_assets/mini_asset/css.rb