diff options
author | Sean Whitton <spwhitton@spwhitton.name> | 2015-04-02 18:18:08 +0900 |
---|---|---|
committer | Sean Whitton <spwhitton@spwhitton.name> | 2015-04-02 18:18:34 +0900 |
commit | f3731ce3ebae87054595f6b6ad898c92c1f148aa (patch) | |
tree | 896a1d2cb6a3566823599b423316eff66e4ece14 | |
parent | f3163d75e51941b87497d4e0d6091123bc973776 (diff) | |
download | srem-f3731ce3ebae87054595f6b6ad898c92c1f148aa.tar.gz |
most work for parse relative times done
Parses them kind of like absolute times atm! Not usable!
-rw-r--r-- | src/Main.hs | 14 | ||||
-rw-r--r-- | 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 = @@ -21,5 +21,6 @@ executable srem , filepath , split , old-locale + , tuple hs-source-dirs: src default-language: Haskell2010 |