Cache computed item property (#7301)

Merge pull request 7301
This commit is contained in:
Ashwin Maroli 2019-03-15 22:22:30 +05:30 committed by jekyllbot
parent d4b5760002
commit 3b4151b773
1 changed files with 11 additions and 7 deletions

View File

@ -324,14 +324,18 @@ module Jekyll
end end
def item_property(item, property) def item_property(item, property)
if item.respond_to?(:to_liquid) @item_property_cache ||= {}
property.to_s.split(".").reduce(item.to_liquid) do |subvalue, attribute| @item_property_cache[property] ||= {}
parse_sort_input(subvalue[attribute]) @item_property_cache[property][item] ||= begin
if item.respond_to?(:to_liquid)
property.to_s.split(".").reduce(item.to_liquid) do |subvalue, attribute|
parse_sort_input(subvalue[attribute])
end
elsif item.respond_to?(:data)
parse_sort_input(item.data[property.to_s])
else
parse_sort_input(item[property.to_s])
end end
elsif item.respond_to?(:data)
parse_sort_input(item.data[property.to_s])
else
parse_sort_input(item[property.to_s])
end end
end end