Reimplementation of Static Registers (#1157)

This commit is contained in:
Mike Angell
2019-09-18 13:25:55 +10:00
committed by GitHub
parent 0d26f05bb8
commit d8403af515
5 changed files with 260 additions and 9 deletions
+34
View File
@@ -0,0 +1,34 @@
module Liquid
class StaticRegisters
attr_reader :static_registers, :registers
def initialize(registers = {})
@static_registers = registers.is_a?(StaticRegisters) ? registers.static_registers : registers.freeze
@registers = {}
end
def []=(key, value)
@registers[key] = value
end
def [](key)
if @registers.key?(key)
@registers[key]
else
@static_registers[key]
end
end
def delete(key)
@registers.delete(key)
end
def fetch(key, default = nil)
key?(key) ? self[key] : default
end
def key?(key)
@registers.key?(key) || @static_registers.key?(key)
end
end
end