From 68966fe43bcf96663d891ad72f94803dbb3225eb Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Mon, 16 Apr 2012 16:44:41 +0000 Subject: [PATCH] begin cleaning up Dates api, move firstJust --- hledger-lib/Hledger/Data/Dates.hs | 32 ++++++++++++++++++++++++++----- hledger-lib/Hledger/Utils.hs | 5 +++++ 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/hledger-lib/Hledger/Data/Dates.hs b/hledger-lib/Hledger/Data/Dates.hs index fa0de846e..bca83f357 100644 --- a/hledger-lib/Hledger/Data/Dates.hs +++ b/hledger-lib/Hledger/Data/Dates.hs @@ -20,7 +20,33 @@ quarterly, etc. -- XXX fromGregorian silently clips bad dates, use fromGregorianValid instead ? -module Hledger.Data.Dates +module Hledger.Data.Dates ( + -- * Misc date handling utilities + getCurrentDay, + getCurrentMonth, + getCurrentYear, + nulldate, + spanContainsDate, + parsedate, + showDate, + elapsedSeconds, + prevday, + parsePeriodExpr, + nulldatespan, + tests_Hledger_Data_Dates, + failIfInvalidYear, + datesepchar, + datesepchars, + spanIntersect, + orDatesFrom, + smartdate, + splitSpan, + fixSmartDate, + fixSmartDateStr, + fixSmartDateStrEither', + daysInSpan, + maybePeriod, +) where import Control.Monad @@ -280,10 +306,6 @@ nthdayofweekcontaining n d | d1 >= d = d1 ---------------------------------------------------------------------- -- parsing -firstJust ms = case dropWhile (==Nothing) ms of - [] -> Nothing - (md:_) -> md - -- | Parse a couple of date-time string formats to a time type. parsedatetimeM :: String -> Maybe LocalTime parsedatetimeM s = firstJust [ diff --git a/hledger-lib/Hledger/Utils.hs b/hledger-lib/Hledger/Utils.hs index 5277f45a5..def727ffd 100644 --- a/hledger-lib/Hledger/Utils.hs +++ b/hledger-lib/Hledger/Utils.hs @@ -404,3 +404,8 @@ expandPath pos fp = liftM mkAbsolute (expandHome fp) expandHome inname | "~/" `isPrefixOf` inname = do homedir <- liftIO getHomeDirectory return $ homedir ++ drop 1 inname | otherwise = return inname + +firstJust ms = case dropWhile (==Nothing) ms of + [] -> Nothing + (md:_) -> md +