class Middleman::Condenser
Public Class Methods
new(app, options_hash={}, &block)
click to toggle source
Calls superclass method
# File lib/middleman/condenser.rb, line 26 def initialize(app, options_hash={}, &block) # Call super to build options from the options_hash super # Require libraries only when activated require 'condenser' require 'condenser/server' cache = Condenser::Cache::FileStore.new(File.join(app.root, 'tmp/cache')) @condenser = Condenser.new(app.root, cache: cache) app.use(Middleware, app) Middleman::Application.send(:attr_reader, :condenser) app.instance_variable_set(:@condenser, @condenser) options[:path].each { |p| @condenser.append_path(p) } # Append sources asset_dir = File.join(app.source_dir, 'assets') if File.exist?(asset_dir) && File.directory?(asset_dir) Dir.each_child(asset_dir).each do |child| child = File.join(asset_dir, child) @condenser.append_path(child) if File.directory?(child) end end # Append npm sources asset_dir = File.join(app.root, 'node_modules') if File.exist?(asset_dir) && File.directory?(asset_dir) @condenser.append_npm_path(asset_dir) end end
Public Instance Methods
after_build(b)
click to toggle source
# File lib/middleman/condenser.rb, line 72 def after_build(b) @required_assets.each do |asset| puts @condenser.find_export(asset).write(File.join(app.config[:build_dir], options[:prefix])) end end
after_configuration()
click to toggle source
# File lib/middleman/condenser.rb, line 68 def after_configuration # Do something end
asset_path(kind, source=nil, options={})
click to toggle source
# File lib/middleman/condenser.rb, line 96 def asset_path(kind, source=nil, options={}) accept = case kind when :css source << ".#{kind}" if !source.end_with?(kind.to_s) 'text/css' when :js source << ".#{kind}" if !source.end_with?(kind.to_s) 'application/javascript' end source = kind if source.nil? asset = app.condenser.find_export(source, accept: accept) app.extensions[:condenser].export(source) "/#{app.extensions[:condenser].options[:prefix].gsub(/^\//, '')}/#{asset.path}" end
before_build(builder)
click to toggle source
# File lib/middleman/condenser.rb, line 59 def before_build(builder) builder.instance_variable_set(:@parallel, false) @required_assets = [] end
before_clean(builder)
click to toggle source
# File lib/middleman/condenser.rb, line 84 def before_clean(builder) build_dir = File.join(app.config[:build_dir], options[:prefix]) manifest = Condenser::Manifest.new(@condenser, build_dir) puts @required_assets.inspect manifest.compile(@required_assets).each do |a| builder.instance_variable_get(:@to_clean).delete_if! { |x| a.to_s == a } end end
export(file)
click to toggle source
# File lib/middleman/condenser.rb, line 64 def export(file) @required_assets << file if @required_assets end
extract_dimensions(size)
click to toggle source
# File lib/middleman/condenser.rb, line 124 def extract_dimensions(size) size = size.to_s if /\A\d+x\d+\z/.match?(size) size.split("x") elsif /\A\d+\z/.match?(size) [size, size] end end
image_tag(source, options = {})
click to toggle source
# File lib/middleman/condenser.rb, line 113 def image_tag(source, options = {}) if options[:size] && (options[:height] || options[:width]) raise ArgumentError, "Cannot pass a :size option with a :height or :width option" end src = options[:src] = asset_path(source) options[:width], options[:height] = extract_dimensions(options.delete(:size)) if options[:size] tag("img", options) end
manipulate_resource_list(resources)
click to toggle source
# File lib/middleman/condenser.rb, line 78 def manipulate_resource_list resources resources.reject do |resource| resource.path.start_with?(options[:prefix].sub(/^\//, '')) end end