mirror of
https://github.com/kemko/liquid.git
synced 2026-01-01 15:55:40 +03:00
Merge pull request #1250 from Shopify/static-registers/fetch-raise-on-missing
[StaticRegisters] Fetch raise on missing
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
|
||||
* Split Strainer class as a factory and a template (#1208) [Thierry Joyal]
|
||||
* Remove handling of a nil context in the Strainer class (#1218) [Thierry Joyal]
|
||||
* StaticRegisters#fetch to raise on missing key (#1250) [Thierry Joyal]
|
||||
|
||||
## 4.0.3 / 2019-03-12
|
||||
|
||||
|
||||
@@ -25,8 +25,16 @@ module Liquid
|
||||
@registers.delete(key)
|
||||
end
|
||||
|
||||
def fetch(key, default = nil)
|
||||
key?(key) ? self[key] : default
|
||||
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)
|
||||
|
||||
@@ -51,7 +51,15 @@ class StaticRegistersUnitTest < Minitest::Test
|
||||
assert_equal("one", static_register.fetch(:one))
|
||||
assert_equal(3, static_register.fetch("two"))
|
||||
assert_nil(static_register.fetch(false))
|
||||
assert_nil(static_register.fetch("unknown"))
|
||||
|
||||
assert_raises(KeyError) do
|
||||
static_register.fetch(:unknown)
|
||||
end
|
||||
assert_equal("default", static_register.fetch(:unknown, "default"))
|
||||
|
||||
static_register[:unknown] = "known"
|
||||
assert_equal("known", static_register.fetch(:unknown))
|
||||
assert_equal("known", static_register.fetch(:unknown, "default"))
|
||||
end
|
||||
|
||||
def test_fetch_default
|
||||
|
||||
Reference in New Issue
Block a user