module Plezi::Base::BakeSASS
This is a baker, not a renderer
This is a baker, not a renderer
Constants
- SASS_OPTIONS
- SCSSC_OPTIONS
Public Instance Methods
call(target)
click to toggle source
Bakes the SASS for the requested target, if a SASS source file is found.
# File lib/plezi/render/sass.rb, line 24 def call(target) return self[target] if File.extname(target) == '.map'.freeze review_cache("#{target}.scss", target) || review_cache("#{target}.sass", target) end
load_target(filename, target)
click to toggle source
# File lib/plezi/render/sassc.rb, line 29 def load_target(filename, target) return nil unless File.exist?(filename) eng = self[filename] return self[target] unless eng.nil? || refresh_sass?(filename) map_name = "#{target}.map".freeze opt = SCSSC_OPTIONS.dup opt[:source_map_file] = map_name if opt[:source_map_file] opt[:filename] = filename opt[:load_paths] = [ File.basename(target) ] data = IO.binread(filename) eng = SassC::Engine.new(data, opt) css = eng.render map = eng.source_map self[filename] = eng.dependencies self[filename.to_sym] = Time.now IO.write map_name, map.to_json(css_uri: File.basename(target)) self[target] = css end
refresh_sass?(sass)
click to toggle source
# File lib/plezi/render/sass.rb, line 41 def refresh_sass?(sass) mt = self[sass.to_sym] return true if mt < File.mtime(sass) self[sass].each { |e| return true if File.exist?(e.options[:filename]) && (File.mtime(e.options[:filename]) > mt) } false end
review_cache(filename, target)
click to toggle source
# File lib/plezi/render/sass.rb, line 29 def review_cache(filename, target) return nil unless File.exist?(filename) eng = self[filename] return self[target] unless eng.nil? || refresh_sass?(filename) self[filename] = (eng = Sass::Engine.for_file(filename, SASS_OPTIONS)).dependencies map_name = "#{target}.map".freeze css, map = eng.render_with_sourcemap(File.basename(map_name)) self[filename.to_sym] = Time.now IO.write map_name, map.to_json(css_uri: File.basename(target)) self[target] = css end