Class: Decoding::Decoders::At
- Inherits:
-
Decoding::Decoder
- Object
- Decoding::Decoder
- Decoding::Decoders::At
- Defined in:
- lib/decoding/decoders/at.rb
Overview
Decode a value in deeply nested hashes.
Instance Method Summary collapse
- #call(value) ⇒ Deceoding::Result<a>
-
#initialize(*keys, decoder) ⇒ At
constructor
A new instance of At.
Methods inherited from Decoding::Decoder
Constructor Details
#initialize(*keys, decoder) ⇒ At
Returns a new instance of At.
13 14 15 16 17 |
# File 'lib/decoding/decoders/at.rb', line 13 def initialize(*keys, decoder) @keys = keys.to_a @decoder = decoder.to_decoder super() end |
Instance Method Details
#call(value) ⇒ Deceoding::Result<a>
21 22 23 24 25 26 27 |
# File 'lib/decoding/decoders/at.rb', line 21 def call(value) first, *rest = @keys.reverse nested_decoder = rest.reduce(Decoders::Field.new(first, @decoder)) do |acc, k| Decoders::Field.new(k, acc) end nested_decoder.call(value) end |