Flowdock
setup() public

No documentation

This method has no description. You can help the Ruby community by adding new notes.

Hide source
# File lib/set.rb, line 699
    def setup   # :nodoc:
      @@setup and return

      @@mutex.synchronize do
        # a hack to shut up warning
        alias_method :old_init, :initialize

        begin
          require 'rbtree'

          module_eval             def initialize(*args)              @hash = RBTree.new              super            end            def add(o)              o.respond_to?(:<=>) or raise ArgumentError, "value must respond to <=>"              super            end            alias << add, __FILE__, __LINE__+1
        rescue LoadError
          module_eval             def initialize(*args)              @keys = nil              super            end            def clear              @keys = nil              super            end            def replace(enum)              @keys = nil              super            end            def add(o)              o.respond_to?(:<=>) or raise ArgumentError, "value must respond to <=>"              @keys = nil              super            end            alias << add            def delete(o)              @keys = nil              @hash.delete(o)              self            end            def delete_if              block_given? or return enum_for(__method__) { size }              n = @hash.size              super              @keys = nil if @hash.size != n              self            end            def keep_if              block_given? or return enum_for(__method__) { size }              n = @hash.size              super              @keys = nil if @hash.size != n              self            end            def merge(enum)              @keys = nil              super            end            def each(&block)              block or return enum_for(__method__) { size }              to_a.each(&block)              self            end            def to_a              (@keys = @hash.keys).sort! unless @keys              @keys            end            def freeze              to_a              super            end            def rehash              @keys = nil              super            end, __FILE__, __LINE__+1
        end
        # a hack to shut up warning
        remove_method :old_init

        @@setup = true
      end
    end
Register or log in to add new notes.