On Sat, 24 May 2003 10:37:38 +0900, Joel VanderWerf wrote: >> Is there any way to add an observer if and only if it wasn't already >> registered for a particular Observable object? > ><plug> > I don't know about Observable in the standard library, but in my > observable library on RAA, observers are registered in a hash, so > registering twice has no effect. > > However, it is not quite a plug-in replacement for the standard library, > though it allows the same functionality. For instance, you declare an > attr (or method) to be observable, and updates happen when the writer of > the attr is called, rather when a notify method is called. Also, it > allows you to register for changes based on pattern matching and case > matching (===). An example: > > class User > observable :nickname > end > > class NicknameChecker > def initialize(user) > user.when_nickname /\Afred\z/i do > puts "I'll call you Fred from now on." > end > user.when_nickname /\Agumby\z/i do > puts "I refuse to address anyone as Gumby." > end > end > end > > (There are better examples in the RAA package, which, in retrospect, > should probably have been named ObservableAttribute or something.) ></plug> Very nice - but in this particular case I need something working more like standard module (with manually called notify_observers method). -- Marek Janukowicz