Sha256: ab36585a87ea727cded840eab0599f484a4f9b8a275818b81edebfae24e7067f
Contents?: true
Size: 1.1 KB
Versions: 21
Compression:
Stored size: 1.1 KB
Contents
module ActiveTools module CoreExtension module MethodDigger module ObjectExtension def method_digger(tree, &block) tree.stringify_keys! tree.each do |method, value| if method.last == "*" method = method[0..-2] cycle_call(method) do |nested| yield self, method, nested, value if value.is_a?(Hash) && !nested.nil? nested.method_digger(value, &block) end end else response = try(method) yield self, method, response, value if value.is_a?(Hash) && !response.nil? response.method_digger(value, &block) end end end end def cycle_call(method, &block) object = self export = [] while object = object.try(method) yield object if block_given? export << object end export end end ::Object.send(:include, ObjectExtension) end end end
Version data entries
21 entries across 21 versions & 1 rubygems