lib: fix for multiline descriptions in csv (fixes #841, #416)

This commit is contained in:
Dmitry Astapov 2019-10-12 00:50:06 +01:00
parent 725bee02f2
commit e4add6df83
2 changed files with 9 additions and 4 deletions

View File

@ -709,10 +709,10 @@ transactionFromCsvRecord sourcepos rules record = t
["error: could not parse \""++str++"\" as a cleared status (should be *, ! or empty)" ["error: could not parse \""++str++"\" as a cleared status (should be *, ! or empty)"
,"the parse error is: "++customErrorBundlePretty err ,"the parse error is: "++customErrorBundlePretty err
] ]
code = maybe "" render $ mfieldtemplate "code" code = singleline $ maybe "" render $ mfieldtemplate "code"
description = maybe "" render $ mfieldtemplate "description" description = singleline $ maybe "" render $ mfieldtemplate "description"
comment = maybe "" render $ mfieldtemplate "comment" comment = singleline $ maybe "" render $ mfieldtemplate "comment"
precomment = maybe "" render $ mfieldtemplate "precomment" precomment = singleline $ maybe "" render $ mfieldtemplate "precomment"
s `or` def = if null s then def else s s `or` def = if null s then def else s
parsebalance currency n str parsebalance currency n str

View File

@ -21,6 +21,7 @@ module Hledger.Utils.String (
lstrip, lstrip,
rstrip, rstrip,
chomp, chomp,
singleline,
elideLeft, elideLeft,
elideRight, elideRight,
formatString, formatString,
@ -76,6 +77,10 @@ rstrip = reverse . lstrip . reverse
chomp :: String -> String chomp :: String -> String
chomp = reverse . dropWhile (`elem` "\r\n") . reverse chomp = reverse . dropWhile (`elem` "\r\n") . reverse
-- | Remove line breaks
singleline :: String -> String
singleline = map (\c -> if c `elem` "\r\n" then ' ' else c)
stripbrackets :: String -> String stripbrackets :: String -> String
stripbrackets = dropWhile (`elem` "([") . reverse . dropWhile (`elem` "])") . reverse :: String -> String stripbrackets = dropWhile (`elem` "([") . reverse . dropWhile (`elem` "])") . reverse :: String -> String