mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-19 02:40:41 -07:00
Merge pull request #540 from Shopify/array-concat
Add array concat filter
This commit is contained in:
@@ -23,7 +23,7 @@ class Servlet < LiquidServlet
|
|||||||
end
|
end
|
||||||
|
|
||||||
def products
|
def products
|
||||||
{ 'products' => products_list, 'description' => description, 'section' => 'Snowboards', 'cool_products' => true}
|
{ 'products' => products_list, 'more_products' => more_products_list, 'description' => description, 'section' => 'Snowboards', 'cool_products' => true}
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
@@ -34,6 +34,11 @@ class Servlet < LiquidServlet
|
|||||||
{'name' => 'Arbor Diamond', 'price' => 59900, 'description' => 'the *arbor diamond* is a made up product because im obsessed with arbor and have no creativity'}]
|
{'name' => 'Arbor Diamond', 'price' => 59900, 'description' => 'the *arbor diamond* is a made up product because im obsessed with arbor and have no creativity'}]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def more_products_list
|
||||||
|
[{'name' => 'Arbor Catalyst', 'price' => 39900, 'description' => 'the *arbor catalyst* is an advanced drop-through for freestyle and flatground performance and versatility' },
|
||||||
|
{'name' => 'Arbor Fish', 'price' => 40000, 'description' => 'the *arbor fish* is a compact pin that features an extended wheelbase and time-honored teardrop shape'}]
|
||||||
|
end
|
||||||
|
|
||||||
def description
|
def description
|
||||||
"List of Products ~ This is a list of products with price and description."
|
"List of Products ~ This is a list of products with price and description."
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -16,12 +16,12 @@
|
|||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
{% assign all_products = products | concat: more_products %}
|
||||||
<h1>{{ description | split: '~' | first }}</h1>
|
<h1>{{ description | split: '~' | first }}</h1>
|
||||||
|
|
||||||
<h2>{{ description | split: '~' | last }}</h2>
|
<h2>{{ description | split: '~' | last }}</h2>
|
||||||
|
|
||||||
<h2>There are currently {{products | count}} products in the {{section}} catalog</h2>
|
<h2>There are currently {{all_products | count}} products in the {{section}} catalog</h2>
|
||||||
|
|
||||||
{% if cool_products %}
|
{% if cool_products %}
|
||||||
Cool products :)
|
Cool products :)
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
<ul id="products">
|
<ul id="products">
|
||||||
|
|
||||||
{% for product in products %}
|
{% for product in all_products %}
|
||||||
<li>
|
<li>
|
||||||
<h2>{{product.name}}</h2>
|
<h2>{{product.name}}</h2>
|
||||||
Only {{product.price | price }}
|
Only {{product.price | price }}
|
||||||
|
|||||||
@@ -177,6 +177,10 @@ module Liquid
|
|||||||
input.to_s + string.to_s
|
input.to_s + string.to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def concat(input, array)
|
||||||
|
InputIterator.new(input).concat(array)
|
||||||
|
end
|
||||||
|
|
||||||
# prepend a string to another
|
# prepend a string to another
|
||||||
def prepend(input, string)
|
def prepend(input, string)
|
||||||
string.to_s + input.to_s
|
string.to_s + input.to_s
|
||||||
@@ -346,6 +350,10 @@ module Liquid
|
|||||||
to_a.join(glue)
|
to_a.join(glue)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def concat(args)
|
||||||
|
to_a.concat args
|
||||||
|
end
|
||||||
|
|
||||||
def reverse
|
def reverse
|
||||||
reverse_each.to_a
|
reverse_each.to_a
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -359,6 +359,17 @@ class StandardFiltersTest < Minitest::Test
|
|||||||
assert_template_result('bcd',"{{ a | append: b}}",assigns)
|
assert_template_result('bcd',"{{ a | append: b}}",assigns)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_concat
|
||||||
|
assert_equal [1, 2, 3, 4], @filters.concat([1, 2], [3, 4])
|
||||||
|
assert_equal [1, 2, 'a'], @filters.concat([1, 2], ['a'])
|
||||||
|
assert_equal [1, 2, 10], @filters.concat([1, 2], [10])
|
||||||
|
|
||||||
|
assert_raises(TypeError) do
|
||||||
|
# no implicit conversion of Fixnum into Array
|
||||||
|
@filters.concat([1, 2], 10)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_prepend
|
def test_prepend
|
||||||
assigns = {'a' => 'bc', 'b' => 'a' }
|
assigns = {'a' => 'bc', 'b' => 'a' }
|
||||||
assert_template_result('abc',"{{ a | prepend: 'a'}}",assigns)
|
assert_template_result('abc',"{{ a | prepend: 'a'}}",assigns)
|
||||||
|
|||||||
Reference in New Issue
Block a user