packages feed

happstack-data 0.4.1 → 0.5.0

raw patch · 5 files changed

+113/−11 lines, 5 filesdep +syb-with-class-instances-textdep +textdep +timedep ~happstack-utilPVP ok

version bump matches the API change (PVP)

Dependencies added: syb-with-class-instances-text, text, time

Dependency ranges changed: happstack-util

API changes (from Hackage documentation)

- Happstack.Data.Default: instance [overlap ok] (Default a) => Default [a]
- Happstack.Data.Proxy: constr[aE35] :: Constr
- Happstack.Data.Proxy: dataType[aE34] :: DataType
- Happstack.Data.Proxy: instance [overlap ok] (Data ctx t[aE33], Sat (ctx (Proxy t[aE33]))) => Data ctx (Proxy t[aE33])
- Happstack.Data.Proxy: instance [overlap ok] (Data t[aE33]) => Data (Proxy t[aE33])
- Happstack.Data.Proxy: instance [overlap ok] (Default t[aE33]) => Default (Proxy t[aE33])
- Happstack.Data.Proxy: instance [overlap ok] Read (Proxy t[aE33])
- Happstack.Data.Proxy: instance [overlap ok] Show (Proxy t[aE33])
- Happstack.Data.Xml: constr[a9cl] :: Constr
- Happstack.Data.Xml: constr[a9cm] :: Constr
- Happstack.Data.Xml: constr[a9cn] :: Constr
- Happstack.Data.Xml: constr[alRD] :: Constr
- Happstack.Data.Xml: constr[alRt] :: Constr
- Happstack.Data.Xml: dataType[a9ck] :: DataType
- Happstack.Data.Xml: dataType[alRC] :: DataType
- Happstack.Data.Xml: dataType[alRs] :: DataType
+ Happstack.Data.Default: instance [overlap ok] (Data DefaultD a) => Default [a]
+ Happstack.Data.Default: instance [overlap ok] Default Text
+ Happstack.Data.Proxy: constr[aoJf] :: Constr
+ Happstack.Data.Proxy: dataType[aoJe] :: DataType
+ Happstack.Data.Proxy: instance [overlap ok] (Data ctx t[aoJd], Sat (ctx (Proxy t[aoJd]))) => Data ctx (Proxy t[aoJd])
+ Happstack.Data.Proxy: instance [overlap ok] (Data t[aoJd]) => Data (Proxy t[aoJd])
+ Happstack.Data.Proxy: instance [overlap ok] (Default t[aoJd]) => Default (Proxy t[aoJd])
+ Happstack.Data.Proxy: instance [overlap ok] Read (Proxy t[aoJd])
+ Happstack.Data.Proxy: instance [overlap ok] Show (Proxy t[aoJd])
+ Happstack.Data.Serialize: instance [overlap ok] (Integral a, Serialize a) => Serialize (Ratio a)
+ Happstack.Data.Serialize: instance [overlap ok] (Typeable a) => Version (Ratio a)
+ Happstack.Data.Serialize: instance [overlap ok] Serialize AbsoluteTime
+ Happstack.Data.Serialize: instance [overlap ok] Serialize Day
+ Happstack.Data.Serialize: instance [overlap ok] Serialize DiffTime
+ Happstack.Data.Serialize: instance [overlap ok] Serialize LocalTime
+ Happstack.Data.Serialize: instance [overlap ok] Serialize NominalDiffTime
+ Happstack.Data.Serialize: instance [overlap ok] Serialize Text
+ Happstack.Data.Serialize: instance [overlap ok] Serialize TimeOfDay
+ Happstack.Data.Serialize: instance [overlap ok] Serialize TimeZone
+ Happstack.Data.Serialize: instance [overlap ok] Serialize UTCTime
+ Happstack.Data.Serialize: instance [overlap ok] Serialize UniversalTime
+ Happstack.Data.Serialize: instance [overlap ok] Serialize ZonedTime
+ Happstack.Data.Serialize: instance [overlap ok] Version AbsoluteTime
+ Happstack.Data.Serialize: instance [overlap ok] Version Day
+ Happstack.Data.Serialize: instance [overlap ok] Version DiffTime
+ Happstack.Data.Serialize: instance [overlap ok] Version LocalTime
+ Happstack.Data.Serialize: instance [overlap ok] Version NominalDiffTime
+ Happstack.Data.Serialize: instance [overlap ok] Version Text
+ Happstack.Data.Serialize: instance [overlap ok] Version TimeOfDay
+ Happstack.Data.Serialize: instance [overlap ok] Version TimeZone
+ Happstack.Data.Serialize: instance [overlap ok] Version UTCTime
+ Happstack.Data.Serialize: instance [overlap ok] Version UniversalTime
+ Happstack.Data.Serialize: instance [overlap ok] Version ZonedTime
+ Happstack.Data.Xml: constr[a6S9] :: Constr
+ Happstack.Data.Xml: constr[a6Sa] :: Constr
+ Happstack.Data.Xml: constr[a6Sb] :: Constr
+ Happstack.Data.Xml: constr[afJH] :: Constr
+ Happstack.Data.Xml: constr[afJx] :: Constr
+ Happstack.Data.Xml: dataType[a6S8] :: DataType
+ Happstack.Data.Xml: dataType[afJG] :: DataType
+ Happstack.Data.Xml: dataType[afJw] :: DataType
- Happstack.Data.Proxy: Proxy :: Proxy t[aE33]
+ Happstack.Data.Proxy: Proxy :: Proxy t[aoJd]
- Happstack.Data.Proxy: data Proxy t[aE33]
+ Happstack.Data.Proxy: data Proxy t[aoJd]

