class Isomer::Sources::Base

Attributes

configuration[R]
errors[R]
parameters[R]

Public Class Methods

new(parameters) click to toggle source
# File lib/isomer/sources/base.rb, line 4
def initialize(parameters)
  @parameters = parameters
  @errors = []
end

Public Instance Methods

for(parameter) click to toggle source
# File lib/isomer/sources/base.rb, line 29
def for(parameter)
  configuration.has_key?(parameter.name) ? configuration[parameter.name] : parameter.default
end
load() click to toggle source
# File lib/isomer/sources/base.rb, line 14
def load
  raise NotImplementedError, "You must implement 'load' in #{self.class.name}"
end
load_and_validate() click to toggle source
# File lib/isomer/sources/base.rb, line 9
def load_and_validate
  load
  validate
end
validate() click to toggle source
# File lib/isomer/sources/base.rb, line 18
def validate
  parameters.each do |parameter|
    if parameter.required?
      value = configuration[parameter.name]
      @errors << "#{parameter.name} is required" if valid(value)
    end
  end

  raise Isomer::RequiredParameterError, errors.join(', ') if !errors.empty?
end

Private Instance Methods

valid(value) click to toggle source
# File lib/isomer/sources/base.rb, line 35
def valid(value)
  if value.respond_to?(:empty)
    value.empty?
  else
    value.nil?
  end
end