packages feed

thyme 0.3.1.0 → 0.3.1.1

raw patch · 11 files changed

+117/−110 lines, 11 files

Files

− src/Data/Micro.hs
@@ -1,94 +0,0 @@-{-# LANGUAGE CPP #-}-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE StandaloneDeriving #-}-{-# LANGUAGE TypeFamilies #-}-{-# OPTIONS_HADDOCK hide #-}--#include "thyme.h"--module Data.Micro where--import Prelude-import Control.DeepSeq-import Data.AdditiveGroup-import Data.Basis-import Data.Data-import Data.Int-import Data.Ix-import Data.Ratio-import Data.VectorSpace-import GHC.Generics (Generic)-import System.Random-import Test.QuickCheck--#if !SHOW_INTERNAL-import Control.Monad-import Data.Char-import Data.Thyme.Format.Internal-import Numeric-import Text.ParserCombinators.ReadPrec-import Text.ParserCombinators.ReadP-import Text.Read-#endif--newtype Micro = Micro Int64 deriving (INSTANCES_MICRO)--#if SHOW_INTERNAL-deriving instance Show Micro-deriving instance Read Micro-#else-instance Show Micro where-    {-# INLINEABLE showsPrec #-}-    showsPrec _ (Micro a) = sign . shows si . frac where-        sign = if a < 0 then (:) '-' else id-        (si, su) = abs a `divMod` 1000000-        frac = if su == 0 then id else (:) '.' . fills06 su . drops0 su--instance Read Micro where-    {-# INLINEABLE readPrec #-}-    readPrec = lift $ do-        sign <- (char '-' >> return negate) `mplus` return id-        s <- readS_to_P readDec-        us <- (`mplus` return 0) $ do-            _ <- char '.'-            [(us10, "")] <- (readDec . take 7 . (++ "000000"))-                `fmap` munch1 isDigit-            return (div (us10 + 5) 10)-        return . Micro . sign $ s * 1000000 + us-#endif--{-# INLINE toMicro #-}-toMicro :: Rational -> Micro-toMicro r = Micro (fromInteger $ 1000000 * numerator r `div` denominator r)--{-# INLINE microQuotRem #-}-{-# INLINE microDivMod #-}-microQuotRem, microDivMod :: Micro -> Micro -> (Int64, Micro)-microQuotRem (Micro a) (Micro b) = (n, Micro f) where (n, f) = quotRem a b-microDivMod  (Micro a) (Micro b) = (n, Micro f) where (n, f) = divMod a b--instance AdditiveGroup Micro where-    {-# INLINE zeroV #-}-    zeroV = Micro 0-    {-# INLINE (^+^) #-}-    Micro a ^+^ Micro b = Micro (a + b)-    {-# INLINE negateV #-}-    negateV (Micro a) = Micro (negate a)--instance VectorSpace Micro where-    type Scalar Micro = Rational-    {-# INLINE (*^) #-}-    s *^ Micro a = Micro . fromInteger $-        toInteger a * numerator s `quot` denominator s--instance HasBasis Micro where-    type Basis Micro = ()-    {-# INLINE basisValue #-}-    basisValue () = Micro 1000000-    {-# INLINE decompose #-}-    decompose (Micro a) = [((), fromIntegral a % 1000000)]-    {-# INLINE decompose' #-}-    decompose' (Micro a) = const (fromIntegral a % 1000000)-
src/Data/Thyme/Clock/Internal.hs view
@@ -21,7 +21,7 @@ import Data.Data import Data.Int import Data.Ix-import Data.Micro+import Data.Thyme.Internal.Micro import Data.Thyme.Calendar.Internal import Data.VectorSpace import GHC.Generics (Generic)
src/Data/Thyme/Clock/POSIX.hs view
@@ -6,7 +6,7 @@ import Prelude import Control.Lens import Data.AdditiveGroup-import Data.Micro+import Data.Thyme.Internal.Micro import Data.Thyme.Clock.Internal import qualified Data.Time.Clock.POSIX as T import Data.VectorSpace
src/Data/Thyme/Format.hs view
@@ -27,7 +27,7 @@ import qualified Data.ByteString.Char8 as S import Data.Char import Data.Int-import Data.Micro+import Data.Thyme.Internal.Micro import Data.Thyme.Calendar import Data.Thyme.Calendar.Internal import Data.Thyme.Clock.Internal
src/Data/Thyme/Format/Aeson.hs view
@@ -20,10 +20,12 @@ import Data.Thyme import System.Locale --- Copypasta sans change from aeson-0.6.2.1:Data.Aeson.Types.Class--- Copyright:   (c) 2011, 2012 Bryan O'Sullivan+-- Copyright:   (c) 2011, 2012, 2013 Bryan O'Sullivan --              (c) 2011 MailRank, Inc. +------------------------------------------------------------------------+-- Copypasta from aeson-0.7.0.0:Data.Aeson.Types.Internal+ -- | A newtype wrapper for 'UTCTime' that uses the same non-standard -- serialization format as Microsoft .NET, whose @System.DateTime@ -- type is by default serialized to JSON as in the following example:@@ -35,11 +37,13 @@       fromDotNetTime :: UTCTime     } deriving (Eq, Ord, Read, Show, Typeable, FormatTime) +------------------------------------------------------------------------+-- Copypasta from aeson-0.7.0.0:Data.Aeson.Types.Instances+ instance ToJSON DotNetTime where     toJSON (DotNetTime t) =-        String (pack (secs ++ msecs ++ ")/"))+        String (pack (secs ++ formatMillis t ++ ")/"))       where secs  = formatTime defaultTimeLocale "/Date(%s" t-            msecs = take 3 $ formatTime defaultTimeLocale "%q" t     {-# INLINE toJSON #-}  instance FromJSON DotNetTime where@@ -54,12 +58,14 @@ instance ToJSON ZonedTime where     toJSON t = String $ pack $ formatTime defaultTimeLocale format t       where-        format = "%FT%T" ++ milliseconds ++ tzFormat-        milliseconds = take 4 $ formatTime defaultTimeLocale "%Q" t+        format = "%FT%T." ++ formatMillis t ++ tzFormat         tzFormat           | 0 == timeZoneMinutes (zonedTimeZone t) = "Z"           | otherwise = "%z" +formatMillis :: (FormatTime t) => t -> String+formatMillis t = take 3 . formatTime defaultTimeLocale "%q" $ t+ instance FromJSON ZonedTime where     parseJSON (String t) =       tryFormats alternateFormats@@ -83,7 +89,7 @@  instance ToJSON UTCTime where     toJSON t = String (pack (take 23 str ++ "Z"))-      where str = formatTime defaultTimeLocale "%FT%T%Q" t+      where str = formatTime defaultTimeLocale "%FT%T.%q" t     {-# INLINE toJSON #-}  instance FromJSON UTCTime where
src/Data/Thyme/Format/Human.hs view
@@ -18,7 +18,7 @@ import Data.AdditiveGroup import Data.AffineSpace import Data.Foldable-import Data.Micro+import Data.Thyme.Internal.Micro import Data.Monoid import Data.Thyme.Clock.Internal import Data.Thyme.TH
+ src/Data/Thyme/Internal/Micro.hs view
@@ -0,0 +1,95 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE TypeFamilies #-}+{-# OPTIONS_HADDOCK hide #-}++#include "thyme.h"++-- | FOR INTERNAL USE ONLY.+module Data.Thyme.Internal.Micro where++import Prelude+import Control.DeepSeq+import Data.AdditiveGroup+import Data.Basis+import Data.Data+import Data.Int+import Data.Ix+import Data.Ratio+import Data.VectorSpace+import GHC.Generics (Generic)+import System.Random+import Test.QuickCheck++#if !SHOW_INTERNAL+import Control.Monad+import Data.Char+import Data.Thyme.Format.Internal+import Numeric+import Text.ParserCombinators.ReadPrec+import Text.ParserCombinators.ReadP+import Text.Read+#endif++newtype Micro = Micro Int64 deriving (INSTANCES_MICRO)++#if SHOW_INTERNAL+deriving instance Show Micro+deriving instance Read Micro+#else+instance Show Micro where+    {-# INLINEABLE showsPrec #-}+    showsPrec _ (Micro a) = sign . shows si . frac where+        sign = if a < 0 then (:) '-' else id+        (si, su) = abs a `divMod` 1000000+        frac = if su == 0 then id else (:) '.' . fills06 su . drops0 su++instance Read Micro where+    {-# INLINEABLE readPrec #-}+    readPrec = lift $ do+        sign <- (char '-' >> return negate) `mplus` return id+        s <- readS_to_P readDec+        us <- (`mplus` return 0) $ do+            _ <- char '.'+            [(us10, "")] <- (readDec . take 7 . (++ "000000"))+                `fmap` munch1 isDigit+            return (div (us10 + 5) 10)+        return . Micro . sign $ s * 1000000 + us+#endif++{-# INLINE toMicro #-}+toMicro :: Rational -> Micro+toMicro r = Micro (fromInteger $ 1000000 * numerator r `div` denominator r)++{-# INLINE microQuotRem #-}+{-# INLINE microDivMod #-}+microQuotRem, microDivMod :: Micro -> Micro -> (Int64, Micro)+microQuotRem (Micro a) (Micro b) = (n, Micro f) where (n, f) = quotRem a b+microDivMod  (Micro a) (Micro b) = (n, Micro f) where (n, f) = divMod a b++instance AdditiveGroup Micro where+    {-# INLINE zeroV #-}+    zeroV = Micro 0+    {-# INLINE (^+^) #-}+    Micro a ^+^ Micro b = Micro (a + b)+    {-# INLINE negateV #-}+    negateV (Micro a) = Micro (negate a)++instance VectorSpace Micro where+    type Scalar Micro = Rational+    {-# INLINE (*^) #-}+    s *^ Micro a = Micro . fromInteger $+        toInteger a * numerator s `quot` denominator s++instance HasBasis Micro where+    type Basis Micro = ()+    {-# INLINE basisValue #-}+    basisValue () = Micro 1000000+    {-# INLINE decompose #-}+    decompose (Micro a) = [((), fromIntegral a % 1000000)]+    {-# INLINE decompose' #-}+    decompose' (Micro a) = const (fromIntegral a % 1000000)+
src/Data/Thyme/LocalTime/Internal.hs view
@@ -20,7 +20,7 @@ import Control.Monad import Data.AffineSpace import Data.Data-import Data.Micro+import Data.Thyme.Internal.Micro import Data.Thyme.Calendar.Internal import Data.Thyme.Clock.Internal #if !SHOW_INTERNAL
src/Data/Thyme/Time.hs view
@@ -34,7 +34,7 @@     ) where  import Prelude-import Data.Micro+import Data.Thyme.Internal.Micro import Data.Ratio import Data.Thyme import Data.Thyme.Clock.Internal
src/Data/Thyme/Time/Core.hs view
@@ -15,7 +15,7 @@ import Control.Lens import Data.AffineSpace import Data.Int-import Data.Micro+import Data.Thyme.Internal.Micro import Data.Ratio import Data.Thyme import Data.Thyme.Calendar.OrdinalDate
thyme.cabal view
@@ -1,5 +1,5 @@ name:           thyme-version:        0.3.1.0+version:        0.3.1.1 synopsis:       A faster time library description:     Thyme is a rewrite of the fine @time@ library, with a particular focus@@ -59,11 +59,11 @@         Data.Thyme.Format         Data.Thyme.Format.Human         Data.Thyme.Format.Aeson+        Data.Thyme.Internal.Micro         Data.Thyme.LocalTime         Data.Thyme.Time         Data.Thyme.Time.Core     other-modules:-        Data.Micro         Data.Thyme.Calendar.Internal         Data.Thyme.Clock.Internal         Data.Thyme.Format.Internal