class Objectifier::ScalarValue

Attributes

name[R]
type[R]

Public Class Methods

new(name, args) click to toggle source
# File lib/objectifier/scalar_value.rb, line 7
def initialize(name, args)
  raise ArgumentError, "name required" if name.nil?
  raise ArgumentError, "type required" unless args[:type]
  @name = name.to_s
  @type = args[:type] # TODO: check type is valid?
  @required = args.fetch(:required, true)
end

Public Instance Methods

call(parameters) click to toggle source
# File lib/objectifier/scalar_value.rb, line 19
def call(parameters)
  if @required && !key_present(parameters)
    ErrorResult.err(@name, "required field missing")
  elsif key_present(parameters)
    transform(key_value(parameters))
  else
    SuccessResult.new(@name)
  end
end
required?() click to toggle source
# File lib/objectifier/scalar_value.rb, line 15
def required?
  @required
end
to_s() click to toggle source
# File lib/objectifier/scalar_value.rb, line 29
def to_s
  "scalar %s - type: %s - required: %s" % [ @name, @type.to_s, @required.to_s ]
end

Protected Instance Methods

key_present(parameters) click to toggle source
# File lib/objectifier/scalar_value.rb, line 35
def key_present(parameters)
  parameters.has_key?(@name)
end
key_value(parameters) click to toggle source
# File lib/objectifier/scalar_value.rb, line 39
def key_value(parameters)
  parameters.fetch(
    @name,
    parameters[@name]
  )
end
transform(value) click to toggle source
# File lib/objectifier/scalar_value.rb, line 46
def transform(value)
  Objectifier.factories.for_type(@type).call(@name, value)
end