coco 0.0.0.0 → 0.0.1.0
raw patch · 3 files changed
+31/−8 lines, 3 filesdep +aesondep +foldable1-classes-compatdep ~basedep ~template-haskellPVP ok
version bump matches the API change (PVP)
Dependencies added: aeson, foldable1-classes-compat
Dependency ranges changed: base, template-haskell
API changes (from Hackage documentation)
+ Coco: instance Coco.MaybeTo Data.Aeson.Types.Internal.Value Data.Aeson.Types.Internal.Value
+ Coco: instance Coco.MaybeTo Data.Aeson.Types.Internal.Value Data.ByteString.Internal.Type.ByteString
+ Coco: instance Coco.MaybeTo Data.Aeson.Types.Internal.Value Data.ByteString.Lazy.Internal.ByteString
+ Coco: instance Coco.MaybeTo Data.Aeson.Types.Internal.Value Data.Text.Internal.Lazy.Text
+ Coco: instance Coco.MaybeTo Data.Aeson.Types.Internal.Value Data.Text.Internal.Text
+ Coco: instance Coco.MaybeTo Data.Aeson.Types.Internal.Value Data.UUID.Types.Internal.UUID
+ Coco: instance Coco.MaybeTo Data.Aeson.Types.Internal.Value GHC.Base.String
+ Coco: instance Coco.MaybeTo Data.Aeson.Types.Internal.Value GHC.Base.Void
+ Coco: instance Coco.MaybeTo Data.ByteString.Internal.Type.ByteString Data.Aeson.Types.Internal.Value
+ Coco: instance Coco.MaybeTo Data.ByteString.Lazy.Internal.ByteString Data.Aeson.Types.Internal.Value
+ Coco: instance Coco.MaybeTo Data.Text.Internal.Lazy.Text Data.Aeson.Types.Internal.Value
+ Coco: instance Coco.MaybeTo Data.Text.Internal.Text Data.Aeson.Types.Internal.Value
+ Coco: instance Coco.MaybeTo Data.UUID.Types.Internal.UUID Data.Aeson.Types.Internal.Value
+ Coco: instance Coco.MaybeTo GHC.Base.String Data.Aeson.Types.Internal.Value
+ Coco: instance Coco.MaybeTo GHC.Base.Void Data.Aeson.Types.Internal.Value
+ Coco: instance Coco.To Data.Aeson.Types.Internal.Value Data.Aeson.Types.Internal.Value
+ Coco: instance Coco.To Data.Aeson.Types.Internal.Value Data.Text.Internal.Lazy.Text
+ Coco: instance Coco.To Data.Aeson.Types.Internal.Value Data.Text.Internal.Text
+ Coco: instance Coco.To Data.Aeson.Types.Internal.Value Data.UUID.Types.Internal.UUID
+ Coco: instance Coco.To Data.Aeson.Types.Internal.Value GHC.Base.Void
Files
- Coco.hs +22/−2
- Coco/TH.hs +2/−1
- coco.cabal +7/−5
Coco.hs view
@@ -6,7 +6,8 @@ module Coco where import qualified Language.Haskell.TH as TH import Data.Void (Void)-import Control.Monad (guard)+import Control.Applicative (empty)+import Control.Monad ((>=>), guard) import Data.Either.HT (maybeRight) import qualified Data.ByteString.Lazy as B import qualified Data.ByteString.Lazy.UTF8 as B@@ -18,6 +19,7 @@ import qualified Data.Text.Encoding as TS import Data.UUID (UUID) import qualified Data.UUID as UUID+import qualified Data.Aeson as Aeson import qualified Coco.TH {-|@@ -25,7 +27,7 @@ * Both types must be monomorphic. -* If two of @MaybeTo b a@, @MaybeTo c b@ and @MaybeTo c a@ are defined in your module, the third must be available (not necessarily defined) in your module.+* If two of @MaybeTo b a@, @MaybeTo c b@ and @MaybeTo c a@ are defined in your module, the third must be available in (not necessarily defined in) your module. * For any @a@, @maybeTo a >>= maybeTo@ must be either @maybeTo a@ or @Nothing@. -}@@ -118,3 +120,21 @@ instance To BS.ByteString UUID where to = UUID.toASCIIBytes instance MaybeTo BS.ByteString UUID instance MaybeTo UUID BS.ByteString where maybeTo = UUID.fromASCIIBytes++instance To Aeson.Value TS.Text where to = Aeson.String+instance MaybeTo Aeson.Value TS.Text+instance MaybeTo TS.Text Aeson.Value where+ maybeTo (Aeson.String s) = pure s+ maybeTo _ = empty+instance To Aeson.Value T.Text where to = to . to @TS.Text+instance MaybeTo Aeson.Value T.Text+instance MaybeTo T.Text Aeson.Value where maybeTo = fmap to . maybeTo @TS.Text+instance MaybeTo Aeson.Value String where maybeTo = fmap to . maybeTo @TS.Text+instance MaybeTo String Aeson.Value where maybeTo = fmap to . maybeTo @TS.Text+instance MaybeTo Aeson.Value B.ByteString where maybeTo = fmap to . maybeTo @TS.Text+instance MaybeTo B.ByteString Aeson.Value where maybeTo = fmap to . maybeTo @TS.Text+instance MaybeTo Aeson.Value BS.ByteString where maybeTo = fmap to . maybeTo @TS.Text+instance MaybeTo BS.ByteString Aeson.Value where maybeTo = fmap to . maybeTo @TS.Text+instance To Aeson.Value UUID where to = to . to @TS.Text+instance MaybeTo Aeson.Value UUID+instance MaybeTo UUID Aeson.Value where maybeTo = maybeTo @TS.Text >=> maybeTo
Coco/TH.hs view
@@ -10,6 +10,7 @@ import qualified Data.Text.Lazy as T import qualified Data.Text as TS import Data.UUID (UUID)+import qualified Data.Aeson as Aeson instanceD :: (Functor t, Foldable1 t) => [TH.Dec] -> t TH.Name -> TH.Dec instanceD = flip@@ -59,4 +60,4 @@ . fmap (: [''Void]) nonVoid :: [TH.Name]-nonVoid = [''B.ByteString, ''BS.ByteString, ''T.Text, ''TS.Text, ''String, ''UUID]+nonVoid = [''B.ByteString, ''BS.ByteString, ''T.Text, ''TS.Text, ''String, ''UUID, ''Aeson.Value]
coco.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.8 name: coco-version: 0.0.0.0+version: 0.0.1.0 build-type: Simple category: Conversion author: Konrad Czech@@ -19,14 +19,16 @@ library ghc-options: -Wall -Wno-tabs default-language: GHC2021- default-extensions: OverloadedStrings, QuasiQuotes, TemplateHaskell, TypeFamilyDependencies, DerivingStrategies, UndecidableInstances, DataKinds, CPP, LambdaCase, DefaultSignatures+ default-extensions: TemplateHaskell, DefaultSignatures build-depends:- base >= 4.18 && < 4.23,- template-haskell >= 2.20 && < 2.25,+ base >= 4.17 && < 4.23,+ template-haskell >= 2.19 && < 2.25, utility-ht >= 0.0.16 && < 0.1, bytestring >= 0.11.3 && < 0.13, utf8-string >= 1.0.1.1 && < 1.1, text >= 1.2.5.0 && < 2.2,- uuid >= 1.3.15 && < 1.4+ uuid >= 1.3.15 && < 1.4,+ aeson >= 2.1 && < 2.3,+ foldable1-classes-compat >= 0.1 && < 0.2 exposed-modules: Coco other-modules: Coco.TH