File tree Expand file tree Collapse file tree 4 files changed +50
-2
lines changed Expand file tree Collapse file tree 4 files changed +50
-2
lines changed Original file line number Diff line number Diff line change @@ -1081,7 +1081,10 @@ def reverse
10811081 end
10821082
10831083 def uniq ( &block )
1084- to_a . uniq ( &block )
1084+ to_a . uniq do |item |
1085+ item = Utils . to_liquid_value ( item )
1086+ block ? yield ( item ) : item
1087+ end
10851088 end
10861089
10871090 def compact
Original file line number Diff line number Diff line change 22# frozen_string_literal: true
33
44module Liquid
5- VERSION = "5.8.3 "
5+ VERSION = "5.8.4 "
66end
Original file line number Diff line number Diff line change @@ -1340,6 +1340,22 @@ def test_sum_with_non_string_property
13401340 assert_equal ( 0 , @filters . sum ( input , "" ) )
13411341 end
13421342
1343+ def test_uniq_with_to_liquid_value
1344+ input = [ StringDrop . new ( "foo" ) , StringDrop . new ( "bar" ) , "foo" ]
1345+ expected = [ StringDrop . new ( "foo" ) , StringDrop . new ( "bar" ) ]
1346+ result = @filters . uniq ( input )
1347+
1348+ assert_equal ( expected , result )
1349+ end
1350+
1351+ def test_uniq_with_to_liquid_value_pick_correct_classes
1352+ input = [ "foo" , StringDrop . new ( "foo" ) , StringDrop . new ( "bar" ) ]
1353+ expected = [ String , StringDrop ]
1354+ result = @filters . uniq ( input ) . map ( &:class )
1355+
1356+ assert_equal ( expected , result )
1357+ end
1358+
13431359 private
13441360
13451361 def with_timezone ( tz )
Original file line number Diff line number Diff line change @@ -146,6 +146,35 @@ def to_s
146146 end
147147end
148148
149+ class StringDrop < Liquid ::Drop
150+ include Comparable
151+
152+ def initialize ( value )
153+ super ( )
154+ @value = value
155+ end
156+
157+ def to_liquid_value
158+ @value
159+ end
160+
161+ def to_s
162+ @value
163+ end
164+
165+ def to_str
166+ @value
167+ end
168+
169+ def inspect
170+ "#<StringDrop @value=#{ @value . inspect } >"
171+ end
172+
173+ def <=>( other )
174+ to_liquid_value <=> Liquid ::Utils . to_liquid_value ( other )
175+ end
176+ end
177+
149178class ErrorDrop < Liquid ::Drop
150179 def standard_error
151180 raise Liquid ::StandardError , 'standard error'
You can’t perform that action at this time.
0 commit comments