Object
# File lib/compass/installers/base.rb, line 60 def self.installer(type, installer_opts = {}, &locator) locator ||= lambda{|to| to} loc_method = "install_location_for_#{type}".to_sym define_method("simple_#{loc_method}", locator) define_method(loc_method) do |to, options| if options[:like] && options[:like] != type send("install_location_for_#{options[:like]}", to, options) else send("simple_#{loc_method}", to) end end define_method "install_#{type}" do |from, to, options| from = templatize(from) to = targetize(send(loc_method, to, options)) is_binary = installer_opts[:binary] || options[:binary] if is_binary copy from, to, nil, is_binary else contents = File.new(from).read if options.delete(:erb) ctx = TemplateContext.ctx(:to => to, :options => options) contents = process_erb(contents, ctx) end write_file to, contents end end end
# File lib/compass/installers/base.rb, line 11 def initialize(template_path, target_path, options = {}) @template_path = template_path @target_path = target_path @working_path = Dir.getwd @options = options self.logger = options[:logger] end
# File lib/compass/installers/base.rb, line 52 def compilation_required? false end
The default finalize method – it is a no-op. This could print out a message or something.
# File lib/compass/installers/base.rb, line 49 def finalize(options = {}) end
The install method override this to install
# File lib/compass/installers/base.rb, line 43 def install raise "Not Yet Implemented" end
# File lib/compass/installers/base.rb, line 133 def install_directory(from, to, options) d = if within = options[:within] if respond_to?(within) targetize("#{send(within)}/#{to}") else raise Compass::Error, "Unrecognized location: #{within}" end else targetize(to) end directory d end
# File lib/compass/installers/base.rb, line 147 def install_html(from, to, options) if to =~ /\.haml$/ require 'haml' to = to[0..-(".haml".length+1)] if respond_to?(:install_location_for_html) to = install_location_for_html(to, options) end contents = File.read(templatize(from)) if options.delete(:erb) ctx = TemplateContext.ctx(:to => to, :options => options) contents = process_erb(contents, ctx) end Compass.configure_sass_plugin! html = Haml::Engine.new(contents, :filename => templatize(from)).render write_file(targetize(to), html, options) else install_html_without_haml(from, to, options) end end
# File lib/compass/installers/base.rb, line 92 def install_stylesheet(from, to, options) from = templatize(from) to = targetize(install_location_for_stylesheet(to, options)) contents = File.new(from).read if options.delete(:erb) ctx = TemplateContext.ctx(:to => to, :options => options) contents = process_erb(contents, ctx) end if preferred_syntax.to_s != from[-4..-1] # logger.record :convert, basename(from) tree = Sass::Engine.new(contents, Compass.sass_engine_options.merge(:syntax => from[-4..-1].intern)).to_tree contents = tree.send("to_#{preferred_syntax}") to[-4..-1] = preferred_syntax.to_s end write_file to, contents end
# File lib/compass/installers/base.rb, line 56 def pattern_name_as_dir "#{options[:pattern_name]}/" if options[:pattern_name] end
The default prepare method – it is a no-op. Generally you would create required directories, etc.
# File lib/compass/installers/base.rb, line 39 def prepare end
Runs the installer. Every installer must conform to the installation strategy of prepare, install, and then finalize. A default implementation is provided for each step.
# File lib/compass/installers/base.rb, line 31 def run(run_options = {}) prepare unless run_options[:skip_preparation] install unless options[:prepare] finalize(options.merge(run_options)) unless options[:prepare] || run_options[:skip_finalization] end
Emits an HTML fragment that can be used to link to the compiled css files
# File lib/compass/installers/base.rb, line 180 def stylesheet_links "" end
returns an absolute path given a path relative to the current installation target. Paths can use unix style “/” and will be corrected for the current platform.
# File lib/compass/installers/base.rb, line 169 def targetize(path) strip_trailing_separator File.join(target_path, separate(path)) end
returns an absolute path given a path relative to the current template. Paths can use unix style “/” and will be corrected for the current platform.
# File lib/compass/installers/base.rb, line 175 def templatize(path) strip_trailing_separator File.join(template_path, separate(path)) end
Generated with the Darkfish Rdoc Generator 2.