Class: Dry::Schema::Key::Array Private

Inherits:
Dry::Schema::Key show all
Defined in:
lib/dry/schema/key.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

A specialized key type which handles nested arrays

API:

  • private

Constant Summary

Constants inherited from Dry::Schema::Key

DEFAULT_COERCER

Instance Attribute Summary collapse

Attributes inherited from Dry::Schema::Key

#coercer, #id, #name

Instance Method Summary collapse

Methods inherited from Dry::Schema::Key

[], new, #new, #read

Constructor Details

#initialize(id, member:, **opts) ⇒ Array

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Array.

API:

  • private



145
146
147
148
# File 'lib/dry/schema/key.rb', line 145

def initialize(id, member:, **opts)
  super(id, **opts)
  @member = member
end

Instance Attribute Details

#memberObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



142
143
144
# File 'lib/dry/schema/key.rb', line 142

def member
  @member
end

Instance Method Details

#coercible(&coercer) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



163
164
165
# File 'lib/dry/schema/key.rb', line 163

def coercible(&coercer)
  new(coercer: coercer, member: member.coercible(&coercer))
end

#dumpObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



178
179
180
# File 'lib/dry/schema/key.rb', line 178

def dump
  [name, member.dump]
end

#stringifiedObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



168
169
170
# File 'lib/dry/schema/key.rb', line 168

def stringified
  new(name: name.to_s, member: member.stringified)
end

#to_dot_notationObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



173
174
175
# File 'lib/dry/schema/key.rb', line 173

def to_dot_notation
  [:"#{name}[]"].product(member.to_dot_notation).map { |el| el.join(DOT) }
end

#write(source, target) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



151
152
153
154
155
156
157
158
159
160
# File 'lib/dry/schema/key.rb', line 151

def write(source, target)
  read(source) { |value|
    target[coerced_name] =
      if value.is_a?(::Array)
        value.map { |el| el.is_a?(::Hash) ? member.write(el) : el }
      else
        value
      end
  }
end