1#-- 2# 3# Author:: Nathaniel Talbott. 4# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved. 5# License:: Ruby license. 6 7module Test 8 module Unit 9 module Util 10 11 # Allows the storage of a Proc passed through '&' in a 12 # hash. 13 # 14 # Note: this may be inefficient, since the hash being 15 # used is not necessarily very good. In Observable, 16 # efficiency is not too important, since the hash is 17 # only accessed when adding and removing listeners, 18 # not when notifying. 19 20 class ProcWrapper 21 22 # Creates a new wrapper for a_proc. 23 def initialize(a_proc) 24 @a_proc = a_proc 25 @hash = a_proc.inspect.sub(/^(#<#{a_proc.class}:)/){''}.sub(/(>)$/){''}.hex 26 end 27 28 def hash 29 return @hash 30 end 31 32 def ==(other) 33 case(other) 34 when ProcWrapper 35 return @a_proc == other.to_proc 36 else 37 return super 38 end 39 end 40 alias :eql? :== 41 42 def to_proc 43 return @a_proc 44 end 45 end 46 end 47 end 48end 49