Files

happstack-data.cabal view
@@ -1,5 +1,5 @@ Name:               happstack-data-Version:            0.4.1+Version:            0.5.0 License:            BSD3 License-File:       COPYING Author:             Happstack team, HAppS LLC@@ -54,11 +54,14 @@   Build-Depends:      binary,                       bytestring,                       containers,-                      happstack-util >= 0.4.1 && < 0.5, +                      happstack-util >= 0.5 && < 0.6,                        HaXml >= 1.13 && < 1.14,                       mtl,                       pretty,                       syb-with-class >= 0.5,+                      syb-with-class-instances-text,+                      text >= 0.7.1,+                      time >= 1.1.4,                       template-haskell    hs-source-dirs:     src@@ -79,6 +82,7 @@     Happstack.Data.Serialize     Happstack.Data.SerializeTH   if flag(tests)+    Build-depends: HUnit     Exposed-modules:          Happstack.Data.Tests       Happstack.Data.Tests.Xml001@@ -96,7 +100,7 @@               TypeSynonymInstances, PatternGuards,               PolymorphicComponents   -- Should also have ", DeriveDataTypeable" but Cabal complains-  GHC-Options: -Wall+  GHC-Options: -Wall -O0  Executable happstack-data-tests   Main-Is: Test.hs
src/Happstack/Data/Default.hs view
@@ -32,11 +32,14 @@ import qualified Data.ByteString.Char8 as BSC import Data.Generics.SYB.WithClass.Basics import Data.Generics.SYB.WithClass.Instances ()+import Data.Generics.SYB.WithClass.Instances.Text () import Data.Int import Data.Word import qualified Data.Map as M import qualified Data.Set as S import Foreign.ForeignPtr+import Data.Text      as T+import Data.Text.Lazy as L  -- | The 'Default' class provides a 'defaultValue' value, which -- is the default value for that type.@@ -76,7 +79,7 @@ instance Default t => Sat (DefaultD t) where     dict = DefaultD { defaultValueD = defaultValue } -instance Default a => Default [a] where+instance Data DefaultD a => Default [a] where     defaultValue = []  instance Default Int     where defaultValue = 0@@ -114,6 +117,12 @@  instance Default BSC.ByteString where     defaultValue = BSC.pack ""+    +instance Default T.Text where+    defaultValue = T.empty+    +instance Default L.Text where+    defaultValue = L.empty      -- We don't really want this instance, but we need it for the ByteString -- instance
src/Happstack/Data/Serialize.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE UndecidableInstances, OverlappingInstances, ScopedTypeVariables, GADTs, PatternSignatures,+{-# LANGUAGE UndecidableInstances, OverlappingInstances, ScopedTypeVariables, GADTs,     GeneralizedNewtypeDeriving, DeriveDataTypeable #-} module Happstack.Data.Serialize     ( Serialize(..), Version(..), Migrate(..), Mode(..), Contained, contain, extension,@@ -9,6 +9,10 @@  import Control.Monad.Identity import Data.Int()+import Data.Ratio ((%), Ratio, denominator, numerator)+import Data.Time (Day(..), DiffTime, LocalTime(..), NominalDiffTime, TimeOfDay(..)+                 ,TimeZone(..), UTCTime(..), UniversalTime(..), ZonedTime(..))+import Data.Time.Clock.TAI (AbsoluteTime, taiEpoch, addAbsoluteTime, diffAbsoluteTime) import Foreign import qualified Data.ByteString.Lazy.Char8 as L import qualified Data.ByteString.Char8 as B@@ -17,11 +21,13 @@ import Happstack.Data.Proxy  import Data.Typeable-import qualified Data.Map as M import qualified Data.Map as Map import qualified Data.IntMap as IntMap import qualified Data.Set as Set-+import qualified Data.Text as ST+import qualified Data.Text.Encoding as ST+import qualified Data.Text.Lazy as LT+import qualified Data.Text.Lazy.Encoding as LT import Data.Binary     as B import Data.Binary.Put as B import Data.Binary.Get as B@@ -190,6 +196,17 @@ instance Version Int64 where mode = Primitive instance Serialize Int64 where     getCopy = contain get; putCopy = contain . put+{-+This instance requires base >= 4.2.0.0, which means GHC >= 6.12. We can add this back in when we drop support for GHC 6.10.++instance Version (Fixed a)+instance (Typeable a, HasResolution a) => Serialize (Fixed a) where+    getCopy = contain $ liftM fromRational safeGet ; putCopy = contain . safePut . toRational+-}+instance (Typeable a)  => Version (Ratio a)+instance (Integral a, Serialize a) => Serialize (Ratio a) where+  getCopy = contain $ liftM2 (%) safeGet safeGet+  putCopy r = contain $ safePut (numerator r) >> safePut (denominator r) instance Version () where mode = Primitive instance Serialize () where     getCopy = contain get; putCopy = contain . put@@ -257,7 +274,82 @@ instance (Serialize a) => Serialize (IntMap.IntMap a) where     getCopy = contain $ fmap IntMap.fromAscList safeGet     putCopy = contain . safePut . IntMap.toList+    +instance Version ST.Text+instance Serialize ST.Text where+    putCopy = putCopy . ST.encodeUtf8+    getCopy = contain $ fmap ST.decodeUtf8 safeGet+    +instance Version LT.Text+instance Serialize LT.Text where+    putCopy = putCopy . LT.encodeUtf8+    getCopy = contain $ fmap LT.decodeUtf8 safeGet ++-- Data.Time instances+instance Version Day+instance Serialize Day where+  getCopy = contain $ liftM ModifiedJulianDay get ; putCopy = contain . put . toModifiedJulianDay++instance Version UniversalTime+instance Serialize UniversalTime where+  getCopy = contain $ liftM ModJulianDate get ; putCopy = contain . put . getModJulianDate++instance Version UTCTime+instance Serialize UTCTime where+  getCopy   = contain $ liftM2 UTCTime safeGet safeGet+  putCopy d = contain $ safePut (utctDay d) >> safePut (utctDayTime d)++instance Version TimeZone+instance Serialize TimeZone where+  getCopy   = contain $ do minutes    <- safeGet+                           summerOnly <- safeGet+                           nam        <- safeGet+                           return (TimeZone minutes summerOnly nam)+  putCopy (TimeZone minutes summerOnly nam) =+    contain $ do safePut minutes+                 safePut summerOnly+                 safePut nam++instance Version TimeOfDay+instance Serialize TimeOfDay where+  getCopy = contain $ do h <- safeGet+                         m <- safeGet+                         s <- safeGet+                         return (TimeOfDay h m (fromRational s))+  putCopy (TimeOfDay h m s) =+    contain $ do safePut h+                 safePut m+                 safePut (toRational s)++instance Version ZonedTime+instance Serialize ZonedTime where+  getCopy   = contain $ liftM2 ZonedTime safeGet safeGet+  putCopy (ZonedTime lt tz) = contain $ safePut lt >> safePut tz++instance Version LocalTime+instance Serialize LocalTime where+  getCopy   = contain $ liftM2 LocalTime safeGet safeGet+  putCopy (LocalTime day tod) = contain $ safePut day >> safePut tod++instance Version DiffTime+instance Serialize DiffTime where+  getCopy = contain $ liftM fromRational safeGet ; putCopy = contain . safePut . toRational++instance Version NominalDiffTime+instance Serialize NominalDiffTime where+  getCopy = contain $ liftM fromRational get ; putCopy = contain . put . toRational++instance Version AbsoluteTime+instance Serialize AbsoluteTime where+  getCopy = contain $ liftM toAbsoluteTime safeGet+    where+      toAbsoluteTime :: DiffTime -> AbsoluteTime+      toAbsoluteTime dt = addAbsoluteTime dt taiEpoch+  putCopy = contain . safePut . fromAbsoluteTime+    where+      fromAbsoluteTime :: AbsoluteTime -> DiffTime+      fromAbsoluteTime at = diffAbsoluteTime at taiEpoch  -------------------------------------------------------------- -- Object serialization
src/Happstack/Data/Xml/Base.hs view
@@ -3,7 +3,7 @@              ScopedTypeVariables, GADTs,              PolymorphicComponents, FlexibleContexts,              MultiParamTypeClasses, DeriveDataTypeable,-             PatternSignatures, PatternGuards #-}+             ScopedTypeVariables, PatternGuards #-}  module Happstack.Data.Xml.Base where @@ -22,7 +22,6 @@ import Happstack.Data.Normalize import Happstack.Util.TH import Language.Haskell.TH-import qualified Data.Generics as G  {-| Element recursively represents XML data.       Elem n elems -> XML element with name n and described by elems.  Note that elems contains sub-elements as well as the attributes or literal data of the element.
src/Happstack/Data/Xml/Instances.hs view
@@ -9,12 +9,10 @@  module Happstack.Data.Xml.Instances where -import Data.Char import Data.List import Happstack.Data.Xml.Base import Data.Generics.SYB.WithClass.Basics import Data.Generics.SYB.WithClass.Instances ()-import Data.Maybe import           Data.ByteString.Char8 (ByteString) import qualified Data.ByteString.Char8 as BS