class NoBrainer::TypedArray

Public Class Methods

name() click to toggle source
# File lib/no_brainer/document/types/array.rb, line 53
def self.name
  str = String.new "Array"
  str += "(#{object_type.name})"  if respond_to?(:object_type)
  str
end
nobrainer_cast_db_to_model(values) click to toggle source
# File lib/no_brainer/document/types/array.rb, line 81
def self.nobrainer_cast_db_to_model(values)
  values = ::Array.wrap(values)
  if object_type.respond_to?(:nobrainer_cast_db_to_model)
    values.map { |value| object_type.nobrainer_cast_db_to_model(value) }
  else
    values
  end
end
nobrainer_cast_model_to_db(values) click to toggle source
# File lib/no_brainer/document/types/array.rb, line 72
def self.nobrainer_cast_model_to_db(values)
  values = ::Array.wrap(values)
  if object_type.respond_to?(:nobrainer_cast_model_to_db)
    values.map { |value| object_type.nobrainer_cast_model_to_db(value) }
  else
    values
  end
end
nobrainer_cast_user_to_model(values) click to toggle source

delegate cast methods to object_type cast methods, if defined

# File lib/no_brainer/document/types/array.rb, line 60
def self.nobrainer_cast_user_to_model(values)
  cast_type = object_type.respond_to?(:nobrainer_cast_user_to_model) && object_type
  values = ::Array.wrap(values).map do |value|
    value = cast_type.nobrainer_cast_user_to_model(value)  if cast_type
    unless (value.nil? && allow_nil?) || value.is_a?(object_type)
      raise NoBrainer::Error::InvalidType, type: object_type.name, value: value
    end
    value
  end
  new(values)
end
of(object_type, allow_nil: false) click to toggle source
# File lib/no_brainer/document/types/array.rb, line 45
def self.of(object_type, allow_nil: false)
  NoBrainer::Document::Types.load_type_extensions(object_type)
  ::Class.new(TypedArray) do
    define_singleton_method(:object_type) { object_type }
    define_singleton_method(:allow_nil?) { allow_nil }
  end
end