Sha256: 31cdf6a64d8c3a80fbf871c5e0a41ba0ffdc5edb05515493a745cc9a6704227c

Contents?: true

Size: 468 Bytes

Versions: 7

Compression:

Stored size: 468 Bytes

Contents

module Spruz
  class Bijection < Hash
    def initialize(inverted = Bijection.new(self))
      @inverted = inverted
    end

    def fill
      if empty?
        yield self
        freeze
      end
      self
    end

    def freeze
      r = super
      unless @inverted.frozen?
        @inverted.freeze
      end
      r
    end

    def []=(key, value)
      return if key?(key)
      super
      @inverted[value] = key
    end

    attr_reader :inverted
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
spruz-0.2.1 lib/spruz/bijection.rb
spruz-0.2.0 lib/spruz/bijection.rb
spruz-0.1.5 lib/spruz/bijection.rb
spruz-0.1.3 lib/spruz/bijection.rb
spruz-0.1.2 lib/spruz/bijection.rb
spruz-0.1.1 lib/spruz/bijection.rb
spruz-0.1.0 lib/spruz/bijection.rb