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