class Definition::ValueObject

Public Class Methods

conform(value) click to toggle source
# File lib/definition/value_object.rb, line 23
def conform(value)
  unless @definition
    raise Definition::NotConfiguredError.new(
      "Value object has not been configured with a defintion. Use .definition to set a definition"
    )
  end

  @definition.conform(value)
end
define_accessor_methods() click to toggle source
# File lib/definition/value_object.rb, line 38
def define_accessor_methods
  @definition.keys.each do |key|
    define_method(key) { self[key] }
  end
end
definition(definition) click to toggle source
# File lib/definition/value_object.rb, line 33
def definition(definition)
  @definition = definition
  define_accessor_methods if definition.is_a?(Definition::Types::Keys)
end
new(args = nil, **kwargs) click to toggle source
Calls superclass method
# File lib/definition/value_object.rb, line 15
def initialize(args = nil, **kwargs)
  result = self.class.conform(args || kwargs)
  raise InvalidValueObjectError.new(result) unless result.passed?

  super(result.value.freeze)
end