mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-14 00:10:39 -07:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e429c940a3 |
@@ -20,10 +20,6 @@ group :benchmark, :test do
|
||||
end
|
||||
end
|
||||
|
||||
group :development do
|
||||
gem "webrick"
|
||||
end
|
||||
|
||||
group :test do
|
||||
gem 'rubocop', '~> 1.61.0'
|
||||
gem 'rubocop-shopify', '~> 2.12.0', require: false
|
||||
|
||||
@@ -1007,10 +1007,10 @@ module Liquid
|
||||
|
||||
return value if !value.nil? || !property_or_keys.is_a?(String)
|
||||
|
||||
keys = property_or_keys.split('.')
|
||||
keys.reduce(drop) do |drop, key|
|
||||
drop.respond_to?(:[]) ? drop[key] : drop
|
||||
end
|
||||
variable_lookup = Liquid::VariableLookup.parse("drop.#{property_or_keys}")
|
||||
variable_lookup.evaluate(
|
||||
Liquid::Context.new("drop" => drop),
|
||||
)
|
||||
end
|
||||
|
||||
def raise_property_error(property)
|
||||
|
||||
@@ -1337,6 +1337,30 @@ class StandardFiltersTest < Minitest::Test
|
||||
assert_template_result(expected_output, template, { "products" => TestDeepEnumerable.new })
|
||||
end
|
||||
|
||||
def test_access_arrays
|
||||
template = <<~LIQUID
|
||||
{{- products | map: 'colors[0]["name"]' | join: ", " -}}
|
||||
LIQUID
|
||||
expected_output = "red, red, blue"
|
||||
|
||||
assert_template_result(expected_output, template, {
|
||||
"products" => [
|
||||
{ "title" => { "content" => "Pro goggles" }, "colors" => [{ "name" => "red", "hex" => "#ff0000" }] },
|
||||
{ "title" => { "content" => "Thermal gloves" }, "colors" => [{ "name" => "red", "hex" => "#ff0000" }] },
|
||||
{ "title" => { "content" => "Alpine jacket" }, "colors" => [{ "name" => "blue", "hex" => "#0000ff" }] },
|
||||
],
|
||||
})
|
||||
end
|
||||
|
||||
def test_access_lookup_with_brackets
|
||||
template = <<~LIQUID
|
||||
{{- products | map: 'title["content"]' | join: ', ' -}}
|
||||
LIQUID
|
||||
expected_output = "Pro goggles, Thermal gloves, Alpine jacket, Mountain boots, Safety helmet"
|
||||
|
||||
assert_template_result(expected_output, template, { "products" => TestDeepEnumerable.new })
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def with_timezone(tz)
|
||||
|
||||
Reference in New Issue
Block a user