class Compass::Installers::Manifest

Attributes

options[R]
welcome_message_options[R]

Public Class Methods

known_extensions() click to toggle source
# File lib/compass/installers/manifest.rb, line 23
def self.known_extensions
  @known_extensions ||= {}
end
new(manifest_file = nil, options = {}) click to toggle source
# File lib/compass/installers/manifest.rb, line 15
def initialize(manifest_file = nil, options = {})
  @entries = []
  @options = options
  @generate_config = true
  @compile_after_generation = true
  parse(manifest_file) if manifest_file
end
plural_types() click to toggle source
# File lib/compass/installers/manifest.rb, line 27
def self.plural_types
  @plural_types ||= {}
end
type(t, options = {}) click to toggle source
# File lib/compass/installers/manifest.rb, line 31
def self.type(t, options = {})
  Array(options[:extensions]).each do |ext|
    self.known_extensions[ext] = t
  end
  self.plural_types[options[:plural]] = t if options[:plural]
  eval <<-END
    def #{t}(from, options = {})
       @entries << Entry.new(:#{t}, from, options)
    end
    def has_#{t}?
      @entries.detect {|e| e.type == :#{t}}
    end
    def each_#{t}
      @entries.select {|e| e.type == :#{t}}.each {|e| yield e}
    end
  END
end

Public Instance Methods

compile?() click to toggle source
# File lib/compass/installers/manifest.rb, line 119
def compile?
  @compile_after_generation
end
description(value = nil) click to toggle source
# File lib/compass/installers/manifest.rb, line 102
def description(value = nil)
  if value
    @description = value
  else
    @description
  end
end
discover(type) click to toggle source
# File lib/compass/installers/manifest.rb, line 57
def discover(type)
  type = self.class.plural_types[type] || type
  dir = File.dirname(@manifest_file)
  Dir.glob("#{dir}/**/*").each do |file|
    next if /manifest\.rb/ =~ file
    short_name = file[(dir.length+1)..-1]
    options = {}
    ext = if File.extname(short_name) == ".erb"
      options[:erb] = true
      File.extname(short_name[0..-5])
    else
      File.extname(short_name)
    end[1..-1]
    file_type = self.class.known_extensions[ext]
    file_type = :file if file_type.nil?
    file_type = :directory if File.directory?(file)
    if type == :all || type == file_type
      send(file_type, short_name, options)
    end
  end
end
each() { |e| ... } click to toggle source

Enumerates over the manifest files

# File lib/compass/installers/manifest.rb, line 111
def each
  @entries.each {|e| yield e}
end
generate_config?() click to toggle source
# File lib/compass/installers/manifest.rb, line 115
def generate_config?
  @generate_config
end
help(value = nil) click to toggle source
# File lib/compass/installers/manifest.rb, line 79
def help(value = nil)
  if value
    @help = value
  else
    @help
  end
end
welcome_message(value = nil, options = {}) click to toggle source
# File lib/compass/installers/manifest.rb, line 89
def welcome_message(value = nil, options = {})
  if value
    @welcome_message = value
    @welcome_message_options = options
  else
    @welcome_message
  end
end

Protected Instance Methods

instance_binding() click to toggle source
# File lib/compass/installers/manifest.rb, line 155
def instance_binding
  binding
end
no_configuration_file!() click to toggle source
# File lib/compass/installers/manifest.rb, line 125
def no_configuration_file!
  @generate_config = false
end
parse(manifest_file) click to toggle source

parses a manifest file which is a ruby script evaluated in a Manifest instance context

# File lib/compass/installers/manifest.rb, line 142
def parse(manifest_file)
  with_manifest(manifest_file) do
    if File.exists?(manifest_file)
      open(manifest_file) do |f| 
        eval(f.read, instance_binding, manifest_file)
      end 
    else
        eval("discover :all", instance_binding, manifest_file)
    end 
  end 
end
skip_compilation!() click to toggle source
# File lib/compass/installers/manifest.rb, line 129
def skip_compilation!
  @compile_after_generation = false
end
with_manifest(manifest_file) { || ... } click to toggle source
# File lib/compass/installers/manifest.rb, line 133
def with_manifest(manifest_file)
  @manifest_file = manifest_file
  yield
ensure
  @manifest_file = nil
end