packages feed

dates 0.1.1.0 → 0.1.1.1

raw patch · 2 files changed

+20/−12 lines, 2 files

Files

Data/Dates.hs view
@@ -5,7 +5,8 @@    Time (..),    parseDate,    pDate,-   getCurrentDateTime+   getCurrentDateTime,+   tryRead   ) where  import Prelude.Unicode@@ -65,6 +66,13 @@     tSecond ∷ Int }   deriving (Eq,Ord,Show,Data,Typeable) +-- | Parser version of Prelude.read+tryRead :: Read a => String -> Parsec String st a+tryRead str =+  case reads str of+    [(res, "")] -> return res+    _ -> fail $ "Cannot read: " ++ str+ -- | Get current date and time. getCurrentDateTime ∷  IO DateTime getCurrentDateTime = do@@ -115,7 +123,7 @@                                 number ∷ Int → Int → Parsec String st Int number n m = do-  t ← read `fmap` (n `times` digit)+  t ← tryRead =<< (n `times` digit)   if t > m     then fail "number too large"     else return t@@ -273,7 +281,7 @@ pDateInterval ∷ Parsec String st DateIntervalType pDateInterval = do   s ← choice $ map maybePlural ["day", "week", "month", "year"]-  return $ read s+  tryRead s  pRelDate ∷ DateTime → Parsec String st DateTime pRelDate date = do@@ -287,10 +295,10 @@   char ' '   tp ← pDateInterval   case tp of-    Day →   return $ Days (read n)-    Week →  return $ Weeks (read n)-    Month → return $ Months (read n)-    Year →  return $ Years (read n)+    Day →   Days   `fmap` tryRead n+    Week →  Weeks  `fmap` tryRead n+    Month → Months `fmap` tryRead n+    Year →  Years  `fmap` tryRead n  passDate ∷ Parsec String st DateInterval passDate = do@@ -299,10 +307,10 @@   tp ← pDateInterval   string " ago"   case tp of-    Day →   return $ Days $ - (read n)-    Week →  return $ Weeks $ - (read n)-    Month → return $ Months $ - (read n)-    Year →  return $ Years $ - (read n)+    Day →   (Days   . negate) `fmap` tryRead n+    Week →  (Weeks  . negate) `fmap` tryRead n+    Month → (Months . negate) `fmap` tryRead n+    Year →  (Years  . negate) `fmap` tryRead n  today ∷ Parsec String st DateInterval today = do
dates.cabal view
@@ -1,5 +1,5 @@ name:                dates-version:             0.1.1.0+version:             0.1.1.1 synopsis:            Small library for parsing different dates formats. description:         This package allows to parse many different formats                      of dates. Both absolute and relative dates are supported.