class Liquid::Assign
def assign_score_of(val)
def assign_score_of(val) if val.instance_of?(String) val.bytesize elsif val.instance_of?(Array) sum = 1 # Uses #each to avoid extra allocations. val.each { |child| sum += assign_score_of(child) } sum elsif val.instance_of?(Hash) sum = 1 val.each do |key, entry_value| sum += assign_score_of(key) sum += assign_score_of(entry_value) end sum else 1 end end