@@ -175,30 +175,31 @@ def deep_merge(*values, sentinel: nil, concat: false)
175175 # @api private
176176 #
177177 # @param data [Hash{Symbol=>Object}, Array<Object>, Object]
178- # @param pick [Symbol, Integer, Array<Symbol, Integer>, nil]
179- # @param sentinel [Object, nil]
178+ # @param pick [Symbol, Integer, Array<Symbol, Integer>, Proc, nil]
180179 # @param blk [Proc, nil]
181180 #
182181 # @return [Object, nil]
183- def dig ( data , pick , sentinel = nil , &blk )
184- case [ data , pick , blk ]
185- in [ _ , nil , nil ]
182+ def dig ( data , pick , &blk )
183+ case [ data , pick ]
184+ in [ _ , nil ]
186185 data
187- in [ Hash , Symbol , _ ] | [ Array , Integer , _ ]
188- blk . nil? ? data . fetch ( pick , sentinel ) : data . fetch ( pick , & blk )
189- in [ Hash | Array , Array , _ ]
186+ in [ Hash , Symbol ] | [ Array , Integer ]
187+ data . fetch ( pick ) { blk &. call }
188+ in [ Hash | Array , Array ]
190189 pick . reduce ( data ) do |acc , key |
191190 case acc
192191 in Hash if acc . key? ( key )
193192 acc . fetch ( key )
194193 in Array if key . is_a? ( Integer ) && key < acc . length
195194 acc [ key ]
196195 else
197- return blk . nil? ? sentinel : blk . call
196+ return blk & .call
198197 end
199198 end
200- in _
201- blk . nil? ? sentinel : blk . call
199+ in [ _ , Proc ]
200+ pick . call ( data )
201+ else
202+ blk &.call
202203 end
203204 end
204205 end
0 commit comments