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 end
def as_liquid(item) def as_liquid(item)
case item if item.class == Hash
when Hash
pairs = item.map { |k, v| as_liquid([k, v]) } pairs = item.map { |k, v| as_liquid([k, v]) }
Hash[pairs] Hash[pairs]
when Array elsif item.class == Array
item.map{ |i| as_liquid(i) } item.map{ |i| as_liquid(i) }
else # simple type elsif item.respond_to?(:to_liquid)
if item.respond_to?(:to_liquid) liquidated = item.to_liquid
liquidated = item.to_liquid # prevent infinite recursion for simple types (which return `self`)
# prevent infinite recursion if liquidated == item
if liquidated == item
item
else
as_liquid(liquidated)
end
else
item item
else
as_liquid(liquidated)
end end
else
item
end end
end end
end end