Add sum filter to standard filters

This commit is contained in:
Adam Klingbaum
2023-06-19 19:11:05 +00:00
parent 42e5c52336
commit af66bc8a5f
2 changed files with 79 additions and 0 deletions
+25
View File
@@ -869,6 +869,31 @@ module Liquid
false_check || (input.respond_to?(:empty?) && input.empty?) ? default_value : input
end
# @liquid_public_docs
# @liquid_type filter
# @liquid_category array
# @liquid_summary
# Returns the sum of all elements in an array.
# @liquid_syntax array | sum
# @liquid_return [number]
def sum(input, property = nil)
ary = InputIterator.new(input, context)
if ary.empty?
0
elsif property.nil?
ary.sum do |item|
Utils.to_number(item)
end
else
ary.sum do |item|
item.respond_to?(:[]) ? Utils.to_number(item[property]) : 0
rescue TypeError
raise_property_error(property)
end
end
end
private
attr_reader :context