From 0cc8b68a97b7084602c40d0c762a6e3c092a07d7 Mon Sep 17 00:00:00 2001 From: Justin Li Date: Tue, 2 Feb 2016 23:22:46 -0500 Subject: [PATCH] Make logic in Context#lookup_and_evaluate more understandable --- lib/liquid/context.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/liquid/context.rb b/lib/liquid/context.rb index bab5008..810441c 100644 --- a/lib/liquid/context.rb +++ b/lib/liquid/context.rb @@ -205,10 +205,14 @@ module Liquid end def lookup_and_evaluate(obj, key) - if (value = obj[key]).is_a?(Proc) && obj.respond_to?(:[]=) - obj[key] = (value.arity == 0) ? value.call : value.call(self) - elsif strict_variables && obj.respond_to?(:key?) && !obj.key?(key) + if @strict_variables && obj.respond_to?(:key?) && !obj.key?(key) raise Liquid::UndefinedVariable, "undefined variable #{key}" + end + + value = obj[key] + + if value.is_a?(Proc) && obj.respond_to?(:[]=) + obj[key] = (value.arity == 0) ? value.call : value.call(self) else value end