markup 0.0.8 → 1.0.0
raw patch · 3 files changed
+48/−26 lines, 3 filesdep +comonadPVP ok
version bump matches the API change (PVP)
Dependencies added: comonad
API changes (from Hackage documentation)
- Data.Markup.Class: instance Markup HostedMarkupM
- Data.Markup.Class: instance Markup InlineMarkupM
- Data.Markup.Class: instance Markup LocalMarkupM
+ Data.Markup.Class: instance (Monad m, Comonad m) => Markup m
+ Data.Markup.Types: instance (Comonad m, Monad m) => Comonad (HostedMarkupT m)
+ Data.Markup.Types: instance (Comonad m, Monad m) => Comonad (InlineMarkupT m)
+ Data.Markup.Types: instance (Comonad m, Monad m) => Comonad (LocalMarkupT m)
+ Data.Markup.Types: instance Comonad HostedMarkupM
+ Data.Markup.Types: instance Comonad InlineMarkupM
+ Data.Markup.Types: instance Comonad LocalMarkupM
- Data.Markup.Class: class Monad m => Markup (m :: * -> *)
+ Data.Markup.Class: class Markup (m :: * -> *)
Files
- markup.cabal +3/−1
- src/Data/Markup/Class.hs +12/−19
- src/Data/Markup/Types.hs +33/−6
markup.cabal view
@@ -1,9 +1,10 @@ Name: markup-Version: 0.0.8+Version: 1.0.0 Author: Athan Clark <athan.clark@gmail.com> Maintainer: Athan Clark <athan.clark@gmail.com> License: MIT License-File: LICENSE+Category: Data, Web Synopsis: Abstraction for markup languages Description: This library tries to make things more uniformly controlled when working with@@ -56,6 +57,7 @@ , blaze-markup , text , urlpath >= 1.0+ , comonad Test-Suite spec Type: exitcode-stdio-1.0
src/Data/Markup/Class.hs view
@@ -1,32 +1,25 @@-{-# LANGUAGE AllowAmbiguousTypes #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE KindSignatures #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE+ FlexibleContexts+ , FlexibleInstances+ , KindSignatures+ , MultiParamTypeClasses+ , UndecidableInstances+ #-} module Data.Markup.Class where import Data.Markup.Types-+import Control.Comonad -- | Overload assets and their markup library, over some deployment class Deploy symbol input markup (m :: * -> *) where deploy :: symbol -> input -> m markup -- | Overload extraction of (co)monad-class Monad m => Markup (m :: * -> *) where+class Markup (m :: * -> *) where renderMarkup :: m a -> a toMarkup :: a -> m a -instance Markup InlineMarkupM where- renderMarkup = runInlineMarkupM- toMarkup = InlineMarkupM--instance Markup HostedMarkupM where- renderMarkup = runHostedMarkupM- toMarkup = HostedMarkupM--instance Markup LocalMarkupM where- renderMarkup = runLocalMarkupM- toMarkup = LocalMarkupM+instance (Monad m, Comonad m) => Markup m where+ renderMarkup = extract+ toMarkup = return
src/Data/Markup/Types.hs view
@@ -1,14 +1,17 @@-{-# LANGUAGE DeriveFunctor #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE+ DeriveFunctor+ , FlexibleContexts+ , FlexibleInstances+ , GeneralizedNewtypeDeriving+ , MultiParamTypeClasses+ , StandaloneDeriving+ #-} module Data.Markup.Types where import Control.Applicative import Control.Monad.Trans+import Control.Comonad import Data.Monoid @@ -20,6 +23,10 @@ deriving instance Applicative f => Applicative (InlineMarkupT f) deriving instance Monad m => Monad (InlineMarkupT m) +instance (Comonad m, Monad m) => Comonad (InlineMarkupT m) where+ extract = extract . runInlineMarkupT+ duplicate = InlineMarkupT . return+ instance MonadTrans InlineMarkupT where lift = InlineMarkupT @@ -30,6 +37,10 @@ deriving instance Applicative f => Applicative (HostedMarkupT f) deriving instance Monad m => Monad (HostedMarkupT m) +instance (Comonad m, Monad m) => Comonad (HostedMarkupT m) where+ extract = extract . runHostedMarkupT+ duplicate = HostedMarkupT . return+ instance MonadTrans HostedMarkupT where lift = HostedMarkupT @@ -40,6 +51,10 @@ deriving instance Applicative f => Applicative (LocalMarkupT f) deriving instance Monad m => Monad (LocalMarkupT m) +instance (Comonad m, Monad m) => Comonad (LocalMarkupT m) where+ extract = extract . runLocalMarkupT+ duplicate = LocalMarkupT . return+ instance MonadTrans LocalMarkupT where lift = LocalMarkupT @@ -59,6 +74,10 @@ return = InlineMarkupM x >>= f = f $ runInlineMarkupM x +instance Comonad InlineMarkupM where+ extract = runInlineMarkupM+ duplicate = InlineMarkupM+ newtype HostedMarkupM a = HostedMarkupM {runHostedMarkupM :: a} deriving (Functor) @@ -73,6 +92,10 @@ return = HostedMarkupM x >>= f = f $ runHostedMarkupM x +instance Comonad HostedMarkupM where+ extract = runHostedMarkupM+ duplicate = HostedMarkupM+ newtype LocalMarkupM a = LocalMarkupM {runLocalMarkupM :: a} deriving (Functor) @@ -86,3 +109,7 @@ instance Monad LocalMarkupM where return = LocalMarkupM x >>= f = f $ runLocalMarkupM x++instance Comonad LocalMarkupM where+ extract = runLocalMarkupM+ duplicate = LocalMarkupM