class ReeMapper::Field
def has_default?
def has_default? default != NO_DEFAULT end
def has_role?(role)
def has_role?(role) return true if roles.empty? return false if role.nil? if role.is_a?(Array) role.any? { roles.include?(_1) } else roles.include?(role) end end
def initialize(type, name = nil, from: nil, doc: nil, optional: false, null: false, role: nil, default: NO_DEFAULT,
def initialize(type, name = nil, from: nil, doc: nil, optional: false, null: false, role: nil, default: NO_DEFAULT, only: nil, except: nil) @type = type @name = name @from = from || name @doc = doc @optional = optional @null = null @roles = Array(role) @default = default @fields_filter = ReeMapper::FieldsFilter.build(only: only, except: except) @name_as_str = @name.to_s @name_as_instance_var_name = :"@#{@name}" @from_as_str = @from.to_s raise ArgumentError, 'required fields do not support defaults' if has_default? && !optional end