module DAF::Configurable::ClassMethods

Class methods used by configurable classes

Public Instance Methods

options() click to toggle source

Returns valid oset of options @return [Hash<String,Class>] Available set of options, with expected class for each.

# File lib/daf/configurable.rb, line 102
def options
  class_variable_get('@@options')
end
outputs() click to toggle source

Returns set of outputs that are set @return [Hash<String,Class>]] Outputs that are set on trigger, with types of each as values

# File lib/daf/configurable.rb, line 109
def outputs
  class_variable_get('@@outputs')
end
required_options() click to toggle source

Returns required set of options @return [Array<Option>] Required options for this class

# File lib/daf/configurable.rb, line 95
def required_options
  class_variable_get('@@required_options')
end

Protected Instance Methods

attr_option(name, type, required = :optional, &verifier) click to toggle source

Notes that this class has the specified option

@param [String, Symbol] name Name of this option @param [Class] type Type required for this option - will be verified @param [optional, :optional, :required] required Is this option required to be set, or merely optional

# File lib/daf/configurable.rb, line 81
def attr_option(name, type, required = :optional, &verifier)
  name = name.to_s
  setup_options
  setup_option(name, type, required, verifier)
end
attr_output(name, type) click to toggle source
# File lib/daf/configurable.rb, line 87
def attr_output(name, type)
  name = name.to_s
  setup_outputs
  setup_output(name, type)
end

Private Instance Methods

setup_option(name, type, required, verifier) click to toggle source
# File lib/daf/configurable.rb, line 49
def setup_option(name, type, required, verifier)
  define_method("#{name}") do
    instance_variable_set('@' + name,
                          Option.new(name, type, verifier)) unless
      instance_variable_get('@' + name)
    instance_variable_get('@' + name)
  end

  class_variable_get('@@required_options') << name if
    required == :required
  class_variable_get('@@options')[name] = type
end
setup_options() click to toggle source
# File lib/daf/configurable.rb, line 41
def setup_options
  class_variable_get('@@options')
  class_variable_get('@@required_options')
rescue
  class_variable_set('@@options', {})
  class_variable_set('@@required_options', [])
end
setup_output(name, type) click to toggle source
# File lib/daf/configurable.rb, line 68
def setup_output(name, type)
  define_method("#{name}") do
    instance_variable_get("@#{name}")
  end
  class_variable_get('@@outputs')[name] = type
end
setup_outputs() click to toggle source
# File lib/daf/configurable.rb, line 62
def setup_outputs
  class_variable_get('@@outputs')
rescue
  class_variable_set('@@outputs', {})
end