From b7509030c59b1c8769bc09933bb28d800526f845 Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Tue, 22 Apr 2025 10:40:41 -1000 Subject: [PATCH] lib: Hledger.Data.Dates: parsedateM -> parsedate M makes me think of monad and is awkward to type for this common helper; Maybe is expected for a parser. --- hledger-lib/Hledger/Data/Dates.hs | 16 ++++++++-------- hledger-lib/Hledger/Read.hs | 4 ++-- hledger-lib/Hledger/Reports/ReportOptions.hs | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/hledger-lib/Hledger/Data/Dates.hs b/hledger-lib/Hledger/Data/Dates.hs index 0d55bd8c3..42c078459 100644 --- a/hledger-lib/Hledger/Data/Dates.hs +++ b/hledger-lib/Hledger/Data/Dates.hs @@ -38,7 +38,7 @@ module Hledger.Data.Dates ( nulldate, spanContainsDate, periodContainsDate, - parsedateM, + parsedate, showDate, showEFDate, showDateSpan, @@ -778,8 +778,8 @@ advanceToNthWeekday n wd s = -- parsing -- -- | Parse a couple of date-time string formats to a time type. --- parsedatetimeM :: String -> Maybe LocalTime --- parsedatetimeM s = asum [ +-- parsedatetime :: String -> Maybe LocalTime +-- parsedatetime s = asum [ -- parseTimeM TruedefaultTimeLocale "%Y/%m/%d %H:%M:%S" s, -- parseTimeM TruedefaultTimeLocale "%Y-%m-%d %H:%M:%S" s -- ] @@ -787,14 +787,14 @@ advanceToNthWeekday n wd s = -- | Try to parse a couple of date string formats: -- `YYYY-MM-DD`, `YYYY/MM/DD` or `YYYY.MM.DD`, with leading zeros required. -- For internal use, not quite the same as the journal's "simple dates". --- >>> parsedateM "2008/02/03" +-- >>> parsedate "2008/02/03" -- Just 2008-02-03 --- >>> parsedateM "2008/02/03/" +-- >>> parsedate "2008/02/03/" -- Nothing --- >>> parsedateM "2008/02/30" +-- >>> parsedate "2008/02/30" -- Nothing -parsedateM :: String -> Maybe Day -parsedateM s = asum [ +parsedate :: String -> Maybe Day +parsedate s = asum [ parseTimeM True defaultTimeLocale "%Y-%m-%d" s, parseTimeM True defaultTimeLocale "%Y/%m/%d" s, parseTimeM True defaultTimeLocale "%Y.%m.%d" s diff --git a/hledger-lib/Hledger/Read.hs b/hledger-lib/Hledger/Read.hs index 6f20677d0..a0dd19d5c 100644 --- a/hledger-lib/Hledger/Read.hs +++ b/hledger-lib/Hledger/Read.hs @@ -151,7 +151,7 @@ import System.FilePath ((<.>), (), splitDirectories, splitFileName, takeFileN import System.Info (os) import System.IO (Handle, hPutStrLn, stderr) -import Hledger.Data.Dates (getCurrentDay, parsedateM, showDate) +import Hledger.Data.Dates (getCurrentDay, parsedate, showDate) import Hledger.Data.Types import Hledger.Read.Common import Hledger.Read.InputOptions @@ -419,7 +419,7 @@ previousLatestDates f = do let nls = zip [1::Int ..] $ T.lines t fmap catMaybes $ forM nls $ \(n,l) -> do let s = T.unpack $ T.strip l - case (s, parsedateM s) of + case (s, parsedate s) of ("", _) -> return Nothing (_, Nothing) -> error' (printf "%s:%d: invalid date: \"%s\"" latestfile n s) (_, Just d) -> return $ Just d diff --git a/hledger-lib/Hledger/Reports/ReportOptions.hs b/hledger-lib/Hledger/Reports/ReportOptions.hs index 50c918f9f..1e328e21d 100644 --- a/hledger-lib/Hledger/Reports/ReportOptions.hs +++ b/hledger-lib/Hledger/Reports/ReportOptions.hs @@ -516,7 +516,7 @@ valuationTypeFromRawOpts rawopts = case (balancecalcopt rawopts, directval) of | t `elem` ["then" ,"t"] = Just $ AtThen mc | t `elem` ["end" ,"e"] = Just $ AtEnd mc | t `elem` ["now" ,"n"] = Just $ AtNow mc - | otherwise = case parsedateM t of + | otherwise = case parsedate t of Just d -> Just $ AtDate d mc Nothing -> usageError $ "could not parse \""++t++"\" as valuation type, should be: then|end|now|t|e|n|YYYY-MM-DD" where