class Requisite::BoundaryObject

Public Class Methods

attribute(name, options={}) click to toggle source
# File lib/requisite/boundary_object.rb, line 4
def attribute(name, options={})
  attribute_keys << name
  define_method(name) do
    resolved_name = options[:rename] || name
    result = self.send(:convert, resolved_name)
    result = self.send(:parse_typed_hash, resolved_name, options[:typed_hash]) if options[:typed_hash]
    result = self.send(:parse_scalar_hash, resolved_name) if options[:scalar_hash]
    result = self.send(:parse_typed_array, resolved_name, options[:typed_array]) if options[:typed_array]
    result = options[:default] if (options[:default] && empty_result?(result))
    raise_bad_type_if_type_mismatch(result, options[:type]) if options[:type] && result
    result = result.to_s if options[:stringify]
    result
  end
end
attribute!(name, options={}) click to toggle source
# File lib/requisite/boundary_object.rb, line 19
def attribute!(name, options={})
  attribute_keys << name
  define_method(name) do
    resolved_name = options[:rename] || name
    result = self.send(:convert!, resolved_name)
    result = self.send(:parse_typed_hash, resolved_name, options[:typed_hash]) if options[:typed_hash]
    result = self.send(:parse_scalar_hash, resolved_name) if options[:scalar_hash]
    result = self.send(:parse_typed_array, resolved_name, options[:typed_array]) if options[:typed_array]
    result = result.to_s if options[:stringify]
    raise_bad_type_if_type_mismatch(result, options[:type]) if options[:type]
    result
  end
end
attribute_keys() click to toggle source
# File lib/requisite/boundary_object.rb, line 38
def attribute_keys
  @attribute_keys || []
end
attribute_keys_with_inheritance() click to toggle source
# File lib/requisite/boundary_object.rb, line 42
def attribute_keys_with_inheritance
  superclass.respond_to?(:attribute_keys_with_inheritance) ? superclass.attribute_keys_with_inheritance.concat(attribute_keys) : attribute_keys || []
end
serialized_attributes(&block) click to toggle source
# File lib/requisite/boundary_object.rb, line 33
def serialized_attributes(&block)
  @attribute_keys = []
  instance_eval(&block)
end

Private Instance Methods

empty_result?(result) click to toggle source
# File lib/requisite/boundary_object.rb, line 60
def empty_result?(result)
  result.nil? || result == {}
end
raise_bad_type_if_type_mismatch(value, desired_type) click to toggle source
# File lib/requisite/boundary_object.rb, line 52
def raise_bad_type_if_type_mismatch(value, desired_type)
  raise BadTypeError.new(value, desired_type) unless (value.kind_of?(desired_type)) || ((value.kind_of?(TrueClass) || value.kind_of?(TrueClass)) && desired_type == Requisite::Boolean)
end
raise_not_implemented_for_attribute(name) click to toggle source
# File lib/requisite/boundary_object.rb, line 56
def raise_not_implemented_for_attribute(name)
  raise NotImplementedError.new("'#{name}' method not implemented")
end