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