Il giorno ven, 20/02/2009 alle 11.15 -0500, Matthew Wilson ha scritto:
> Sounds neat. But how does your start command affect the start command
> already built into ditz? Does it do everything the old one did AND
> start the clock?
Yes, it does. This is possible thanks to the ruby's capability to
re-open existing classes. Look at this excerpt from
issue-timetracker.rb[1]:
class Issue
alias :old_start_work :start_work
alias :old_stop_work :stop_work
def start_work(who, comment)
self.mark_time = Time.now
old_start_work(who, comment)
end
def stop_work(who, comment)
self.time_spent += Time.now - self.mark_time
self.mark_time = Time.now
old_stop_work(who, comment)
end
end
The code above re-opens the class Issue, then it saves the current
start_work and stop_work methods (aliasing) and finally it redefines
those method augmenting their functionalities.
Regards,
Andrea
_______________________________________________
ditz-talk mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/ditz-talk