Class: PoolParty::Conditional

Inherits:
Service show all
Defined in:
lib/poolparty/services/conditional.rb

Instance Method Summary collapse

Methods inherited from Service

add_has_and_does_not_have_methods_for, #cloud

Methods inherited from PoolPartyBaseClass

add_has_and_does_not_have_methods_for, #add_resource, #add_service, #add_to_parent_if_parent_exists_and_is_a_service, #get_local_resource, #get_name_from_options_and_extra_options, #get_resource, #handle_option_values, #in_local_resources?, #is_a_resource?, #is_plugin?, #method_missing, #ordered_resources, #plugin_store, #resource, #resources, #run_in_context, #services, #store_in_local_resources

Constructor Details

#initialize(opts = {}, &block) ⇒ Conditional

Returns a new instance of Conditional.



15
16
17
18
19
# File 'lib/poolparty/services/conditional.rb', line 15

def initialize(opts={}, &block)
  super(opts, &block)
  dsl_options(opts)
  options.freeze
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class PoolParty::PoolPartyBaseClass

Instance Method Details

#add(o, &block) ⇒ Object



28
29
30
31
32
# File 'lib/poolparty/services/conditional.rb', line 28

def add(o, &block)
  service = PoolParty::Service.new(&block)
  obj = (o ? o : :default).to_sym
  when_statements.merge!({obj => service})
end

#otherwise(&block) ⇒ Object



24
25
26
# File 'lib/poolparty/services/conditional.rb', line 24

def otherwise &block
  add(nil, &block)
end

#to_properties_hashObject



37
38
39
40
41
42
43
# File 'lib/poolparty/services/conditional.rb', line 37

def to_properties_hash
  {
    :options => {:variable => (dsl_options.attribute)},
    :resources => {},
    :services => {:control_statements => when_statements}
  }
end

#when_is(o, &block) ⇒ Object



21
22
23
# File 'lib/poolparty/services/conditional.rb', line 21

def when_is o, &block
  add(o, &block)
end

#when_statementsObject



34
35
36
# File 'lib/poolparty/services/conditional.rb', line 34

def when_statements
  @when_statement ||= {}
end