Sha256: 1c552f98f282bc15685a52bdd3d8b1ed5f4e4b41db30f00673cc052c186a7929

Contents?: true

Size: 847 Bytes

Versions: 4

Compression:

Stored size: 847 Bytes

Contents

# frozen_string_literal: true

module Liquid
  class StaticRegisters
    attr_reader :static

    def initialize(registers = {})
      @static    = registers.is_a?(StaticRegisters) ? registers.static : registers
      @registers = {}
    end

    def []=(key, value)
      @registers[key] = value
    end

    def [](key)
      if @registers.key?(key)
        @registers[key]
      else
        @static[key]
      end
    end

    def delete(key)
      @registers.delete(key)
    end

    UNDEFINED = Object.new

    def fetch(key, default = UNDEFINED, &block)
      if @registers.key?(key)
        @registers.fetch(key)
      elsif default != UNDEFINED
        @static.fetch(key, default, &block)
      else
        @static.fetch(key, &block)
      end
    end

    def key?(key)
      @registers.key?(key) || @static.key?(key)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
liquid-5.2.0 lib/liquid/static_registers.rb
liquid-5.1.0 lib/liquid/static_registers.rb
liquid-5.0.1 lib/liquid/static_registers.rb
liquid-5.0.0 lib/liquid/static_registers.rb