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

Version Path
active_tools-0.2.5 lib/active_tools/core_extension/method_digger.rb
active_tools-0.2.4 lib/active_tools/core_extension/method_digger.rb
active_tools-0.2.3 lib/active_tools/core_extension/method_digger.rb
active_tools-0.2.2 lib/active_tools/core_extension/method_digger.rb
active_tools-0.2.1 lib/active_tools/core_extension/method_digger.rb
active_tools-0.2.0 lib/active_tools/core_extension/method_digger.rb
active_tools-0.1.4 lib/active_tools/core_extension/method_digger.rb
active_tools-0.1.3 lib/active_tools/core_extension/method_digger.rb
active_tools-0.1.2 lib/active_tools/core_extension/method_digger.rb
active_tools-0.1.1 lib/active_tools/core_extension/method_digger.rb
active_tools-0.1.0 lib/active_tools/core_extension/method_digger.rb
active_tools-0.0.52 lib/active_tools/core_extension/method_digger.rb
active_tools-0.0.51 lib/active_tools/core_extension/method_digger.rb
active_tools-0.0.50 lib/active_tools/core_extension/method_digger.rb
active_tools-0.0.42 lib/active_tools/core_extension/method_digger.rb
active_tools-0.0.41 lib/active_tools/core_extension/method_digger.rb
active_tools-0.0.40 lib/active_tools/core_extension/method_digger.rb
active_tools-0.0.39 lib/active_tools/core_extension/method_digger.rb
active_tools-0.0.38 lib/active_tools/core_extension/method_digger.rb
active_tools-0.0.37 lib/active_tools/core_extension/method_digger.rb