Vahagn Hayrapetyan wrote in post #991813:
> Hi, I have the following snippet of code:
>
> def x
>   File.open('screen.css') do |f|
>     while line = f.gets
>       file = line.match(/"(\w*.css)"/)
>       puts file.class #MatchData
>       puts file.methods #to_enum defined
>       e = file.to_enum
>       puts e.class #Enumerator
>       puts e.methods #each method defined
>       e.each do |entry|
>          puts entry
>       end
>     end
>   end
> end
>
> The result of the regex operation gets stored in "file" as a MatchData
> object. Then I convert it to an Enumerator object, which by all accounts
> has an each method defined. Yet when I try to "e.each" here's what I
> get:
>
> undefined method `each' for #<MatchData "\"reset.css\"" 1:"reset.css">
> (NoMethodError).
>
> Then I check the docs for the MatchData class:
> http://www.ruby-doc.org/core/classes/MatchData.html
>
> and find that no, "to_enum" isn't defined.

to_enum() is defined in Object, and all classes inherit from Object. 
You need to hook up an enumerator's each() method to *an iteration 
method of another object*.  You specify the iteration method as an 
argument to to_enum().  If you don't specify an iteration method, the 
default is each()--and the MatchData class does not define an each() 
method.  Hence your error.

-- 
Posted via http://www.ruby-forum.com/.