Add to_integer filter

Add to_integer filter

Fix test_filter: parenthesize the method

Fix offense: seperate every 3 digits with _

rubocop:disable Metrics/ModuleLength

More descriptive exception

Fix fmt error

Remove if stmt for integer input

Remove rescue for to_i

Remove error message assert
This commit is contained in:
David Zhang 2016-07-13 10:52:18 +08:00 committed by crisp
parent 506ba8af1e
commit 20b3758edb
2 changed files with 41 additions and 0 deletions

View File

@ -260,6 +260,17 @@ module Jekyll
end end
end end
# Convert the input into integer
#
# input - the object string
#
# Returns the integer value
def to_integer(input)
return 1 if input == true
return 0 if input == false
input.to_i
end
# Sort an array of objects # Sort an array of objects
# #
# input - the object array # input - the object array

View File

@ -26,6 +26,7 @@ class TestFilters < JekyllUnitTest
@sample_date = Date.parse("2013-03-27") @sample_date = Date.parse("2013-03-27")
@time_as_string = "September 11, 2001 12:46:30 -0000" @time_as_string = "September 11, 2001 12:46:30 -0000"
@time_as_numeric = 1_399_680_607 @time_as_numeric = 1_399_680_607
@integer_as_string = "142857"
@array_of_objects = [ @array_of_objects = [
{ "color" => "red", "size" => "large" }, { "color" => "red", "size" => "large" },
{ "color" => "red", "size" => "medium" }, { "color" => "red", "size" => "medium" },
@ -235,6 +236,13 @@ class TestFilters < JekyllUnitTest
@filter.date_to_rfc822(@time_as_string) @filter.date_to_rfc822(@time_as_string)
) )
end end
should "convert a String to Integer" do
assert_equal(
142_857,
@filter.to_integer(@integer_as_string)
)
end
end end
context "with a Numeric object" do context "with a Numeric object" do
@ -635,6 +643,28 @@ class TestFilters < JekyllUnitTest
end end
end end
context "to_integer filter" do
should "raise Exception when input is not integer or string" do
assert_raises NoMethodError do
@filter.to_integer([1, 2])
end
end
should "return 0 when input is nil" do
assert_equal 0, @filter.to_integer(nil)
end
should "return integer when input is boolean" do
assert_equal 0, @filter.to_integer(false)
assert_equal 1, @filter.to_integer(true)
end
should "return integers" do
assert_equal 0, @filter.to_integer(0)
assert_equal 1, @filter.to_integer(1)
assert_equal 1, @filter.to_integer(1.42857)
assert_equal(-1, @filter.to_integer(-1))
assert_equal(-1, @filter.to_integer(-1.42857))
end
end
context "inspect filter" do context "inspect filter" do
should "return a HTML-escaped string representation of an object" do should "return a HTML-escaped string representation of an object" do
assert_equal "{&quot;&lt;a&gt;&quot;=&gt;1}", @filter.inspect({ "<a>" => 1 }) assert_equal "{&quot;&lt;a&gt;&quot;=&gt;1}", @filter.inspect({ "<a>" => 1 })