From 6fd5e4e6ce573f1c39093e7fc267280a6565b855 Mon Sep 17 00:00:00 2001 From: Mike Angell Date: Wed, 28 Aug 2019 23:35:14 +1000 Subject: [PATCH] Use same approach in scope and environment --- lib/liquid/context.rb | 6 +++--- test/integration/variable_test.rb | 5 +---- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/liquid/context.rb b/lib/liquid/context.rb index 07d7095..085a099 100644 --- a/lib/liquid/context.rb +++ b/lib/liquid/context.rb @@ -143,10 +143,10 @@ module Liquid def find_variable(key, raise_on_not_found: true) # This was changed from find() to find_index() because this is a very hot # path and find_index() is optimized in MRI to reduce object allocation - index = @scopes.find_index { |s| s.key?(key) } - scope = @scopes[index] if index - scope ||= @environments.find { |e| !e[key].nil? || @strict_variables && raise_on_not_found } || {} + scope = (index = @scopes.find_index { |s| s.key?(key) }) && @scopes[index] + scope ||= (index = @environments.find_index { |s| s.key?(key) }) && @environments[index] + scope ||= {} variable = lookup_and_evaluate(scope, key, raise_on_not_found: raise_on_not_found).to_liquid variable.context = self if variable.respond_to?(:context=) diff --git a/test/integration/variable_test.rb b/test/integration/variable_test.rb index abd6e70..54c9c72 100644 --- a/test/integration/variable_test.rb +++ b/test/integration/variable_test.rb @@ -80,10 +80,7 @@ class VariableTest < Minitest::Test assigns['test'] = 'Tobi' assert_equal 'Hello Tobi', template.render!(assigns) assigns.delete('test') - e = assert_raises(RuntimeError) do - template.render!(assigns) - end - assert_equal "Unknown variable 'test'", e.message + assert_equal "Hello ", template.render!(assigns) end def test_multiline_variable