From dfbb68357358d7a49bdb056ed322831ae8cf6475 Mon Sep 17 00:00:00 2001 From: Hans-Peter Deifel Date: Fri, 13 Jan 2017 22:10:11 +0100 Subject: [PATCH] Prettify option parsing errors (#478) Megaparsec's show instance for ParseError doesn't produce digestible strings. parseErrorPretty has to be used instead. --- hledger-lib/Hledger/Reports/ReportOptions.hs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/hledger-lib/Hledger/Reports/ReportOptions.hs b/hledger-lib/Hledger/Reports/ReportOptions.hs index 5d4bef26d..9c438dbec 100644 --- a/hledger-lib/Hledger/Reports/ReportOptions.hs +++ b/hledger-lib/Hledger/Reports/ReportOptions.hs @@ -41,6 +41,7 @@ import Data.Time.Calendar import Data.Default import Safe import Test.HUnit +import Text.Megaparsec.Error import Hledger.Data import Hledger.Query @@ -207,11 +208,11 @@ beginDatesFromRawOpts d = catMaybes . map (begindatefromrawopt d) where begindatefromrawopt d (n,v) | n == "begin" = - either (\e -> optserror $ "could not parse "++n++" date: "++show e) Just $ + either (\e -> optserror $ "could not parse "++n++" date: "++parseErrorPretty e) Just $ fixSmartDateStrEither' d (T.pack v) | n == "period" = case - either (\e -> optserror $ "could not parse period option: "++show e) id $ + either (\e -> optserror $ "could not parse period option: "++parseErrorPretty e) id $ parsePeriodExpr d (stripquotes $ T.pack v) of (_, DateSpan (Just b) _) -> Just b @@ -225,11 +226,11 @@ endDatesFromRawOpts d = catMaybes . map (enddatefromrawopt d) where enddatefromrawopt d (n,v) | n == "end" = - either (\e -> optserror $ "could not parse "++n++" date: "++show e) Just $ + either (\e -> optserror $ "could not parse "++n++" date: "++parseErrorPretty e) Just $ fixSmartDateStrEither' d (T.pack v) | n == "period" = case - either (\e -> optserror $ "could not parse period option: "++show e) id $ + either (\e -> optserror $ "could not parse period option: "++parseErrorPretty e) id $ parsePeriodExpr d (stripquotes $ T.pack v) of (_, DateSpan _ (Just e)) -> Just e @@ -243,7 +244,7 @@ intervalFromRawOpts = lastDef NoInterval . catMaybes . map intervalfromrawopt where intervalfromrawopt (n,v) | n == "period" = - either (\e -> optserror $ "could not parse period option: "++show e) (Just . fst) $ + either (\e -> optserror $ "could not parse period option: "++parseErrorPretty e) (Just . fst) $ parsePeriodExpr nulldate (stripquotes $ T.pack v) -- reference date does not affect the interval | n == "daily" = Just $ Days 1 | n == "weekly" = Just $ Weeks 1