csv: handle the other double negation cases: -(N), ((N)) (fix #736)
This commit is contained in:
parent
d82370d10b
commit
f2d3b3e1d4
@ -732,10 +732,26 @@ getAmountStr rules record =
|
||||
type CsvAmountString = String
|
||||
|
||||
-- | Canonicalise the sign in a CSV amount string.
|
||||
-- Such strings can be parenthesized, which is equivalent to having a minus sign.
|
||||
-- Also they can end up with a double minus sign, which cancels out.
|
||||
-- Such strings can have a minus sign, negating parentheses,
|
||||
-- or any two of these (which cancels out).
|
||||
--
|
||||
-- >>> simplifySign "1"
|
||||
-- "1"
|
||||
-- >>> simplifySign "-1"
|
||||
-- "-1"
|
||||
-- >>> simplifySign "(1)"
|
||||
-- "-1"
|
||||
-- >>> simplifySign "--1"
|
||||
-- "1"
|
||||
-- >>> simplifySign "-(1)"
|
||||
-- "1"
|
||||
-- >>> simplifySign "(-1)"
|
||||
-- "1"
|
||||
-- >>> simplifySign "((1))"
|
||||
-- "1"
|
||||
simplifySign :: CsvAmountString -> CsvAmountString
|
||||
simplifySign ('(':s) | lastMay s == Just ')' = simplifySign $ negateStr $ init s
|
||||
simplifySign ('-':'(':s) | lastMay s == Just ')' = simplifySign $ init s
|
||||
simplifySign ('-':'-':s) = s
|
||||
simplifySign s = s
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user