class Compass::Installers::Base

Attributes

options[RW]
target_path[RW]
template_path[RW]
working_path[RW]

Public Class Methods

installer(type, installer_opts = {}, &locator) click to toggle source
# 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
new(template_path, target_path, options = {}) click to toggle source
# 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

Public Instance Methods

compilation_required?() click to toggle source
# File lib/compass/installers/base.rb, line 52
def compilation_required?
  false
end
finalize(options = {}) click to toggle source

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
install() click to toggle source

The install method override this to install

# File lib/compass/installers/base.rb, line 43
def install
  raise "Not Yet Implemented"
end
install_directory(from, to, options) click to toggle source
# 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
install_html(from, to, options) click to toggle source
# File lib/compass/installers/base.rb, line 147
def install_html(from, to, options)
  if to =~ %r\.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
Also aliased as: install_html_without_haml
install_html_without_haml(from, to, options) click to toggle source
Alias for: install_html
install_stylesheet(from, to, options) click to toggle source
# 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
pattern_name_as_dir() click to toggle source
# File lib/compass/installers/base.rb, line 56
def pattern_name_as_dir
  "#{options[:pattern_name]}/" if options[:pattern_name]
end
prepare() click to toggle source

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
run(run_options = {}) click to toggle source

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
targetize(path) click to toggle source

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
templatize(path) click to toggle source

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