timerep 2.0.0.2 → 2.0.1.0
raw patch · 4 files changed
+24/−10 lines, 4 filesdep ~time
Dependency ranges changed: time
Files
- Data/Time/RFC3339.hs +7/−1
- Data/Time/Util.hs +3/−4
- test/Main.hs +10/−3
- timerep.cabal +4/−2
Data/Time/RFC3339.hs view
@@ -32,7 +32,7 @@ module Data.Time.RFC3339 ( -- * Basic type class -- $basic- formatTimeRFC3339, parseTimeRFC3339+ formatTimeRFC3339, formatDateRFC3339, parseTimeRFC3339, parseDateRFC3339 ) where import Control.Applicative@@ -55,6 +55,9 @@ then "Z" else take 3 timeZoneStr <> ":" <> drop 3 timeZoneStr +formatDateRFC3339 :: (TextualMonoid t, FormatTime time) => time -> t+formatDateRFC3339 day = fromString (formatTime defaultTimeLocale "%F" day)+ formatsRFC3339 :: [Text] formatsRFC3339 = do fraction <- ["%Q", ""]@@ -63,3 +66,6 @@ parseTimeRFC3339 :: (TextualMonoid t) => t -> Maybe ZonedTime parseTimeRFC3339 = parseTimeUsing formatsRFC3339++parseDateRFC3339 :: (TextualMonoid t) => t -> Maybe Day+parseDateRFC3339 = parseTimeUsing ["%F" :: Text]
Data/Time/Util.hs view
@@ -6,13 +6,12 @@ import Data.Monoid (mempty) import Data.Monoid.Textual hiding (foldr, map) import Data.Time-import Data.Time.Format (defaultTimeLocale)+import Data.Time.Format (ParseTime, defaultTimeLocale) toString' :: (TextualMonoid t) => t -> String toString' = toString (maybe "?" (:[]) . characterPrefix) -parseTimeUsing :: (TextualMonoid t, TextualMonoid t') => [t] -> t' -> Maybe ZonedTime+parseTimeUsing :: (TextualMonoid t, TextualMonoid t', ParseTime time) => [t] -> t' -> Maybe time parseTimeUsing formats t = foldr (<|>) Nothing $ map parse formats- where parse :: (TextualMonoid t) => t -> Maybe ZonedTime- parse format = parseTime defaultTimeLocale (toString' format) (toString' t)+ where parse format = parseTimeM True defaultTimeLocale (toString' format) (toString' t)
test/Main.hs view
@@ -75,6 +75,10 @@ isJust (parseTimeRFC3339 "1990-12-31T23:59:60Z") @?= True isJust (parseTimeRFC3339 "1990-12-31T15:59:60-08:00") @?= True isJust (parseTimeRFC3339 "1937-01-01T12:00:27.87+00:20") @?= True+ isJust (parseDateRFC3339 "1985-04-12") @?= True+ isJust (parseDateRFC3339 "1996-12-19") @?= True+ isJust (parseDateRFC3339 "1990-12-31") @?= True+ isJust (parseDateRFC3339 "1937-01-01") @?= True casesRFC2822 = testCase "RFC 2822 cases" $ do isJust (parseTimeRFC2822 "Fri, 21 Nov 1997 09:55:06 -0600") @?= True isJust (parseTimeRFC2822 "Tue, 15 Nov 1994 12:45:26 GMT") @?= True@@ -100,14 +104,17 @@ properties :: TestTree properties = testGroup "Properties"- [ inverseRFC3339Property+ [ inverseTimeRFC3339Property+ , inverseDateRFC3339Property , inverseRFC2822Property , inverseRFC822Property ] -inverseRFC3339Property, inverseRFC2822Property, inverseRFC822Property :: TestTree-inverseRFC3339Property = testProperty "parse . format = id (RFC3339)" $ \zonedTime ->+inverseTimeRFC3339Property, inverseDateRFC3339Property, inverseRFC2822Property, inverseRFC822Property :: TestTree+inverseTimeRFC3339Property = testProperty "parse . format = id (RFC3339 date-time)" $ \zonedTime -> (fmap zonedTimeToUTC . parseTimeRFC3339 . asText . formatTimeRFC3339) zonedTime == Just (zonedTimeToUTC zonedTime)+inverseDateRFC3339Property = testProperty "parse . format = id (RFC3339 date)" $ \day ->+ (parseDateRFC3339 . asText . formatDateRFC3339) day == Just day inverseRFC2822Property = testProperty "parse . format = id (RFC2822)" $ \zonedTime -> (fmap zonedTimeToUTC . parseTimeRFC2822 . asText . formatTimeRFC2822) zonedTime == Just (zonedTimeToUTC zonedTime) inverseRFC822Property = testProperty "parse . format = id (RFC822)" $ \zonedTime ->
timerep.cabal view
@@ -1,5 +1,5 @@ name: timerep-version: 2.0.0.2+version: 2.0.1.0 category: Web, Time, Parser, Text synopsis: Parse and display time according to some RFCs (RFC3339, RFC2822, RFC822) description:@@ -18,7 +18,7 @@ maintainer: Hugo Daniel Gomes <mr.hugo.gomes@gmail.com> author: Hugo Daniel Gomes <mr.hugo.gomes@gmail.com> copyright: (c) 2010-2015 Hugo Daniel Gomes-cabal-version: >= 1.8+cabal-version: >= 1.10 homepage: https://github.com/HugoDaniel/timerep bug-reports: https://github.com/HugoDaniel/timerep/issues license: BSD3@@ -32,6 +32,7 @@ location: git://github.com/HugoDaniel/timerep.git library+ default-language: Haskell2010 build-depends: base < 5, monoid-subclasses >= 0.4.1,@@ -50,6 +51,7 @@ ghc-options: -Wall test-suite Tests+ default-language: Haskell2010 type: exitcode-stdio-1.0 hs-source-dirs: test main-is: Main.hs