Edward Faulkner
12/8/2005 5:00:00 PM
On Fri, Dec 09, 2005 at 01:32:35AM +0900, Uwe Schmitt wrote:
> methods = { :FIND_START => self.find_start,
> :SCAN_HEADER => self.scan_header
> }
This doesn't do what you want. It's trying to call the "find_start"
and "scan_header" methods on the Parser Class object. There are
several possibilities to do this correctly:
1. Call self.instance_method(:find_start) to get an unbound method,
which you'll need to #bind before calling it.
2. Construct your "methods" table in #initialize, and use
self.method(:find_start) to get a bound method.
3. Don't build a method table at all. Do this instead:
def scan(line)
self.send(@state,line)
end
regards,
Ed