dates 0.1.0.0 → 0.1.1.0
raw patch · 2 files changed
+25/−25 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.Dates: pDate :: DateTime -> Parser DateTime
+ Data.Dates: pDate :: DateTime -> Parsec String st DateTime
Files
- Data/Dates.hs +24/−24
- dates.cabal +1/−1
Data/Dates.hs view
@@ -104,7 +104,7 @@ minute = tMinute t + minute dt, second = tSecond t + second dt } -times ∷ Int → Parser t → Parser [t]+times ∷ Int → Parsec String st t → Parsec String st [t] times 0 _ = return [] times n p = do ts ← times (n-1) p@@ -113,27 +113,27 @@ Just t' → return (ts ++ [t']) Nothing → return ts -number ∷ Int → Int → Parser Int+number ∷ Int → Int → Parsec String st Int number n m = do t ← read `fmap` (n `times` digit) if t > m then fail "number too large" else return t -pYear ∷ Parser Int+pYear ∷ Parsec String st Int pYear = do y ← number 4 10000 if y < 2000 then return (y+2000) else return y -pMonth ∷ Parser Int+pMonth ∷ Parsec String st Int pMonth = number 2 12 -pDay ∷ Parser Int+pDay ∷ Parsec String st Int pDay = number 2 31 -euroNumDate ∷ Parser DateTime+euroNumDate ∷ Parsec String st DateTime euroNumDate = do d ← pDay char '.'@@ -142,7 +142,7 @@ y ← pYear return $ date y m d -americanDate ∷ Parser DateTime+americanDate ∷ Parsec String st DateTime americanDate = do y ← pYear char '/'@@ -151,21 +151,21 @@ d ← pDay return $ date y m d -euroNumDate' ∷ Int → Parser DateTime+euroNumDate' ∷ Int → Parsec String st DateTime euroNumDate' year = do d ← pDay char '.' m ← pMonth return $ date year m d -americanDate' ∷ Int → Parser DateTime+americanDate' ∷ Int → Parsec String st DateTime americanDate' year = do m ← pMonth char '/' d ← pDay return $ date year m d -strDate ∷ Parser DateTime+strDate ∷ Parsec String st DateTime strDate = do d ← pDay space@@ -178,7 +178,7 @@ notFollowedBy $ char ':' return $ date y m d -strDate' ∷ Int → Parser DateTime+strDate' ∷ Int → Parsec String st DateTime strDate' year = do d ← pDay space@@ -187,7 +187,7 @@ Nothing → fail $ "unknown month: "++ms Just m → return $ date year m d -time24 ∷ Parser Time+time24 ∷ Parsec String st Time time24 = do h ← number 2 23 char ':'@@ -200,7 +200,7 @@ notFollowedBy letter return $ Time h m s -ampm ∷ Parser Int+ampm ∷ Parsec String st Int ampm = do s ← many1 letter case map toUpper s of@@ -208,7 +208,7 @@ "PM" → return 12 _ → fail "AM/PM expected" -time12 ∷ Parser Time+time12 ∷ Parsec String st Time time12 = do h ← number 2 12 char ':'@@ -221,7 +221,7 @@ hd ← ampm return $ Time (h+hd) m s -pAbsDate ∷ Int → Parser DateTime+pAbsDate ∷ Int → Parsec String st DateTime pAbsDate year = do date ← choice $ map try $ map ($ year) $ [ const euroNumDate,@@ -264,23 +264,23 @@ addInterval dt (Months ms) = modifyDate addGregorianMonthsClip ms dt addInterval dt (Years ys) = modifyDate addGregorianYearsClip ys dt -maybePlural ∷ String → Parser String+maybePlural ∷ String → Parsec String st String maybePlural str = do r ← string str optional $ char 's' return (capitalize r) -pDateInterval ∷ Parser DateIntervalType+pDateInterval ∷ Parsec String st DateIntervalType pDateInterval = do s ← choice $ map maybePlural ["day", "week", "month", "year"] return $ read s -pRelDate ∷ DateTime → Parser DateTime+pRelDate ∷ DateTime → Parsec String st DateTime pRelDate date = do offs ← (try futureDate) <|> (try passDate) <|> (try today) <|> (try tomorrow) <|> yesterday return $ date `addInterval` offs -futureDate ∷ Parser DateInterval+futureDate ∷ Parsec String st DateInterval futureDate = do string "in " n ← many1 digit@@ -292,7 +292,7 @@ Month → return $ Months (read n) Year → return $ Years (read n) -passDate ∷ Parser DateInterval+passDate ∷ Parsec String st DateInterval passDate = do n ← many1 digit char ' '@@ -304,24 +304,24 @@ Month → return $ Months $ - (read n) Year → return $ Years $ - (read n) -today ∷ Parser DateInterval+today ∷ Parsec String st DateInterval today = do string "today" return $ Days 0 -tomorrow ∷ Parser DateInterval+tomorrow ∷ Parsec String st DateInterval tomorrow = do string "tomorrow" return $ Days 1 -yesterday ∷ Parser DateInterval+yesterday ∷ Parsec String st DateInterval yesterday = do string "yesterday" return $ Days (-1) -- | Parsec parser for DateTime. pDate ∷ DateTime -- ^ Current date / time, to use as base for relative dates- → Parser DateTime+ → Parsec String st DateTime pDate date = (try $ pRelDate date) <|> (try $ pAbsDate $ year date) -- | Parse date/time
dates.cabal view
@@ -1,5 +1,5 @@ name: dates-version: 0.1.0.0+version: 0.1.1.0 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.