PageRenderTime 123ms CodeModel.GetById 116ms app.highlight 5ms RepoModel.GetById 1ms app.codeStats 0ms

/tools/Ruby/lib/ruby/1.8/test/unit/util/procwrapper.rb

http://github.com/agross/netopenspace
Ruby | 48 lines | 27 code | 7 blank | 14 comment | 1 complexity | 5988291605cf32cbb930cd999f71c26b MD5 | raw file
 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