Update item_property to recognize integers (#7878)
Merge pull request 7878
This commit is contained in:
		
							parent
							
								
									7ad84ef3c5
								
							
						
					
					
						commit
						eb81dc0e96
					
				|  | @ -368,15 +368,18 @@ module Jekyll | |||
|       end | ||||
|     end | ||||
| 
 | ||||
|     # rubocop:disable Performance/RegexpMatch | ||||
|     FLOAT_LIKE   = %r!\A\s*-?(?:\d+\.?\d*|\.\d+)\s*\Z!.freeze | ||||
|     INTEGER_LIKE = %r!\A\s*-?\d+\s*\Z!.freeze | ||||
|     private_constant :FLOAT_LIKE, :INTEGER_LIKE | ||||
| 
 | ||||
|     # return numeric values as numbers for proper sorting | ||||
|     def parse_sort_input(property) | ||||
|       number_like = %r!\A\s*-?(?:\d+\.?\d*|\.\d+)\s*\Z! | ||||
|       return property.to_f if property.to_s =~ number_like | ||||
|       stringified = property.to_s | ||||
|       return property.to_i if INTEGER_LIKE.match?(stringified) | ||||
|       return property.to_f if FLOAT_LIKE.match?(stringified) | ||||
| 
 | ||||
|       property | ||||
|     end | ||||
|     # rubocop:enable Performance/RegexpMatch | ||||
| 
 | ||||
|     def as_liquid(item) | ||||
|       case item | ||||
|  |  | |||
|  | @ -831,6 +831,16 @@ class TestFilters < JekyllUnitTest | |||
|           ) | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       should "should pass integers as is" do | ||||
|         grouping = @filter.group_by([ | ||||
|           { "name" => "Allison", "year" => 2016 }, | ||||
|           { "name" => "Amy", "year" => 2016 }, | ||||
|           { "name" => "George", "year" => 2019 }, | ||||
|         ], "year") | ||||
|         assert_equal "2016", grouping[0]["name"] | ||||
|         assert_equal "2019", grouping[1]["name"] | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context "where filter" do | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue