# Where is the each\_recursive method defined?

**URL:** <https://www.ruby-forum.com/t/where-is-the-each-recursive-method-defined/48050>\
**Category:** Ruby\
**Created:** [November 16, 2005, 9:04am UTC](https://www.ruby-forum.com/t/where-is-the-each-recursive-method-defined/48050 "2005-11-16T09:04:43Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![snailigrape](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7c8e57/32.png) [@snailigrape](https://www.ruby-forum.com/u/snailigrape)\
**Post date:** [November 16, 2005, 9:04am UTC](https://www.ruby-forum.com/t/where-is-the-each-recursive-method-defined/48050/1 "2005-11-16T09:04:43Z")

</div>

#i’m new to ruby. i download the machanize gem and install it.  
in machanize.rb , root\_node has an each\_recursive method,but i can’t  
fine the definition in docs. who can tell me what to do,thanks in  
advance.

def self.extract\_all\_from(root\_node)  
fields = []  
root\_node.each\_recursive {|node|  
if (node.name.downcase == ‘input’ and  
%w(text password hidden checkbox radio  
int).include?(node.attributes[‘type’].downcase)) or  
%w(textarea option).include?(node.name.downcase)  
fields \<\< Field.new(node.attributes[‘name’],  
node.attributes[‘value’])  
end  
}  
return fields  
end

---

<div class="post-metadata">

**Author:** ![snailigrape](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7c8e57/32.png) [@snailigrape](https://www.ruby-forum.com/u/snailigrape)\
**Post date:** [November 16, 2005, 8:12pm UTC](https://www.ruby-forum.com/t/where-is-the-each-recursive-method-defined/48050/2 "2005-11-16T20:12:51Z")

</div>

On 11/16/05, removed\_email\_address@domain.invalid [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> int).include?(node.attributes[‘type’].downcase)) or  
> %w(textarea option).include?(node.name.downcase)  
> fields \<\< Field.new(node.attributes[‘name’],  
> node.attributes[‘value’])  
> end  
> }  
> return fields  
> end

It is part of additions made to the REXML library by mechanize, in  
mechanize/parsing.rb:

module REXML::Node

# Visit all subnodes of +self+ recursively

def each\_recursive(&block) # :yields: node  
self.elements.each {|node|  
block.call(node)  
node.each\_recursive(&block)  
}  
end

I hope that explains to you what it does.

Ryan
