liquid 5.7.1 → 5.7.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 771dc6f35b1b6c881e98289584bbcf8f0b0a2c494ddf1b6bf14bda94aa6ef991
4
- data.tar.gz: 5de0ba09a9e281fd713480edafb79dc5580f3ef1233a6f7c27d45897649a2fa6
3
+ metadata.gz: eedf7295997cbab7b8d526eb516c8c34aa4a73c8b943d69ee4363cb1684a9d12
4
+ data.tar.gz: 335b1d05b70f581e05730e6a21f71a22a83283ac6135e4f29dbab962063e9e90
5
5
  SHA512:
6
- metadata.gz: '09c9b6247637be3d1a7f9b9bdaff3351d72d3215d2cd7eaaf213d97eaca99ba5faef92bc89165c13f1b34fa3742a3de4e26fddba0d6390587e7a640d3af54ae3'
7
- data.tar.gz: 1afb6aca240c13c8ca09bb5079094a69e98bf48d83a1016ee261c34862dadd35e1bf8d64c906f12ecba3c616656f33f3576a3237eddc0d2ec4e97fd0e10bd43f
6
+ metadata.gz: e62a54477a5e5c1baba527b412d5009e892bf082c085de5416a88073fffc488576d6842615b1f7f7332d2bd02ccb1ff73bb3e2add22ec57be732d74e5178b389
7
+ data.tar.gz: aacf9a3490e2739a7a2ff738fee2d610dd833c5a2a763830c63de2972420687bb4989934d438ee4635d6251b1c0d8ac9eeb4a28a358255b7eeef40b49e30c340
data/History.md CHANGED
@@ -2,7 +2,11 @@
2
2
 
3
3
  ## 5.8.0 (unreleased)
4
4
 
5
- ## 5.7.1 2025-01-23
5
+ ## 5.7.2 2025-01-31
6
+
7
+ * Fix array filters to not support nested properties
8
+
9
+ ## 5.7.1 2025-01-24
6
10
 
7
11
  * Fix the `find` and `find_index`filters to return `nil` when filtering empty arrays
8
12
  * Fix the `has` filter to return `false` when filtering empty arrays
@@ -387,7 +387,7 @@ module Liquid
387
387
  end
388
388
  elsif ary.all? { |el| el.respond_to?(:[]) }
389
389
  begin
390
- ary.sort { |a, b| nil_safe_compare(fetch_property(a, property), fetch_property(b, property)) }
390
+ ary.sort { |a, b| nil_safe_compare(a[property], b[property]) }
391
391
  rescue TypeError
392
392
  raise_property_error(property)
393
393
  end
@@ -416,7 +416,7 @@ module Liquid
416
416
  end
417
417
  elsif ary.all? { |el| el.respond_to?(:[]) }
418
418
  begin
419
- ary.sort { |a, b| nil_safe_casecmp(fetch_property(a, property), fetch_property(b, property)) }
419
+ ary.sort { |a, b| nil_safe_casecmp(a[property], b[property]) }
420
420
  rescue TypeError
421
421
  raise_property_error(property)
422
422
  end
@@ -504,7 +504,7 @@ module Liquid
504
504
  []
505
505
  else
506
506
  ary.uniq do |item|
507
- fetch_property(item, property)
507
+ item[property]
508
508
  rescue TypeError
509
509
  raise_property_error(property)
510
510
  rescue NoMethodError
@@ -540,7 +540,7 @@ module Liquid
540
540
  if property == "to_liquid"
541
541
  e
542
542
  elsif e.respond_to?(:[])
543
- r = fetch_property(e, property)
543
+ r = e[property]
544
544
  r.is_a?(Proc) ? r.call : r
545
545
  end
546
546
  end
@@ -564,7 +564,7 @@ module Liquid
564
564
  []
565
565
  else
566
566
  ary.reject do |item|
567
- fetch_property(item, property).nil?
567
+ item[property].nil?
568
568
  rescue TypeError
569
569
  raise_property_error(property)
570
570
  rescue NoMethodError
@@ -950,7 +950,7 @@ module Liquid
950
950
  if property.nil?
951
951
  item
952
952
  elsif item.respond_to?(:[])
953
- fetch_property(item, property)
953
+ item[property]
954
954
  else
955
955
  0
956
956
  end
@@ -976,9 +976,9 @@ module Liquid
976
976
 
977
977
  block.call(ary) do |item|
978
978
  if target_value.nil?
979
- fetch_property(item, property)
979
+ item[property]
980
980
  else
981
- fetch_property(item, property) == target_value
981
+ item[property] == target_value
982
982
  end
983
983
  rescue TypeError
984
984
  raise_property_error(property)
@@ -988,31 +988,6 @@ module Liquid
988
988
  end
989
989
  end
990
990
 
991
- def fetch_property(drop, property_or_keys)
992
- ##
993
- # This keeps backward compatibility by supporting properties containing
994
- # dots. This is valid in Liquid syntax and used in some runtimes, such as
995
- # Shopify with metafields.
996
- #
997
- # Using this approach, properties like 'price.value' can be accessed in
998
- # both of the following examples:
999
- #
1000
- # ```
1001
- # [
1002
- # { 'name' => 'Item 1', 'price.price' => 40000 },
1003
- # { 'name' => 'Item 2', 'price' => { 'value' => 39900 } }
1004
- # ]
1005
- # ```
1006
- value = drop[property_or_keys]
1007
-
1008
- return value if !value.nil? || !property_or_keys.is_a?(String)
1009
-
1010
- keys = property_or_keys.split('.')
1011
- keys.reduce(drop) do |drop, key|
1012
- drop.respond_to?(:[]) ? drop[key] : drop
1013
- end
1014
- end
1015
-
1016
991
  def raise_property_error(property)
1017
992
  raise Liquid::ArgumentError, "cannot select the property '#{property}'"
1018
993
  end
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Liquid
5
- VERSION = "5.7.1"
5
+ VERSION = "5.7.2"
6
6
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: liquid
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.7.1
4
+ version: 5.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Lütke
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-01-24 00:00:00.000000000 Z
10
+ date: 2025-01-31 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: strscan
@@ -158,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
158
  - !ruby/object:Gem::Version
159
159
  version: 1.3.7
160
160
  requirements: []
161
- rubygems_version: 3.6.2
161
+ rubygems_version: 3.6.3
162
162
  specification_version: 4
163
163
  summary: A secure, non-evaling end user template engine with aesthetic markup.
164
164
  test_files: []