class YSI::Assertion

Attributes

engine[RW]

Public Class Methods

class_for_name(name) click to toggle source
# File lib/yes_ship_it/assertion.rb, line 9
def self.class_for_name(name)
  begin
    Object.const_get("YSI::" + class_name(name))
  rescue NameError
    raise YSI::Error.new("Error: Unknown assertion '#{name}'")
  end
end
class_name(name) click to toggle source
# File lib/yes_ship_it/assertion.rb, line 5
def self.class_name(name)
  name.split("_").map { |n| n.capitalize }.join
end
dependency_names() click to toggle source
# File lib/yes_ship_it/assertion.rb, line 24
def self.dependency_names
  @dependency_names || []
end
needs(dependency) click to toggle source
# File lib/yes_ship_it/assertion.rb, line 17
def self.needs(dependency)
  @dependency_names ||= []
  # Classes might not all be loaded yet, so delay class name lookup to
  # first invocation of #needs
  @dependency_names << dependency
end
new(engine) click to toggle source
# File lib/yes_ship_it/assertion.rb, line 52
def initialize(engine)
  @engine = engine
  @parameters = {}
  @parameter_defaults = {}
end
parameter(name, default_value = nil) click to toggle source
# File lib/yes_ship_it/assertion.rb, line 28
def self.parameter(name, default_value = nil)
  define_method("#{name}=") do |value|
    @parameters[name] = value
  end

  if default_value
    define_method("#{name}_default") do
      return default_value
    end
  end

  define_method("#{name}") do
    if @parameters.has_key?(name)
      return @parameters[name]
    else
      if respond_to?("#{name}_default")
        return send("#{name}_default")
      else
        return nil
      end
    end
  end
end

Public Instance Methods

display_name() click to toggle source
# File lib/yes_ship_it/assertion.rb, line 58
def display_name
  self.class.display_name
end
needs() click to toggle source
# File lib/yes_ship_it/assertion.rb, line 62
def needs
  @dependencies ||= self.class.dependency_names.map do |d|
    Assertion.class_for_name(d)
  end
end
needs?(dependency) click to toggle source
# File lib/yes_ship_it/assertion.rb, line 68
def needs?(dependency)
  needs.include?(dependency)
end