class Koine::Attributes::Adapter::Base

Attributes

attribute_name[R]

Public Class Methods

new() click to toggle source
# File lib/koine/attributes/adapter/base.rb, line 9
def initialize
  with_attribute_name('annonymous_attribute_name')
end

Public Instance Methods

coerce(value) click to toggle source
# File lib/koine/attributes/adapter/base.rb, line 13
def coerce(value)
  return coerce_nil if value.nil?

  coerce_not_nil(value)
end
default_value() click to toggle source
# File lib/koine/attributes/adapter/base.rb, line 19
def default_value
  @default_value.respond_to?(:call) &&
    @default_value.call ||
    @default_value
end
with_attribute_name(name) click to toggle source
# File lib/koine/attributes/adapter/base.rb, line 38
def with_attribute_name(name)
  @attribute_name = name
  self
end
with_default_value(value = nil, &block) click to toggle source
# File lib/koine/attributes/adapter/base.rb, line 32
def with_default_value(value = nil, &block)
  @default_value = value
  @default_value = block if block
  self
end
with_nil_value(value = nil, &block) click to toggle source
# File lib/koine/attributes/adapter/base.rb, line 25
def with_nil_value(value = nil, &block)
  @nil_value_set = true
  @nil_value = value
  @nil_value = block if block
  self
end

Private Instance Methods

coerce_nil() click to toggle source
# File lib/koine/attributes/adapter/base.rb, line 45
def coerce_nil
  if @nil_value_set
    return @nil_value.respond_to?(:call) ? @nil_value.call : @nil_value
  end

  raise_error('Cannot be nil')
end
coerce_not_nil(_value) click to toggle source
# File lib/koine/attributes/adapter/base.rb, line 53
def coerce_not_nil(_value)
  raise NotImplementedError
end
raise_error(message) click to toggle source
# File lib/koine/attributes/adapter/base.rb, line 74
def raise_error(message)
  raise Koine::Attributes::InvalidAttributeError.new(message, attribute_name)
end
secure() { || ... } click to toggle source

duplicates if possible and freezes object

# File lib/koine/attributes/adapter/base.rb, line 58
def secure
  value = yield

  unless value.is_a?(::Symbol)
    value = value.dup if value.respond_to?(:dup)
  end

  value.freeze
end
wrap_errors() { || ... } click to toggle source
# File lib/koine/attributes/adapter/base.rb, line 68
def wrap_errors
  yield
rescue StandardError => exception
  raise_error(exception)
end