Sha256: 0f62c0d33b5c40dd71593578a9fa4a8f698532afa3d4d7b9dbd8271b7ebe1bcf

Contents?: true

Size: 1.02 KB

Versions: 6

Compression:

Stored size: 1.02 KB

Contents

module HasGlobalSession
  class IntegratedSession
    attr_reader :local, :global
    
    def initialize(local, global)
      @local = local
      @global = global
    end

    def [](key)
      key = key.to_s
      if @global.supports_key?(key)
        @global[key]
      else
        @local[key]
      end
    end

    def []=(key, value)
      key = key.to_s
      if @global.supports_key?(key)
        @global[key] = value
      else
        @local[key] = value
      end
    end

    def has_key?(key)
      key = key.to_s
      @global.has_key(key) || @local.has_key?(key)
    end

    def keys
      @global.keys + @local.keys
    end

    def values
      @global.values + @local.values
    end

    def each_pair(&block)
      @global.each_pair(&block)
      @local.each_pair(&block)
    end

    def method_missing(meth, *args)
      if @global.respond_to?(meth)
        return @global.send(meth, *args)
      elsif @local.respond_to?(meth)
        return @local.send(meth, *args)
      else
        super
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
has_global_session-0.9.5 lib/has_global_session/integrated_session.rb
has_global_session-0.9.3 lib/has_global_session/integrated_session.rb
has_global_session-0.9.2 lib/has_global_session/integrated_session.rb
has_global_session-0.9.1 lib/has_global_session/integrated_session.rb
has_global_session-0.9.0 lib/has_global_session/integrated_session.rb
has_global_session-0.8.10 lib/has_global_session/integrated_session.rb