Method: Dry::Transformer::Recursion.array_recursion

Defined in:
lib/dry/transformer/recursion.rb

.array_recursion(value, fn) ⇒ Array

Recursively apply the provided transformation function to an array

Examples:

Dry::Transformer(:array_recursion, -> s { s.compact })[
  [['Joe', 'Jane', nil], ['Smith', 'Doe', nil]]
]
# =>  [["Joe", "Jane"], ["Smith", "Doe"]]

Parameters:

Returns:

API:

  • public



87
88
89
90
91
92
93
94
# File 'lib/dry/transformer/recursion.rb', line 87

def self.array_recursion(value, fn)
  result = fn[value]
  guarded = IF_ARRAY[-> v { array_recursion(v, fn) }]

  result.map! do |item|
    guarded[item]
  end
end