attoparsec-iso8601 1.0.1.0 → 1.0.2.0
raw patch · 4 files changed
+41/−49 lines, 4 filesdep +base-compat-batteriesdep +time-compatdep −base-compatdep ~attoparsecdep ~basedep ~textsetup-changedPVP ok
version bump matches the API change (PVP)
Dependencies added: base-compat-batteries, time-compat
Dependencies removed: base-compat
Dependency ranges changed: attoparsec, base, text, time
API changes (from Hackage documentation)
+ Data.Attoparsec.Time: month :: Parser Month
+ Data.Attoparsec.Time: quarter :: Parser Quarter
Files
- Data/Attoparsec/Time.hs +26/−0
- Data/Attoparsec/Time/Internal.hs +3/−38
- Setup.hs +0/−2
- attoparsec-iso8601.cabal +12/−9
Data/Attoparsec/Time.hs view
@@ -19,6 +19,8 @@ , timeZone , utcTime , zonedTime+ , month+ , quarter ) where import Prelude.Compat@@ -33,6 +35,8 @@ import Data.Int (Int64) import Data.Maybe (fromMaybe) import Data.Time.Calendar (Day, fromGregorianValid)+import Data.Time.Calendar.Quarter.Compat (Quarter, QuarterOfYear (..), fromYearQuarter)+import Data.Time.Calendar.Month.Compat (Month, fromYearMonthValid) import Data.Time.Clock (UTCTime(..)) import qualified Data.Text as T import qualified Data.Time.LocalTime as Local@@ -45,6 +49,28 @@ m <- (twoDigits <* char '-') <|> fail "date must be of form [+,-]YYYY-MM-DD" d <- twoDigits <|> fail "date must be of form [+,-]YYYY-MM-DD" maybe (fail "invalid date") return (fromGregorianValid (absOrNeg y) m d)++-- | Parse a month of the form @[+,-]YYYY-MM@.+month :: Parser Month+month = do+ absOrNeg <- negate <$ char '-' <|> id <$ char '+' <|> pure id+ y <- (decimal <* char '-') <|> fail "month must be of form [+,-]YYYY-MM"+ m <- twoDigits <|> fail "month must be of form [+,-]YYYY-MM"+ maybe (fail "invalid month") return (fromYearMonthValid (absOrNeg y) m)++-- | Parse a quarter of the form @[+,-]YYYY-QN@.+quarter :: Parser Quarter+quarter = do+ absOrNeg <- negate <$ char '-' <|> id <$ char '+' <|> pure id+ y <- (decimal <* char '-') <|> fail "month must be of form [+,-]YYYY-MM"+ _ <- char 'q' <|> char 'Q'+ q <- parseQ+ return $! fromYearQuarter (absOrNeg y) q+ where+ parseQ = Q1 <$ char '1'+ <|> Q2 <$ char '2'+ <|> Q3 <$ char '3'+ <|> Q4 <$ char '4' -- | Parse a two-digit integer (e.g. day of month, hour). twoDigits :: Parser Int
Data/Attoparsec/Time/Internal.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE CPP #-} {-# LANGUAGE NoImplicitPrelude #-} -- | -- Module: Data.Aeson.Internal.Time@@ -19,50 +18,16 @@ import Prelude.Compat +import Data.Fixed (Fixed(MkFixed), Pico) import Data.Int (Int64)-import Data.Time-import Unsafe.Coerce (unsafeCoerce)--#if MIN_VERSION_time(1,6,0)--import Data.Time.Clock (diffTimeToPicoseconds)--#endif--#if MIN_VERSION_base(4,7,0)--import Data.Fixed (Pico, Fixed(MkFixed))--#else--import Data.Fixed (Pico)--#endif--#if !MIN_VERSION_time(1,6,0)--diffTimeToPicoseconds :: DiffTime -> Integer-diffTimeToPicoseconds = unsafeCoerce--#endif--#if MIN_VERSION_base(4,7,0)+import Data.Time (TimeOfDay(..))+import Data.Time.Clock.Compat toPico :: Integer -> Pico toPico = MkFixed fromPico :: Pico -> Integer fromPico (MkFixed i) = i--#else--toPico :: Integer -> Pico-toPico = unsafeCoerce--fromPico :: Pico -> Integer-fromPico = unsafeCoerce--#endif -- | Like TimeOfDay, but using a fixed-width integer for seconds. data TimeOfDay64 = TOD {-# UNPACK #-} !Int
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
attoparsec-iso8601.cabal view
@@ -1,5 +1,5 @@ name: attoparsec-iso8601-version: 1.0.1.0+version: 1.0.2.0 synopsis: Parsing of ISO 8601 dates, originally from aeson. description: Parsing of ISO 8601 dates, originally from aeson. license: BSD3@@ -11,9 +11,10 @@ maintainer: Adam Bergmark <adam@bergmark.nl> stability: experimental cabal-version: >=1.10-homepage: https://github.com/bos/aeson-bug-reports: https://github.com/bos/aeson/issues+homepage: https://github.com/haskell/aeson+bug-reports: https://github.com/haskell/aeson/issues build-type: Simple+tested-with: GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.3, GHC == 8.10.1 extra-source-files: README.md @@ -35,11 +36,12 @@ Data.Attoparsec.Time.Internal Data.Attoparsec.Time build-depends:- attoparsec >= 0.13.0.1,- base >= 4.5 && < 5,- base-compat >= 0.9.1 && < 0.11,- text >= 1.1.1.0,- time >= 1.1.1.4+ attoparsec >= 0.13.0.1 && < 0.14.0.0,+ base >= 4.7 && < 5,+ base-compat-batteries >= 0.10.0 && < 0.12,+ time-compat >= 1.9.4 && < 1.10,+ text >= 1.1.1.0 && < 1.3.0.0,+ time >= 1.1.1.4 && < 1.12 if flag(fast) ghc-options: -O0@@ -52,4 +54,5 @@ source-repository head type: git- location: git://github.com/bos/aeson.git+ location: git://github.com/haskell/aeson.git+ subdir: attoparsec-iso8601