From f3731ce3ebae87054595f6b6ad898c92c1f148aa Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Thu, 2 Apr 2015 18:18:08 +0900 Subject: most work for parse relative times done Parses them kind of like absolute times atm! Not usable! --- src/Main.hs | 14 +++++++++++--- srem.cabal | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/Main.hs b/src/Main.hs index d267871..c625802 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -26,12 +26,15 @@ import Control.Monad (mapM_) import Data.List (intercalate) import System.Environment (getArgs) +import Data.List.Split (oneOf, split) import Data.Time.Calendar import Data.Time.Format import Data.Time.LocalTime +import Data.Tuple.Sequence (sequenceT) import System.Locale (defaultTimeLocale) import Text.Regex.Posix ((=~)) +import Data.Maybe.Read import Types.Reminder import Utility.EventCache import Utility.Notify @@ -58,11 +61,16 @@ cmdLineReminder (exp:textParts) | otherwise = Nothing where text = intercalate " " textParts - relativeRegExp = "[0-9]+[mh]" + relativeRegExp = "[0-9mh]+[mh]" absoluteRegExp = "[0-9]{1,2}(:[0-9][0-9])?(am|pm)?" -parseRelativeTime :: String -> Maybe (Hour, Minute) -parseRelativeTime exp = undefined +parseRelativeTime :: String -> Maybe (Hour, Minute) +parseRelativeTime exp = + case (split . oneOf) "mh" exp of + [h, "h", m, "m", ""] -> sequenceT (readMaybe h, readMaybe m) + [h, "h", ""] -> sequenceT (readMaybe h, Just 0) + [m, "m", ""] -> sequenceT (Just 0, readMaybe m) + _ -> Nothing parseAbsoluteTime :: String -> Maybe (Hour, Minute) parseAbsoluteTime exp = let formatString = diff --git a/srem.cabal b/srem.cabal index 6b42a57..b38d43a 100644 --- a/srem.cabal +++ b/srem.cabal @@ -21,5 +21,6 @@ executable srem , filepath , split , old-locale + , tuple hs-source-dirs: src default-language: Haskell2010 -- cgit v1.2.3