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, location: 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, except) @name_as_str = @name.to_s @name_as_instance_var_name = :"@#{@name}" @from_as_str = @from.to_s @location = location if @location @location = @location .sub(Ree.root_dir, ".") .sub(/:in.+/, "") end raise ArgumentError, 'required fields do not support defaults' if has_default? && !optional end