mirror of
https://github.com/Shopify/liquid.git
synced 2025-10-09 00:01:30 -04:00
Merge pull request #1569 from Shopify/registers-refactor
Rename and alias Liquid::StaticRegisters to Liquid::Registers
This commit is contained in:
commit
f64471eb4e
@ -13,7 +13,7 @@
|
|||||||
* Hash registers no longer leak into subcontexts as static registers (#1564) [Chris AtLee]
|
* Hash registers no longer leak into subcontexts as static registers (#1564) [Chris AtLee]
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
* Liquid::Context#registers now always returns a Liquid::StaticRegisters object, though supports the most used Hash functions for compatibility (#1553)
|
* Liquid::Context#registers now always returns a Liquid::Registers object, though supports the most used Hash functions for compatibility (#1553)
|
||||||
|
|
||||||
## 5.3.0 2022-03-22
|
## 5.3.0 2022-03-22
|
||||||
|
|
||||||
|
@ -84,8 +84,7 @@ require 'liquid/tokenizer'
|
|||||||
require 'liquid/parse_context'
|
require 'liquid/parse_context'
|
||||||
require 'liquid/partial_cache'
|
require 'liquid/partial_cache'
|
||||||
require 'liquid/usage'
|
require 'liquid/usage'
|
||||||
require 'liquid/register'
|
require 'liquid/registers'
|
||||||
require 'liquid/static_registers'
|
|
||||||
require 'liquid/template_factory'
|
require 'liquid/template_factory'
|
||||||
|
|
||||||
# Load all the tags of the standard library
|
# Load all the tags of the standard library
|
||||||
|
@ -28,7 +28,7 @@ module Liquid
|
|||||||
|
|
||||||
@static_environments = [static_environments].flat_map(&:freeze).freeze
|
@static_environments = [static_environments].flat_map(&:freeze).freeze
|
||||||
@scopes = [(outer_scope || {})]
|
@scopes = [(outer_scope || {})]
|
||||||
@registers = registers.is_a?(StaticRegisters) ? registers : StaticRegisters.new(registers)
|
@registers = registers.is_a?(Registers) ? registers : Registers.new(registers)
|
||||||
@errors = []
|
@errors = []
|
||||||
@partial = false
|
@partial = false
|
||||||
@strict_variables = false
|
@strict_variables = false
|
||||||
@ -144,7 +144,7 @@ module Liquid
|
|||||||
self.class.build(
|
self.class.build(
|
||||||
resource_limits: resource_limits,
|
resource_limits: resource_limits,
|
||||||
static_environments: static_environments,
|
static_environments: static_environments,
|
||||||
registers: StaticRegisters.new(registers)
|
registers: Registers.new(registers)
|
||||||
).tap do |subcontext|
|
).tap do |subcontext|
|
||||||
subcontext.base_scope_depth = base_scope_depth + 1
|
subcontext.base_scope_depth = base_scope_depth + 1
|
||||||
subcontext.exception_renderer = exception_renderer
|
subcontext.exception_renderer = exception_renderer
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
module Liquid
|
|
||||||
class Register
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,35 +1,35 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Liquid
|
module Liquid
|
||||||
class StaticRegisters
|
class Registers
|
||||||
attr_reader :static
|
attr_reader :static
|
||||||
|
|
||||||
def initialize(registers = {})
|
def initialize(registers = {})
|
||||||
@static = registers.is_a?(StaticRegisters) ? registers.static : registers
|
@static = registers.is_a?(Registers) ? registers.static : registers
|
||||||
@registers = {}
|
@changes = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
def []=(key, value)
|
def []=(key, value)
|
||||||
@registers[key] = value
|
@changes[key] = value
|
||||||
end
|
end
|
||||||
|
|
||||||
def [](key)
|
def [](key)
|
||||||
if @registers.key?(key)
|
if @changes.key?(key)
|
||||||
@registers[key]
|
@changes[key]
|
||||||
else
|
else
|
||||||
@static[key]
|
@static[key]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def delete(key)
|
def delete(key)
|
||||||
@registers.delete(key)
|
@changes.delete(key)
|
||||||
end
|
end
|
||||||
|
|
||||||
UNDEFINED = Object.new
|
UNDEFINED = Object.new
|
||||||
|
|
||||||
def fetch(key, default = UNDEFINED, &block)
|
def fetch(key, default = UNDEFINED, &block)
|
||||||
if @registers.key?(key)
|
if @changes.key?(key)
|
||||||
@registers.fetch(key)
|
@changes.fetch(key)
|
||||||
elsif default != UNDEFINED
|
elsif default != UNDEFINED
|
||||||
if block_given?
|
if block_given?
|
||||||
@static.fetch(key, &block)
|
@static.fetch(key, &block)
|
||||||
@ -42,7 +42,10 @@ module Liquid
|
|||||||
end
|
end
|
||||||
|
|
||||||
def key?(key)
|
def key?(key)
|
||||||
@registers.key?(key) || @static.key?(key)
|
@changes.key?(key) || @static.key?(key)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Alias for backwards compatibility
|
||||||
|
StaticRegisters = Registers
|
||||||
end
|
end
|
@ -529,7 +529,7 @@ class ContextTest < Minitest::Test
|
|||||||
registers = {
|
registers = {
|
||||||
my_register: :my_value,
|
my_register: :my_value,
|
||||||
}
|
}
|
||||||
super_context = Context.new({}, {}, StaticRegisters.new(registers))
|
super_context = Context.new({}, {}, Registers.new(registers))
|
||||||
super_context.registers[:my_register] = :my_alt_value
|
super_context.registers[:my_register] = :my_alt_value
|
||||||
subcontext = super_context.new_isolated_subcontext
|
subcontext = super_context.new_isolated_subcontext
|
||||||
assert_equal(:my_value, subcontext.registers[:my_register])
|
assert_equal(:my_value, subcontext.registers[:my_register])
|
||||||
@ -623,12 +623,12 @@ class ContextTest < Minitest::Test
|
|||||||
my_register: :my_value,
|
my_register: :my_value,
|
||||||
}
|
}
|
||||||
c = Context.new({}, {}, registers)
|
c = Context.new({}, {}, registers)
|
||||||
assert_instance_of(StaticRegisters, c.registers)
|
assert_instance_of(Registers, c.registers)
|
||||||
assert_equal(:my_value, c.registers[:my_register])
|
assert_equal(:my_value, c.registers[:my_register])
|
||||||
|
|
||||||
r = StaticRegisters.new(registers)
|
r = Registers.new(registers)
|
||||||
c = Context.new({}, {}, r)
|
c = Context.new({}, {}, r)
|
||||||
assert_instance_of(StaticRegisters, c.registers)
|
assert_instance_of(Registers, c.registers)
|
||||||
assert_equal(:my_value, c.registers[:my_register])
|
assert_equal(:my_value, c.registers[:my_register])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -132,7 +132,7 @@ class PartialCacheUnitTest < Minitest::Test
|
|||||||
'my_partial' => 'my shared value'
|
'my_partial' => 'my shared value'
|
||||||
)
|
)
|
||||||
context = Liquid::Context.build(
|
context = Liquid::Context.build(
|
||||||
registers: Liquid::StaticRegisters.new(
|
registers: Liquid::Registers.new(
|
||||||
file_system: shared_file_system,
|
file_system: shared_file_system,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
require 'test_helper'
|
require 'test_helper'
|
||||||
|
|
||||||
class StaticRegistersUnitTest < Minitest::Test
|
class RegistersUnitTest < Minitest::Test
|
||||||
include Liquid
|
include Liquid
|
||||||
|
|
||||||
def test_set
|
def test_set
|
||||||
static_register = StaticRegisters.new(a: 1, b: 2)
|
static_register = Registers.new(a: 1, b: 2)
|
||||||
static_register[:b] = 22
|
static_register[:b] = 22
|
||||||
static_register[:c] = 33
|
static_register[:c] = 33
|
||||||
|
|
||||||
@ -16,13 +16,13 @@ class StaticRegistersUnitTest < Minitest::Test
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_get_missing_key
|
def test_get_missing_key
|
||||||
static_register = StaticRegisters.new
|
static_register = Registers.new
|
||||||
|
|
||||||
assert_nil(static_register[:missing])
|
assert_nil(static_register[:missing])
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_delete
|
def test_delete
|
||||||
static_register = StaticRegisters.new(a: 1, b: 2)
|
static_register = Registers.new(a: 1, b: 2)
|
||||||
static_register[:b] = 22
|
static_register[:b] = 22
|
||||||
static_register[:c] = 33
|
static_register[:c] = 33
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ class StaticRegistersUnitTest < Minitest::Test
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_fetch
|
def test_fetch
|
||||||
static_register = StaticRegisters.new(a: 1, b: 2)
|
static_register = Registers.new(a: 1, b: 2)
|
||||||
static_register[:b] = 22
|
static_register[:b] = 22
|
||||||
static_register[:c] = 33
|
static_register[:c] = 33
|
||||||
|
|
||||||
@ -61,7 +61,7 @@ class StaticRegistersUnitTest < Minitest::Test
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_key
|
def test_key
|
||||||
static_register = StaticRegisters.new(a: 1, b: 2)
|
static_register = Registers.new(a: 1, b: 2)
|
||||||
static_register[:b] = 22
|
static_register[:b] = 22
|
||||||
static_register[:c] = 33
|
static_register[:c] = 33
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ class StaticRegistersUnitTest < Minitest::Test
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_static_register_can_be_frozen
|
def test_static_register_can_be_frozen
|
||||||
static_register = StaticRegisters.new(a: 1)
|
static_register = Registers.new(a: 1)
|
||||||
|
|
||||||
static_register.static.freeze
|
static_register.static.freeze
|
||||||
|
|
||||||
@ -94,14 +94,14 @@ class StaticRegistersUnitTest < Minitest::Test
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_new_static_retains_static
|
def test_new_static_retains_static
|
||||||
static_register = StaticRegisters.new(a: 1, b: 2)
|
static_register = Registers.new(a: 1, b: 2)
|
||||||
static_register[:b] = 22
|
static_register[:b] = 22
|
||||||
static_register[:c] = 33
|
static_register[:c] = 33
|
||||||
|
|
||||||
new_static_register = StaticRegisters.new(static_register)
|
new_static_register = Registers.new(static_register)
|
||||||
new_static_register[:b] = 222
|
new_static_register[:b] = 222
|
||||||
|
|
||||||
newest_static_register = StaticRegisters.new(new_static_register)
|
newest_static_register = Registers.new(new_static_register)
|
||||||
newest_static_register[:c] = 333
|
newest_static_register[:c] = 333
|
||||||
|
|
||||||
assert_equal(1, static_register[:a])
|
assert_equal(1, static_register[:a])
|
||||||
@ -118,11 +118,11 @@ class StaticRegistersUnitTest < Minitest::Test
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_multiple_instances_are_unique
|
def test_multiple_instances_are_unique
|
||||||
static_register_1 = StaticRegisters.new(a: 1, b: 2)
|
static_register_1 = Registers.new(a: 1, b: 2)
|
||||||
static_register_1[:b] = 22
|
static_register_1[:b] = 22
|
||||||
static_register_1[:c] = 33
|
static_register_1[:c] = 33
|
||||||
|
|
||||||
static_register_2 = StaticRegisters.new(a: 10, b: 20)
|
static_register_2 = Registers.new(a: 10, b: 20)
|
||||||
static_register_2[:b] = 220
|
static_register_2[:b] = 220
|
||||||
static_register_2[:c] = 330
|
static_register_2[:c] = 330
|
||||||
|
|
||||||
@ -138,11 +138,11 @@ class StaticRegistersUnitTest < Minitest::Test
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_initialization_reused_static_same_memory_object
|
def test_initialization_reused_static_same_memory_object
|
||||||
static_register_1 = StaticRegisters.new(a: 1, b: 2)
|
static_register_1 = Registers.new(a: 1, b: 2)
|
||||||
static_register_1[:b] = 22
|
static_register_1[:b] = 22
|
||||||
static_register_1[:c] = 33
|
static_register_1[:c] = 33
|
||||||
|
|
||||||
static_register_2 = StaticRegisters.new(static_register_1)
|
static_register_2 = Registers.new(static_register_1)
|
||||||
|
|
||||||
assert_equal(1, static_register_2[:a])
|
assert_equal(1, static_register_2[:a])
|
||||||
assert_equal(2, static_register_2[:b])
|
assert_equal(2, static_register_2[:b])
|
Loading…
x
Reference in New Issue
Block a user