reduce nesting of #as_liquid

This commit is contained in:
Aidan Feldman 2014-11-27 04:20:05 -06:00
parent 87d08ec827
commit 4776b27ff3
1 changed files with 10 additions and 13 deletions

View File

@ -327,24 +327,21 @@ module Jekyll
end
def as_liquid(item)
case item
when Hash
if item.class == Hash
pairs = item.map { |k, v| as_liquid([k, v]) }
Hash[pairs]
when Array
elsif item.class == Array
item.map{ |i| as_liquid(i) }
else # simple type
if item.respond_to?(:to_liquid)
liquidated = item.to_liquid
# prevent infinite recursion
if liquidated == item
item
else
as_liquid(liquidated)
end
else
elsif item.respond_to?(:to_liquid)
liquidated = item.to_liquid
# prevent infinite recursion for simple types (which return `self`)
if liquidated == item
item
else
as_liquid(liquidated)
end
else
item
end
end
end