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
|
type CsvAmountString = String
|
||||||
|
|
||||||
-- | Canonicalise the sign in a CSV amount string.
|
-- | Canonicalise the sign in a CSV amount string.
|
||||||
-- Such strings can be parenthesized, which is equivalent to having a minus sign.
|
-- Such strings can have a minus sign, negating parentheses,
|
||||||
-- Also they can end up with a double minus sign, which cancels out.
|
-- 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 :: CsvAmountString -> CsvAmountString
|
||||||
simplifySign ('(':s) | lastMay s == Just ')' = simplifySign $ negateStr $ init s
|
simplifySign ('(':s) | lastMay s == Just ')' = simplifySign $ negateStr $ init s
|
||||||
|
simplifySign ('-':'(':s) | lastMay s == Just ')' = simplifySign $ init s
|
||||||
simplifySign ('-':'-':s) = s
|
simplifySign ('-':'-':s) = s
|
||||||
simplifySign s = s
|
simplifySign s = s
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user