methodize_keys! with recursion

Jun 2
class Object
  def try(m, *a, &b); respond_to?(m) ? send(m, *a, &b) : nil; end
  def metaclass; class << self; self; end; end
  def meta_eval &b; metaclass.instance_eval &b; end
  def meta_def name, &b; meta_eval { define_method name, &b }; end
end

module Enumerable
  def methodize_keys!    
    case self
    when Hash
      each do |key, value|
        meta_def(key) { self[key] }
        value.try(:methodize_keys!)
      end
    when Array
      each { |n| n.try(:methodize_keys!) }
    end
  end
end

Comments on “methodize_keys! with recursion”

No comments have been left yet.

Leave a comment

Textile is allowed. If you’re a robot, don’t even bother.

Click here to go home
Powered by aintablog