class Apia::Scalar

Public Class Methods

cast(value = nil, &block) click to toggle source
# File lib/apia/scalar.rb, line 19
def self.cast(value = nil, &block)
  if block_given? && value.nil?
    return definition.dsl.cast(&block)
  end

  unless valid?(value)
    # Before casting, we'll also validate...
    raise InvalidScalarValueError.new(self, value)
  end

  value = definition.cast.call(value) if definition.cast

  value
end
definition() click to toggle source

Return the definition for this type

@return [Apia::Definitions::Object]

# File lib/apia/scalar.rb, line 15
def self.definition
  @definition ||= Definitions::Scalar.new(Helpers.class_name_to_id(name))
end
parse(value = nil, &block) click to toggle source
# File lib/apia/scalar.rb, line 40
def self.parse(value = nil, &block)
  if block_given? && value.nil?
    return definition.dsl.parse(&block)
  end

  return value if definition.parse.nil?
  return nil if value.nil?

  definition.parse.call(value)
end
valid?(value) click to toggle source
# File lib/apia/scalar.rb, line 34
def self.valid?(value)
  return true if definition.validator.nil?

  definition.validator.call(value)
end