packages feed

timerep 1.0.3 → 1.0.4

raw patch · 4 files changed

+263/−253 lines, 4 filesdep +attoparsec

Dependencies added: attoparsec

Files

Data/Time/RFC2822.hs view
@@ -1,108 +1,114 @@-{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-}
--- |                                                                               
--- Module      : Data.Time.RFC2822
--- Copyright   : (c) 2011 Hugo Daniel Gomes
---
--- License     : BSD-style
--- Maintainer  : mr.hugo.gomes@gmail.com
--- Stability   : experimental
--- Portability : GHC
---
--- Support for reading and displaying time in the format specified by 
--- the RFC2822 <http://www.ietf.org/rfc/rfc2822.txt> section 3.3
---
--- Example of usage:
--- >
--- > import Data.Time.LocalTime
--- >
--- > showTime :: IO String
--- > showTime = getZonedTime >>= return . showRFC2822
--- >
--- > example1 = "Fri, 21 Nov 1997 09:55:06 -0600"
--- > example2 = "Tue, 15 Nov 1994 12:45:26 GMT"
--- > example3 = "Tue, 1 Jul 2003 10:52:37 +0200"
--- > example4 = "Thu, 13 Feb 1969 23:32:54 -0330"
--- > example5 = "Mon, 24 Nov 1997 14:22:01 -0800"
--- > example6 = "Thu,          13\n     Feb\n  1969\n        23:32\n     -0330"
--- > example7 = "Thu,          13\n     Feb\n  1969\n        23:32\n     -0330 (Newfoundland Time)"
--- > example8 = "24 Nov 1997 14:22:01 -0800"
--- > examples = [example1,example2,example3,example4,example5,example6,example7,example8]
--- >
--- > readAll = map readRFC2822 examples
-
-module Data.Time.RFC2822 (
-    -- * Basic type class
-    -- $basic
-    RFC2822(showRFC2822, readRFC2822)
-) where
-
-import Data.Time.Format
-import Data.Time.LocalTime
-import Data.Time.Calendar
-import Data.Maybe 
-import System.Locale
-
-test1  = "Fri, 21 Nov 1997 09:55:06 -0600"
-test2  = "Tue, 15 Nov 1994 12:45:26 GMT"
-test3  = "Tue, 1 Jul 2003 10:52:37 +0200"
-test4  = "Thu, 13 Feb 1969 23:32:54 -0330"
-test5  = "Mon, 24 Nov 1997 14:22:01 -0800"
-test6  = "Thu,          13\n     Feb\n  1969\n        23:32\n     -0330"
-test7  = "Thu,          13\n     Feb\n  1969\n        23:32\n     -0330 (Newfoundland Time)" -- Fails
-test8  = "24 Nov 1997 14:22:01 -0800"
-test9  = "15 Nov 1994 12:45:26 GMT"
-test10 = "Mon,24 Nov 1997 14:22:01 -0800"
-test11 = "Thu,\t13\n     Feb\n  1969\n        23:32\n     -0330 (Newfoundland Time)"  -- Fails
-test12 = "Thu, 13 Feb 1969 23:32 -0330 (Newfoundland Time)"  -- Fails
-tests :: [String]
-tests = [test1, test2, test3, test4, test5, test6, test7, test8, test9, test10
-        , test11, test12]
-testParse = length (catMaybes (map readRFC2822 tests)) == length tests
-
--- ----------------------------------------------------------------------------
--- The RFC2822 class definition
-
--- | This class is here to allow future support for other data types 
--- like Data.Text or Data.ByteString if that becomes necessary
-class RFC2822 a where
-  showRFC2822 :: ZonedTime -> a
-  readRFC2822 :: a -> Maybe ZonedTime
-  formatRFC2822 :: [a]
-
--- | For now there is only an instance for the String data type
-instance RFC2822 String where
-  showRFC2822 zt@(ZonedTime lt z) = 
-    formatTime defaultTimeLocale "%a, %e %b %Y %T" zt ++ printZone
-    where
-      timeZoneStr = timeZoneOffsetString z
-      printZone = if timeZoneStr == timeZoneOffsetString utc
-                    then " GMT"
-                    else " " ++ timeZoneStr
-
-  formatRFC2822 = [ "%a, %e %b %Y %T GMT"
-                  , "%a, %e %b %Y %T %z"
-                  , "%e %b %Y %T GMT"
-                  , "%e %b %Y %T %z"
-                  -- Support for hours:minutes
-                  , "%a, %e %b %Y %R GMT"
-                  , "%a, %e %b %Y %R %z"
-                  , "%e %b %Y %R GMT"
-                  , "%e %b %Y %R %z"
-                  ]
-
-  readRFC2822 t = foldr (tryP t') Nothing $ map p formatRFC2822
-    where 
-      p :: String -> String -> Maybe ZonedTime
-      p f s = parseTime defaultTimeLocale f s
-
-      tryP :: String -> (String -> Maybe a) -> Maybe a -> Maybe a
-      tryP s f acc | isJust acc = acc
-                   | otherwise = f s
-
-      -- t' is a trimmed t (currently only \n is trimmed)
-      -- TODO: trim other white space characters 
-      t' :: String
-      t' = lines t >>= ("" ++)
-
-showTime :: IO String
-showTime = getZonedTime >>= return . showRFC2822
+{-# LANGUAGE CPP, TypeSynonymInstances, FlexibleInstances #-}+-- |                                                                               +-- Module      : Data.Time.RFC2822+-- Copyright   : (c) 2011 Hugo Daniel Gomes+--+-- License     : BSD-style+-- Maintainer  : mr.hugo.gomes@gmail.com+-- Stability   : experimental+-- Portability : GHC+--+-- Support for reading and displaying time in the format specified by +-- the RFC2822 <http://www.ietf.org/rfc/rfc2822.txt> section 3.3+--+-- Example of usage:+-- >+-- > import Data.Time.LocalTime+-- >+-- > showTime :: IO String+-- > showTime = getZonedTime >>= return . showRFC2822+-- >+-- > example1 = "Fri, 21 Nov 1997 09:55:06 -0600"+-- > example2 = "Tue, 15 Nov 1994 12:45:26 GMT"+-- > example3 = "Tue, 1 Jul 2003 10:52:37 +0200"+-- > example4 = "Thu, 13 Feb 1969 23:32:54 -0330"+-- > example5 = "Mon, 24 Nov 1997 14:22:01 -0800"+-- > example6 = "Thu,          13\n     Feb\n  1969\n        23:32\n     -0330"+-- > example7 = "Thu,          13\n     Feb\n  1969\n        23:32\n     -0330 (Newfoundland Time)"+-- > example8 = "24 Nov 1997 14:22:01 -0800"+-- > examples = [example1,example2,example3,example4,example5,example6,example7,example8]+-- >+-- > readAll = map readRFC2822 examples++module Data.Time.RFC2822 (+    -- * Basic type class+    -- $basic+    RFC2822(showRFC2822, readRFC2822)+) where++#if __GLASGOW_HASKELL__ < 710+import System.Locale+#endif++import Data.Time.Format+import Data.Time.LocalTime+import Data.Time.Calendar+import Data.Maybe +import qualified Data.Attoparsec.Text as A+import Data.Attoparsec.Text+import qualified Data.Attoparsec.Combinator as AC++test1  = "Fri, 21 Nov 1997 09:55:06 -0600"+test2  = "Tue, 15 Nov 1994 12:45:26 GMT"+test3  = "Tue, 1 Jul 2003 10:52:37 +0200"+test4  = "Thu, 13 Feb 1969 23:32:54 -0330"+test5  = "Mon, 24 Nov 1997 14:22:01 -0800"+test6  = "Thu,          13\n     Feb\n  1969\n        23:32\n     -0330"+test7  = "Thu,          13\n     Feb\n  1969\n        23:32\n     -0330 (Newfoundland Time)" -- Fails+test8  = "24 Nov 1997 14:22:01 -0800"+test9  = "15 Nov 1994 12:45:26 GMT"+test10 = "Mon,24 Nov 1997 14:22:01 -0800"+test11 = "Thu,\t13\n     Feb\n  1969\n        23:32\n     -0330 (Newfoundland Time)"  -- Fails+test12 = "Thu, 13 Feb 1969 23:32 -0330 (Newfoundland Time)"  -- Fails+tests :: [String]+tests = [test1, test2, test3, test4, test5, test6, test7, test8, test9, test10+        , test11, test12]+testParse = length (catMaybes (map readRFC2822 tests)) == length tests++-- ----------------------------------------------------------------------------+-- The RFC2822 class definition++-- | This class is here to allow future support for other data types +-- like Data.Text or Data.ByteString if that becomes necessary+class RFC2822 a where+  showRFC2822 :: ZonedTime -> a+  readRFC2822 :: a -> Maybe ZonedTime+  formatRFC2822 :: [a]++-- | For now there is only an instance for the String data type+instance RFC2822 String where+  showRFC2822 zt@(ZonedTime lt z) = +    formatTime defaultTimeLocale "%a, %e %b %Y %T" zt ++ printZone+    where+      timeZoneStr = timeZoneOffsetString z+      printZone = if timeZoneStr == timeZoneOffsetString utc+                    then " GMT"+                    else " " ++ timeZoneStr++  formatRFC2822 = [ "%a, %e %b %Y %T GMT"+                  , "%a, %e %b %Y %T %z"+                  , "%e %b %Y %T GMT"+                  , "%e %b %Y %T %z"+                  -- Support for hours:minutes+                  , "%a, %e %b %Y %R GMT"+                  , "%a, %e %b %Y %R %z"+                  , "%e %b %Y %R GMT"+                  , "%e %b %Y %R %z"+                  ]++  readRFC2822 t = foldr (tryP t') Nothing $ map p formatRFC2822+    where +      p :: String -> String -> Maybe ZonedTime+      p f s = parseTime defaultTimeLocale f s++      tryP :: String -> (String -> Maybe a) -> Maybe a -> Maybe a+      tryP s f acc | isJust acc = acc+                   | otherwise = f s++      -- t' is a trimmed t (currently only \n is trimmed)+      -- TODO: trim other white space characters +      t' :: String+      t' = lines t >>= ("" ++)++showTime :: IO String+showTime = getZonedTime >>= return . showRFC2822
Data/Time/RFC3339.hs view
@@ -1,85 +1,88 @@-{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-}
--- |                                                                               
--- Module      : Data.Time.RFC3339
--- Copyright   : (c) 2011 Hugo Daniel Gomes
---
--- License     : BSD-style
--- Maintainer  : mr.hugo.gomes@gmail.com
--- Stability   : experimental
--- Portability : GHC
---
--- Support for reading and displaying time in the format specified by 
--- the RFC3339 <http://www.ietf.org/rfc/rfc3339.txt>
---
--- Example of usage:
--- >
--- > import Data.Time.LocalTime
--- >
--- > showTime :: IO String
--- > showTime = getZonedTime >>= return . showRFC3339
--- >
--- > example1 = "1985-04-12T23:20:50.52Z"
--- > example2 = "1996-12-19T16:39:57-08:00"
--- > example3 = "1990-12-31T23:59:60Z"
--- > example4 = "1990-12-31T15:59:60-08:00"
--- > example5 = "1937-01-01T12:00:27.87+00:20"
--- > examples = [example1,example2,example3,example4,example5]
--- >
--- > readAll = map readRFC3339 examples
-
-module Data.Time.RFC3339 (
-    -- * Basic type class
-    -- $basic
-    RFC3339(showRFC3339, readRFC3339)
-) where
-
-import Data.Time.Format
-import Data.Time.LocalTime
-import Data.Time.Calendar
-import Data.Maybe 
-import System.Locale
-
-test1 = "1985-04-12T23:20:50.52Z"
-test2 = "1996-12-19T16:39:57-08:00"
-test3 = "1990-12-31T23:59:60Z"
-test4 = "1990-12-31T15:59:60-08:00"
-test5 = "1937-01-01T12:00:27.87+00:20"
-tests :: [String]
-tests = [test1, test2, test3, test4, test5]
-testParse = length (catMaybes (map readRFC3339 tests)) == length tests
-
--- ----------------------------------------------------------------------------
--- The RFC3339 class definition
-
--- | This class is here to allow future support for other data types 
--- like Data.Text or Data.ByteString if that becomes necessary
-class RFC3339 a where
-  showRFC3339 :: ZonedTime -> a
-  readRFC3339 :: a -> Maybe ZonedTime
-  formatRFC3339 :: [a]
-
--- | For now there is only an instance for the String data type
-instance RFC3339 String where
-  showRFC3339 zt@(ZonedTime lt z) = 
-    formatTime defaultTimeLocale "%FT%T" zt ++ printZone
-    where
-      timeZoneStr = timeZoneOffsetString z
-      printZone = if timeZoneStr == timeZoneOffsetString utc
-                    then "Z"
-                    else take 3 timeZoneStr ++ ":" ++ drop 3 timeZoneStr
-  formatRFC3339 = [ "%FT%TZ"
-                  , "%FT%T%z"
-                  , "%FT%T%Q%z"
-                  , "%FT%T%QZ"
-                  ]
-  readRFC3339 t = foldr (tryP t) Nothing $ map p formatRFC3339
-    where 
-      p :: String -> String -> Maybe ZonedTime
-      p f s = parseTime defaultTimeLocale f s
-
-      tryP :: String -> (String -> Maybe a) -> Maybe a -> Maybe a
-      tryP s f acc | isJust acc = acc
-                   | otherwise = f s
-
-showTime :: IO String
-showTime = getZonedTime >>= return . showRFC3339
+{-# LANGUAGE CPP, TypeSynonymInstances, FlexibleInstances #-}+-- |                                                                               +-- Module      : Data.Time.RFC3339+-- Copyright   : (c) 2011 Hugo Daniel Gomes+--+-- License     : BSD-style+-- Maintainer  : mr.hugo.gomes@gmail.com+-- Stability   : experimental+-- Portability : GHC+--+-- Support for reading and displaying time in the format specified by +-- the RFC3339 <http://www.ietf.org/rfc/rfc3339.txt>+--+-- Example of usage:+-- >+-- > import Data.Time.LocalTime+-- >+-- > showTime :: IO String+-- > showTime = getZonedTime >>= return . showRFC3339+-- >+-- > example1 = "1985-04-12T23:20:50.52Z"+-- > example2 = "1996-12-19T16:39:57-08:00"+-- > example3 = "1990-12-31T23:59:60Z"+-- > example4 = "1990-12-31T15:59:60-08:00"+-- > example5 = "1937-01-01T12:00:27.87+00:20"+-- > examples = [example1,example2,example3,example4,example5]+-- >+-- > readAll = map readRFC3339 examples++module Data.Time.RFC3339 (+    -- * Basic type class+    -- $basic+    RFC3339(showRFC3339, readRFC3339)+) where++#if __GLASGOW_HASKELL__ < 710+import System.Locale+#endif++import Data.Time.Format+import Data.Time.LocalTime+import Data.Time.Calendar+import Data.Maybe ++test1 = "1985-04-12T23:20:50.52Z"+test2 = "1996-12-19T16:39:57-08:00"+test3 = "1990-12-31T23:59:60Z"+test4 = "1990-12-31T15:59:60-08:00"+test5 = "1937-01-01T12:00:27.87+00:20"+tests :: [String]+tests = [test1, test2, test3, test4, test5]+testParse = length (catMaybes (map readRFC3339 tests)) == length tests++-- ----------------------------------------------------------------------------+-- The RFC3339 class definition++-- | This class is here to allow future support for other data types +-- like Data.Text or Data.ByteString if that becomes necessary+class RFC3339 a where+  showRFC3339 :: ZonedTime -> a+  readRFC3339 :: a -> Maybe ZonedTime+  formatRFC3339 :: [a]++-- | For now there is only an instance for the String data type+instance RFC3339 String where+  showRFC3339 zt@(ZonedTime lt z) = +    formatTime defaultTimeLocale "%FT%T" zt ++ printZone+    where+      timeZoneStr = timeZoneOffsetString z+      printZone = if timeZoneStr == timeZoneOffsetString utc+                    then "Z"+                    else take 3 timeZoneStr ++ ":" ++ drop 3 timeZoneStr+  formatRFC3339 = [ "%FT%TZ"+                  , "%FT%T%z"+                  , "%FT%T%Q%z"+                  , "%FT%T%QZ"+                  ]+  readRFC3339 t = foldr (tryP t) Nothing $ map p formatRFC3339+    where +      p :: String -> String -> Maybe ZonedTime+      p f s = parseTime defaultTimeLocale f s++      tryP :: String -> (String -> Maybe a) -> Maybe a -> Maybe a+      tryP s f acc | isJust acc = acc+                   | otherwise = f s++showTime :: IO String+showTime = getZonedTime >>= return . showRFC3339
LICENSE view
@@ -1,20 +1,20 @@-Copyright (c) 2010 Hugo Daniel H. O. Gomes <hugo.gomes@fcsh.unl.pt>
-
-This software is provided 'as-is', without any express or implied
-warranty. In no event will the authors be held liable for any damages
-arising from the use of this software.
-
-Permission is granted to anyone to use this software for any purpose,
-including commercial applications, and to alter it and redistribute it
-freely, subject to the following restrictions:
-
-1. The origin of this software must not be misrepresented; you must not
-   claim that you wrote the original software. If you use this software
-   in a product, an acknowledgment in the product documentation would
-   be appreciated but is not required.
-
-2. Altered source versions must be plainly marked as such, and must not
-   be misrepresented as being the original software.
-
-3. This notice may not be removed or altered from any source
-   distribution.
+Copyright (c) 2010 Hugo Daniel H. O. Gomes <hugo.gomes@fcsh.unl.pt>++This software is provided 'as-is', without any express or implied+warranty. In no event will the authors be held liable for any damages+arising from the use of this software.++Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it+freely, subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not+   claim that you wrote the original software. If you use this software+   in a product, an acknowledgment in the product documentation would+   be appreciated but is not required.++2. Altered source versions must be plainly marked as such, and must not+   be misrepresented as being the original software.++3. This notice may not be removed or altered from any source+   distribution.
timerep.cabal view
@@ -1,40 +1,41 @@-Name:          timerep
-Version:       1.0.3
-Category:      Web, Time
-Synopsis:      Parse and display time according to some RFCs (RFC3339, RFC2822)
-Description:   
-    .
-    Parse and display time according to some RFC's.
-    Supported: 
-    RFC3339 <http://www.ietf.org/rfc/rfc3339.txt>
-    RFC2822 <http://www.ietf.org/rfc/rfc2822.txt>
-    .
-    This package defines a type class to parse and read time representations 
-    specified in some RFC's.
-    Right now there is only support for reading and showing String
-    .
-    Special thanks to Koral for all the suggestions and help in solving some bugs
-    .
-Build-type:    Simple
-Maintainer:    Hugo Daniel Gomes <mr.hugo.gomes@gmail.com>
-Author:        Hugo Daniel Gomes <mr.hugo.gomes@gmail.com>
-Copyright:     Hugo Daniel Gomes
-Cabal-version: >= 1.6
-License:       BSD3
-License-file:  LICENSE
-source-repository head                                                             
-  type:     git                                                                    
-  location: git://github.com/HugoDaniel/RFC3339.git
-
-library
-  build-depends:
-    base < 5, 
-    time >= 1.2, 
-    old-locale
-
-  exposed-modules:
-    Data.Time.RFC3339
-    Data.Time.RFC2822
-
-  extensions: TypeSynonymInstances FlexibleInstances
-
+Name:          timerep+Version:       1.0.4+Category:      Web, Time+Synopsis:      Parse and display time according to some RFCs (RFC3339, RFC2822)+Description:   +    .+    Parse and display time according to some RFC's.+    Supported: +    RFC3339 <http://www.ietf.org/rfc/rfc3339.txt>+    RFC2822 <http://www.ietf.org/rfc/rfc2822.txt>+    .+    This package defines a type class to parse and read time representations +    specified in some RFC's.+    Right now there is only support for reading and showing String+    .+    Special thanks to Koral for all the suggestions and help in solving some bugs+    .+Build-type:    Simple+Maintainer:    Hugo Daniel Gomes <mr.hugo.gomes@gmail.com>+Author:        Hugo Daniel Gomes <mr.hugo.gomes@gmail.com>+Copyright:     Hugo Daniel Gomes+Cabal-version: >= 1.6+License:       BSD3+License-file:  LICENSE+source-repository head                                                             +  type:     git                                                                    +  location: git://github.com/HugoDaniel/RFC3339.git++library+  build-depends:+    base < 5, +    time >= 1.2, +    attoparsec,+    old-locale++  exposed-modules:+    Data.Time.RFC3339+    Data.Time.RFC2822++  extensions: TypeSynonymInstances FlexibleInstances+