Skip to content

Commit 8773048

Browse files
committed
Check for non-negative instead of positive, fixes #4
1 parent 967b493 commit 8773048

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

Diff for: src/Text/Format.purs

+5-5
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,9 @@ instance formatInt :: Format Int where
111111
where
112112
isSigned = fromMaybe false rec.signed
113113
padChar = fromMaybe ' ' rec.padChar
114-
isPositive = num > 0
115-
numAbs = if isPositive then num else (-num)
116-
numSgn = if isPositive
114+
nonNegative = num >= 0
115+
numAbs = if nonNegative then num else (-num)
116+
numSgn = if nonNegative
117117
then (if isSigned then "+" else "")
118118
else "-"
119119

@@ -140,13 +140,13 @@ instance formatNumber :: Format Number where
140140
in round (f * num') / f
141141
isSigned = fromMaybe false rec.signed
142142
padChar = fromMaybe ' ' rec.padChar
143-
isPositive = num > 0.0
143+
nonNegative = num >= 0.0
144144
numAbsStr' = show (abs num)
145145
numAbsStr = case rec.precision of
146146
Nothing -> numAbsStr'
147147
Just p -> numAbsStr' <> paddedZeros p
148148
paddedZeros p = let d = length (dropWhile (_ /= '.') numAbsStr') - 1
149149
in fromCharArray (replicate (p - d) '0')
150-
numSgn = if isPositive
150+
numSgn = if nonNegative
151151
then (if isSigned then "+" else "")
152152
else "-"

Diff for: test/Main.purs

+8
Original file line numberDiff line numberDiff line change
@@ -111,3 +111,11 @@ main = runTest do
111111
test "Number: format (width, precision, signed, zeroFill)" do
112112
equal "+03.14" $ format (width 6 <> precision 2 <> signed <> zeroFill) pi
113113
equal "+3.142" $ format (width 6 <> precision 3 <> signed <> zeroFill) pi
114+
115+
test "Handling of zero" do
116+
equal "0" $ format mempty 0
117+
equal "0" $ format (precision 0) 0.0
118+
equal "0.00" $ format (precision 2) 0.0
119+
equal "+0" $ format signed 0
120+
equal "+0.0" $ format signed 0.0
121+
equal "+0.00" $ format (signed <> precision 2) 0

0 commit comments

Comments
 (0)