aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2015-04-02 18:18:08 +0900
committerSean Whitton <spwhitton@spwhitton.name>2015-04-02 18:18:34 +0900
commitf3731ce3ebae87054595f6b6ad898c92c1f148aa (patch)
tree896a1d2cb6a3566823599b423316eff66e4ece14
parentf3163d75e51941b87497d4e0d6091123bc973776 (diff)
downloadsrem-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.hs14
-rw-r--r--srem.cabal1
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