Sha256: 58f046b1b99bcf2426990abd05ad77effc0350daea12b51703de83b782840617

Contents?: true

Size: 779 Bytes

Versions: 14

Compression:

Stored size: 779 Bytes

Contents

module Zafu

  if RUBY_VERSION.split('.')[0..1].join('.').to_f > 1.8
    OrderedHash = Hash
  else
    class OrderedHash < Hash

      def []=(k, v)
        get_keys << k unless get_keys.include?(k)
        super
      end

      def merge!(hash)
        hash.keys.each do |k|
          get_keys << k unless get_keys.include?(k)
        end
        super
      end

      alias o_keys keys
      def get_keys
        @keys ||= o_keys
      end

      def keys
        get_keys.dup
      end

      def each
        keys.each do |k|
          yield(k, self[k])
        end
      end

      def delete(k)
        get_keys.delete(k)
        super
      end

      def dup
        copy = super
        copy.instance_variable_set(:@keys, keys)
        copy
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
zafu-0.7.9 lib/zafu/ordered_hash.rb
zafu-0.7.8 lib/zafu/ordered_hash.rb
zafu-0.7.7 lib/zafu/ordered_hash.rb
zafu-0.7.6 lib/zafu/ordered_hash.rb
zafu-0.7.5 lib/zafu/ordered_hash.rb
zafu-0.7.4 lib/zafu/ordered_hash.rb
zafu-0.7.3 lib/zafu/ordered_hash.rb
zafu-0.7.2 lib/zafu/ordered_hash.rb
zafu-0.7.1 lib/zafu/ordered_hash.rb
zafu-0.7.0 lib/zafu/ordered_hash.rb
zafu-0.6.3 lib/zafu/ordered_hash.rb
zafu-0.6.2 lib/zafu/ordered_hash.rb
zafu-0.6.1 lib/zafu/ordered_hash.rb
zafu-0.6.0 lib/zafu/ordered_hash.rb