class Kanji::Type

Public Class Methods

new(params) click to toggle source
# File lib/kanji/type.rb, line 13
def initialize(params)
  result = self.class.resolve(:schema).call(params)

  if result.success?
    register :value, -> { self.class.resolve(:value_object).new(params) }
  else
    errors = parse_error_messages(result)
    raise ValidationError, "Schema validation failed - #{errors}"
  end

  self.class.instance_variable_get(:@_values).each do |key, value|
    register key.to_sym, value
  end

  if repo = self.class.resolve(:repo)
    register :repo, repo
  end
end

Public Instance Methods

method_missing(method_name, *args, &block) click to toggle source
Calls superclass method
# File lib/kanji/type.rb, line 40
def method_missing(method_name, *args, &block)
  if resolve(:value).respond_to?(method_name)
    resolve(:value).send(method_name, *args)
  else
    super(method_name, *args, &block)
  end
end
respond_to_missing?(method_name, include_private = false) click to toggle source
Calls superclass method
# File lib/kanji/type.rb, line 48
def respond_to_missing?(method_name, include_private = false)
  if resolve(:value).respond_to?(method_name)
    true
  else
    super(method_name, include_private)
  end
end
to_h() click to toggle source
# File lib/kanji/type.rb, line 32
def to_h
  resolve(:value).to_h
end
to_json() click to toggle source
# File lib/kanji/type.rb, line 36
def to_json
  to_h.to_json
end

Private Instance Methods

parse_error_messages(result) click to toggle source
# File lib/kanji/type.rb, line 58
def parse_error_messages(result)
  result.messages(full: true).values.flatten.join(",")
end