Class: YSI::Assertion

Inherits:
Object
  • Object
show all
Defined in:
lib/yes_ship_it/assertion.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(engine) ⇒ Assertion

Returns a new instance of Assertion.



52
53
54
55
56
# File 'lib/yes_ship_it/assertion.rb', line 52

def initialize(engine)
  @engine = engine
  @parameters = {}
  @parameter_defaults = {}
end

Instance Attribute Details

#engineObject

Returns the value of attribute engine.



3
4
5
# File 'lib/yes_ship_it/assertion.rb', line 3

def engine
  @engine
end

Class Method Details

.class_for_name(name) ⇒ Object



9
10
11
12
13
14
15
# 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) ⇒ Object



5
6
7
# File 'lib/yes_ship_it/assertion.rb', line 5

def self.class_name(name)
  name.split("_").map { |n| n.capitalize }.join
end

.dependency_namesObject



24
25
26
# File 'lib/yes_ship_it/assertion.rb', line 24

def self.dependency_names
  @dependency_names || []
end

.needs(dependency) ⇒ Object



17
18
19
20
21
22
# 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

.parameter(name, default_value = nil) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 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

Instance Method Details

#display_nameObject



58
59
60
# File 'lib/yes_ship_it/assertion.rb', line 58

def display_name
  self.class.display_name
end

#needsObject



62
63
64
65
66
# 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) ⇒ Boolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/yes_ship_it/assertion.rb', line 68

def needs?(dependency)
  needs.include?(dependency)
end