{-# LANGUAGE DeriveDataTypeable, FlexibleInstances, TemplateHaskell, TypeFamilies, OverloadedStrings #-}
module Clckwrks.Page.Types where

import Clckwrks                 (UserId(..))
import Clckwrks.Markup.HsColour (hscolour)
import Clckwrks.Markup.Markdown (markdown)
import Clckwrks.Markup.Pandoc   (pandoc)
import Clckwrks.Monad           (ThemeStyleId(..))
import Clckwrks.Types           (Trust(..))
import Control.Applicative      ((<$>), optional)
import Control.Monad.Trans      (MonadIO(liftIO))
import Data.Aeson               (ToJSON(..), FromJSON(..))
import Data.Char                (ord, toLower, isAlphaNum)
import Data.Data                (Data, Typeable)
import Data.Maybe               (fromMaybe)
import Data.IxSet               (Indexable(..), IxSet, ixFun, ixSet)
import Data.SafeCopy            (Migrate(..), base, deriveSafeCopy, extension)
import Data.String              (IsString, fromString)
import Data.Text                (Text)
import qualified Data.Text      as Text
import Data.Time                (UTCTime)
import Data.Time.Clock.POSIX    (posixSecondsToUTCTime)
import Data.UUID                (UUID)
import Data.UUID.V5             (generateNamed, namespaceOID)
import Web.Routes               (PathInfo(..), anySegment)
import System.Random            (randomIO)


-- $(deriveSafeCopy 0 'base ''UUID)

instance PathInfo PageId where
    toPathSegments :: PageId -> [Text]
toPathSegments (PageId Integer
i) = Integer -> [Text]
forall url. PathInfo url => url -> [Text]
toPathSegments Integer
i
    fromPathSegments :: URLParser PageId
fromPathSegments = Integer -> PageId
PageId (Integer -> PageId)
-> ParsecT [Text] () Identity Integer -> URLParser PageId
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ParsecT [Text] () Identity Integer
forall url. PathInfo url => URLParser url
fromPathSegments

newtype PageId = PageId { PageId -> Integer
unPageId :: Integer }
    deriving (PageId -> PageId -> Bool
(PageId -> PageId -> Bool)
-> (PageId -> PageId -> Bool) -> Eq PageId
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PageId -> PageId -> Bool
$c/= :: PageId -> PageId -> Bool
== :: PageId -> PageId -> Bool
$c== :: PageId -> PageId -> Bool
Eq, Eq PageId
Eq PageId
-> (PageId -> PageId -> Ordering)
-> (PageId -> PageId -> Bool)
-> (PageId -> PageId -> Bool)
-> (PageId -> PageId -> Bool)
-> (PageId -> PageId -> Bool)
-> (PageId -> PageId -> PageId)
-> (PageId -> PageId -> PageId)
-> Ord PageId
PageId -> PageId -> Bool
PageId -> PageId -> Ordering
PageId -> PageId -> PageId
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: PageId -> PageId -> PageId
$cmin :: PageId -> PageId -> PageId
max :: PageId -> PageId -> PageId
$cmax :: PageId -> PageId -> PageId
>= :: PageId -> PageId -> Bool
$c>= :: PageId -> PageId -> Bool
> :: PageId -> PageId -> Bool
$c> :: PageId -> PageId -> Bool
<= :: PageId -> PageId -> Bool
$c<= :: PageId -> PageId -> Bool
< :: PageId -> PageId -> Bool
$c< :: PageId -> PageId -> Bool
compare :: PageId -> PageId -> Ordering
$ccompare :: PageId -> PageId -> Ordering
$cp1Ord :: Eq PageId
Ord, Int -> PageId -> ShowS
[PageId] -> ShowS
PageId -> String
(Int -> PageId -> ShowS)
-> (PageId -> String) -> ([PageId] -> ShowS) -> Show PageId
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PageId] -> ShowS
$cshowList :: [PageId] -> ShowS
show :: PageId -> String
$cshow :: PageId -> String
showsPrec :: Int -> PageId -> ShowS
$cshowsPrec :: Int -> PageId -> ShowS
Show, ReadPrec [PageId]
ReadPrec PageId
Int -> ReadS PageId
ReadS [PageId]
(Int -> ReadS PageId)
-> ReadS [PageId]
-> ReadPrec PageId
-> ReadPrec [PageId]
-> Read PageId
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PageId]
$creadListPrec :: ReadPrec [PageId]
readPrec :: ReadPrec PageId
$creadPrec :: ReadPrec PageId
readList :: ReadS [PageId]
$creadList :: ReadS [PageId]
readsPrec :: Int -> ReadS PageId
$creadsPrec :: Int -> ReadS PageId
Read, Typeable PageId
DataType
Constr
Typeable PageId
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> PageId -> c PageId)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c PageId)
-> (PageId -> Constr)
-> (PageId -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c PageId))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PageId))
-> ((forall b. Data b => b -> b) -> PageId -> PageId)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> PageId -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> PageId -> r)
-> (forall u. (forall d. Data d => d -> u) -> PageId -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> PageId -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> PageId -> m PageId)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> PageId -> m PageId)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> PageId -> m PageId)
-> Data PageId
PageId -> DataType
PageId -> Constr
(forall b. Data b => b -> b) -> PageId -> PageId
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PageId -> c PageId
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PageId
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> PageId -> u
forall u. (forall d. Data d => d -> u) -> PageId -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PageId -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PageId -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> PageId -> m PageId
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> PageId -> m PageId
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PageId
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PageId -> c PageId
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PageId)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PageId)
$cPageId :: Constr
$tPageId :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> PageId -> m PageId
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> PageId -> m PageId
gmapMp :: (forall d. Data d => d -> m d) -> PageId -> m PageId
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> PageId -> m PageId
gmapM :: (forall d. Data d => d -> m d) -> PageId -> m PageId
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> PageId -> m PageId
gmapQi :: Int -> (forall d. Data d => d -> u) -> PageId -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> PageId -> u
gmapQ :: (forall d. Data d => d -> u) -> PageId -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> PageId -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PageId -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PageId -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PageId -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PageId -> r
gmapT :: (forall b. Data b => b -> b) -> PageId -> PageId
$cgmapT :: (forall b. Data b => b -> b) -> PageId -> PageId
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PageId)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PageId)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c PageId)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PageId)
dataTypeOf :: PageId -> DataType
$cdataTypeOf :: PageId -> DataType
toConstr :: PageId -> Constr
$ctoConstr :: PageId -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PageId
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PageId
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PageId -> c PageId
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PageId -> c PageId
$cp1Data :: Typeable PageId
Data, Typeable)
$(deriveSafeCopy 1 'base ''PageId)

instance ToJSON PageId where
    toJSON :: PageId -> Value
toJSON (PageId Integer
i) = Integer -> Value
forall a. ToJSON a => a -> Value
toJSON Integer
i
instance FromJSON PageId where
    parseJSON :: Value -> Parser PageId
parseJSON Value
n = Integer -> PageId
PageId (Integer -> PageId) -> Parser Integer -> Parser PageId
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser Integer
forall a. FromJSON a => Value -> Parser a
parseJSON Value
n

data PreProcessor_1
    = HsColour_1
    | Markdown_1
      deriving (PreProcessor_1 -> PreProcessor_1 -> Bool
(PreProcessor_1 -> PreProcessor_1 -> Bool)
-> (PreProcessor_1 -> PreProcessor_1 -> Bool) -> Eq PreProcessor_1
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PreProcessor_1 -> PreProcessor_1 -> Bool
$c/= :: PreProcessor_1 -> PreProcessor_1 -> Bool
== :: PreProcessor_1 -> PreProcessor_1 -> Bool
$c== :: PreProcessor_1 -> PreProcessor_1 -> Bool
Eq, Eq PreProcessor_1
Eq PreProcessor_1
-> (PreProcessor_1 -> PreProcessor_1 -> Ordering)
-> (PreProcessor_1 -> PreProcessor_1 -> Bool)
-> (PreProcessor_1 -> PreProcessor_1 -> Bool)
-> (PreProcessor_1 -> PreProcessor_1 -> Bool)
-> (PreProcessor_1 -> PreProcessor_1 -> Bool)
-> (PreProcessor_1 -> PreProcessor_1 -> PreProcessor_1)
-> (PreProcessor_1 -> PreProcessor_1 -> PreProcessor_1)
-> Ord PreProcessor_1
PreProcessor_1 -> PreProcessor_1 -> Bool
PreProcessor_1 -> PreProcessor_1 -> Ordering
PreProcessor_1 -> PreProcessor_1 -> PreProcessor_1
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: PreProcessor_1 -> PreProcessor_1 -> PreProcessor_1
$cmin :: PreProcessor_1 -> PreProcessor_1 -> PreProcessor_1
max :: PreProcessor_1 -> PreProcessor_1 -> PreProcessor_1
$cmax :: PreProcessor_1 -> PreProcessor_1 -> PreProcessor_1
>= :: PreProcessor_1 -> PreProcessor_1 -> Bool
$c>= :: PreProcessor_1 -> PreProcessor_1 -> Bool
> :: PreProcessor_1 -> PreProcessor_1 -> Bool
$c> :: PreProcessor_1 -> PreProcessor_1 -> Bool
<= :: PreProcessor_1 -> PreProcessor_1 -> Bool
$c<= :: PreProcessor_1 -> PreProcessor_1 -> Bool
< :: PreProcessor_1 -> PreProcessor_1 -> Bool
$c< :: PreProcessor_1 -> PreProcessor_1 -> Bool
compare :: PreProcessor_1 -> PreProcessor_1 -> Ordering
$ccompare :: PreProcessor_1 -> PreProcessor_1 -> Ordering
$cp1Ord :: Eq PreProcessor_1
Ord, ReadPrec [PreProcessor_1]
ReadPrec PreProcessor_1
Int -> ReadS PreProcessor_1
ReadS [PreProcessor_1]
(Int -> ReadS PreProcessor_1)
-> ReadS [PreProcessor_1]
-> ReadPrec PreProcessor_1
-> ReadPrec [PreProcessor_1]
-> Read PreProcessor_1
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PreProcessor_1]
$creadListPrec :: ReadPrec [PreProcessor_1]
readPrec :: ReadPrec PreProcessor_1
$creadPrec :: ReadPrec PreProcessor_1
readList :: ReadS [PreProcessor_1]
$creadList :: ReadS [PreProcessor_1]
readsPrec :: Int -> ReadS PreProcessor_1
$creadsPrec :: Int -> ReadS PreProcessor_1
Read, Int -> PreProcessor_1 -> ShowS
[PreProcessor_1] -> ShowS
PreProcessor_1 -> String
(Int -> PreProcessor_1 -> ShowS)
-> (PreProcessor_1 -> String)
-> ([PreProcessor_1] -> ShowS)
-> Show PreProcessor_1
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PreProcessor_1] -> ShowS
$cshowList :: [PreProcessor_1] -> ShowS
show :: PreProcessor_1 -> String
$cshow :: PreProcessor_1 -> String
showsPrec :: Int -> PreProcessor_1 -> ShowS
$cshowsPrec :: Int -> PreProcessor_1 -> ShowS
Show, Typeable PreProcessor_1
DataType
Constr
Typeable PreProcessor_1
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> PreProcessor_1 -> c PreProcessor_1)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c PreProcessor_1)
-> (PreProcessor_1 -> Constr)
-> (PreProcessor_1 -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c PreProcessor_1))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c PreProcessor_1))
-> ((forall b. Data b => b -> b)
    -> PreProcessor_1 -> PreProcessor_1)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> PreProcessor_1 -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> PreProcessor_1 -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> PreProcessor_1 -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> PreProcessor_1 -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> PreProcessor_1 -> m PreProcessor_1)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> PreProcessor_1 -> m PreProcessor_1)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> PreProcessor_1 -> m PreProcessor_1)
-> Data PreProcessor_1
PreProcessor_1 -> DataType
PreProcessor_1 -> Constr
(forall b. Data b => b -> b) -> PreProcessor_1 -> PreProcessor_1
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PreProcessor_1 -> c PreProcessor_1
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PreProcessor_1
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int -> (forall d. Data d => d -> u) -> PreProcessor_1 -> u
forall u. (forall d. Data d => d -> u) -> PreProcessor_1 -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PreProcessor_1 -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PreProcessor_1 -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> PreProcessor_1 -> m PreProcessor_1
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PreProcessor_1 -> m PreProcessor_1
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PreProcessor_1
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PreProcessor_1 -> c PreProcessor_1
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PreProcessor_1)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PreProcessor_1)
$cMarkdown_1 :: Constr
$cHsColour_1 :: Constr
$tPreProcessor_1 :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> PreProcessor_1 -> m PreProcessor_1
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PreProcessor_1 -> m PreProcessor_1
gmapMp :: (forall d. Data d => d -> m d)
-> PreProcessor_1 -> m PreProcessor_1
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PreProcessor_1 -> m PreProcessor_1
gmapM :: (forall d. Data d => d -> m d)
-> PreProcessor_1 -> m PreProcessor_1
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> PreProcessor_1 -> m PreProcessor_1
gmapQi :: Int -> (forall d. Data d => d -> u) -> PreProcessor_1 -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> PreProcessor_1 -> u
gmapQ :: (forall d. Data d => d -> u) -> PreProcessor_1 -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> PreProcessor_1 -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PreProcessor_1 -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PreProcessor_1 -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PreProcessor_1 -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PreProcessor_1 -> r
gmapT :: (forall b. Data b => b -> b) -> PreProcessor_1 -> PreProcessor_1
$cgmapT :: (forall b. Data b => b -> b) -> PreProcessor_1 -> PreProcessor_1
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PreProcessor_1)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PreProcessor_1)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c PreProcessor_1)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PreProcessor_1)
dataTypeOf :: PreProcessor_1 -> DataType
$cdataTypeOf :: PreProcessor_1 -> DataType
toConstr :: PreProcessor_1 -> Constr
$ctoConstr :: PreProcessor_1 -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PreProcessor_1
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PreProcessor_1
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PreProcessor_1 -> c PreProcessor_1
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PreProcessor_1 -> c PreProcessor_1
$cp1Data :: Typeable PreProcessor_1
Data, Typeable)
$(deriveSafeCopy 1 'base ''PreProcessor_1)

data PreProcessor
    = HsColour
    | Markdown
    | Pandoc
      deriving (PreProcessor -> PreProcessor -> Bool
(PreProcessor -> PreProcessor -> Bool)
-> (PreProcessor -> PreProcessor -> Bool) -> Eq PreProcessor
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PreProcessor -> PreProcessor -> Bool
$c/= :: PreProcessor -> PreProcessor -> Bool
== :: PreProcessor -> PreProcessor -> Bool
$c== :: PreProcessor -> PreProcessor -> Bool
Eq, Eq PreProcessor
Eq PreProcessor
-> (PreProcessor -> PreProcessor -> Ordering)
-> (PreProcessor -> PreProcessor -> Bool)
-> (PreProcessor -> PreProcessor -> Bool)
-> (PreProcessor -> PreProcessor -> Bool)
-> (PreProcessor -> PreProcessor -> Bool)
-> (PreProcessor -> PreProcessor -> PreProcessor)
-> (PreProcessor -> PreProcessor -> PreProcessor)
-> Ord PreProcessor
PreProcessor -> PreProcessor -> Bool
PreProcessor -> PreProcessor -> Ordering
PreProcessor -> PreProcessor -> PreProcessor
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: PreProcessor -> PreProcessor -> PreProcessor
$cmin :: PreProcessor -> PreProcessor -> PreProcessor
max :: PreProcessor -> PreProcessor -> PreProcessor
$cmax :: PreProcessor -> PreProcessor -> PreProcessor
>= :: PreProcessor -> PreProcessor -> Bool
$c>= :: PreProcessor -> PreProcessor -> Bool
> :: PreProcessor -> PreProcessor -> Bool
$c> :: PreProcessor -> PreProcessor -> Bool
<= :: PreProcessor -> PreProcessor -> Bool
$c<= :: PreProcessor -> PreProcessor -> Bool
< :: PreProcessor -> PreProcessor -> Bool
$c< :: PreProcessor -> PreProcessor -> Bool
compare :: PreProcessor -> PreProcessor -> Ordering
$ccompare :: PreProcessor -> PreProcessor -> Ordering
$cp1Ord :: Eq PreProcessor
Ord, ReadPrec [PreProcessor]
ReadPrec PreProcessor
Int -> ReadS PreProcessor
ReadS [PreProcessor]
(Int -> ReadS PreProcessor)
-> ReadS [PreProcessor]
-> ReadPrec PreProcessor
-> ReadPrec [PreProcessor]
-> Read PreProcessor
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PreProcessor]
$creadListPrec :: ReadPrec [PreProcessor]
readPrec :: ReadPrec PreProcessor
$creadPrec :: ReadPrec PreProcessor
readList :: ReadS [PreProcessor]
$creadList :: ReadS [PreProcessor]
readsPrec :: Int -> ReadS PreProcessor
$creadsPrec :: Int -> ReadS PreProcessor
Read, Int -> PreProcessor -> ShowS
[PreProcessor] -> ShowS
PreProcessor -> String
(Int -> PreProcessor -> ShowS)
-> (PreProcessor -> String)
-> ([PreProcessor] -> ShowS)
-> Show PreProcessor
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PreProcessor] -> ShowS
$cshowList :: [PreProcessor] -> ShowS
show :: PreProcessor -> String
$cshow :: PreProcessor -> String
showsPrec :: Int -> PreProcessor -> ShowS
$cshowsPrec :: Int -> PreProcessor -> ShowS
Show, Typeable PreProcessor
DataType
Constr
Typeable PreProcessor
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> PreProcessor -> c PreProcessor)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c PreProcessor)
-> (PreProcessor -> Constr)
-> (PreProcessor -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c PreProcessor))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c PreProcessor))
-> ((forall b. Data b => b -> b) -> PreProcessor -> PreProcessor)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> PreProcessor -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> PreProcessor -> r)
-> (forall u. (forall d. Data d => d -> u) -> PreProcessor -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> PreProcessor -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> PreProcessor -> m PreProcessor)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> PreProcessor -> m PreProcessor)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> PreProcessor -> m PreProcessor)
-> Data PreProcessor
PreProcessor -> DataType
PreProcessor -> Constr
(forall b. Data b => b -> b) -> PreProcessor -> PreProcessor
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PreProcessor -> c PreProcessor
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PreProcessor
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> PreProcessor -> u
forall u. (forall d. Data d => d -> u) -> PreProcessor -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PreProcessor -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PreProcessor -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> PreProcessor -> m PreProcessor
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> PreProcessor -> m PreProcessor
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PreProcessor
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PreProcessor -> c PreProcessor
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PreProcessor)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PreProcessor)
$cPandoc :: Constr
$cMarkdown :: Constr
$cHsColour :: Constr
$tPreProcessor :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> PreProcessor -> m PreProcessor
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> PreProcessor -> m PreProcessor
gmapMp :: (forall d. Data d => d -> m d) -> PreProcessor -> m PreProcessor
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> PreProcessor -> m PreProcessor
gmapM :: (forall d. Data d => d -> m d) -> PreProcessor -> m PreProcessor
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> PreProcessor -> m PreProcessor
gmapQi :: Int -> (forall d. Data d => d -> u) -> PreProcessor -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> PreProcessor -> u
gmapQ :: (forall d. Data d => d -> u) -> PreProcessor -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> PreProcessor -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PreProcessor -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PreProcessor -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PreProcessor -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PreProcessor -> r
gmapT :: (forall b. Data b => b -> b) -> PreProcessor -> PreProcessor
$cgmapT :: (forall b. Data b => b -> b) -> PreProcessor -> PreProcessor
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PreProcessor)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PreProcessor)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c PreProcessor)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PreProcessor)
dataTypeOf :: PreProcessor -> DataType
$cdataTypeOf :: PreProcessor -> DataType
toConstr :: PreProcessor -> Constr
$ctoConstr :: PreProcessor -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PreProcessor
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PreProcessor
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PreProcessor -> c PreProcessor
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PreProcessor -> c PreProcessor
$cp1Data :: Typeable PreProcessor
Data, Typeable)
$(deriveSafeCopy 2 'extension ''PreProcessor)

instance Migrate PreProcessor where
    type MigrateFrom PreProcessor = PreProcessor_1
    migrate :: MigrateFrom PreProcessor -> PreProcessor
migrate MigrateFrom PreProcessor
HsColour_1 = PreProcessor
HsColour
    migrate MigrateFrom PreProcessor
Markdown_1 = PreProcessor
Markdown

runPreProcessors :: (MonadIO m) => [PreProcessor] -> Trust -> Text -> m (Either Text Text)
runPreProcessors :: [PreProcessor] -> Trust -> Text -> m (Either Text Text)
runPreProcessors [] Trust
_ Text
txt = Either Text Text -> m (Either Text Text)
forall (m :: * -> *) a. Monad m => a -> m a
return (Text -> Either Text Text
forall a b. b -> Either a b
Right Text
txt)
runPreProcessors (PreProcessor
p:[PreProcessor]
ps) Trust
trust Text
txt =
    do Either Text Text
e <- PreProcessor -> Trust -> Text -> m (Either Text Text)
forall (m :: * -> *).
MonadIO m =>
PreProcessor -> Trust -> Text -> m (Either Text Text)
runPreProcessor PreProcessor
p Trust
trust Text
txt
       case Either Text Text
e of
         (Left Text
e) -> Either Text Text -> m (Either Text Text)
forall (m :: * -> *) a. Monad m => a -> m a
return (Text -> Either Text Text
forall a b. a -> Either a b
Left Text
e)
         (Right Text
txt') -> [PreProcessor] -> Trust -> Text -> m (Either Text Text)
forall (m :: * -> *).
MonadIO m =>
[PreProcessor] -> Trust -> Text -> m (Either Text Text)
runPreProcessors [PreProcessor]
ps Trust
trust Text
txt'

runPreProcessor :: (MonadIO m) => PreProcessor -> Trust -> Text -> m (Either Text Text)
runPreProcessor :: PreProcessor -> Trust -> Text -> m (Either Text Text)
runPreProcessor PreProcessor
pproc Trust
trust Text
txt =
    do let f :: Text -> m (Either Text Text)
f = case PreProcessor
pproc of
                 PreProcessor
Markdown -> Maybe [String] -> Trust -> Text -> m (Either Text Text)
forall (m :: * -> *).
MonadIO m =>
Maybe [String] -> Trust -> Text -> m (Either Text Text)
markdown Maybe [String]
forall a. Maybe a
Nothing Trust
trust
                 PreProcessor
HsColour -> Maybe [String] -> Text -> m (Either Text Text)
forall (m :: * -> *).
MonadIO m =>
Maybe [String] -> Text -> m (Either Text Text)
hscolour Maybe [String]
forall a. Maybe a
Nothing
                 PreProcessor
Pandoc   -> Maybe [String] -> Trust -> Text -> m (Either Text Text)
forall (m :: * -> *).
MonadIO m =>
Maybe [String] -> Trust -> Text -> m (Either Text Text)
pandoc Maybe [String]
forall a. Maybe a
Nothing Trust
trust
       Text -> m (Either Text Text)
f Text
txt

data Markup_001
    = Markup_001 { Markup_001 -> [PreProcessor]
preProcessors_001 :: [PreProcessor]
                 , Markup_001 -> Text
markup_001 :: Text
                 }
      deriving (Markup_001 -> Markup_001 -> Bool
(Markup_001 -> Markup_001 -> Bool)
-> (Markup_001 -> Markup_001 -> Bool) -> Eq Markup_001
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Markup_001 -> Markup_001 -> Bool
$c/= :: Markup_001 -> Markup_001 -> Bool
== :: Markup_001 -> Markup_001 -> Bool
$c== :: Markup_001 -> Markup_001 -> Bool
Eq, Eq Markup_001
Eq Markup_001
-> (Markup_001 -> Markup_001 -> Ordering)
-> (Markup_001 -> Markup_001 -> Bool)
-> (Markup_001 -> Markup_001 -> Bool)
-> (Markup_001 -> Markup_001 -> Bool)
-> (Markup_001 -> Markup_001 -> Bool)
-> (Markup_001 -> Markup_001 -> Markup_001)
-> (Markup_001 -> Markup_001 -> Markup_001)
-> Ord Markup_001
Markup_001 -> Markup_001 -> Bool
Markup_001 -> Markup_001 -> Ordering
Markup_001 -> Markup_001 -> Markup_001
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Markup_001 -> Markup_001 -> Markup_001
$cmin :: Markup_001 -> Markup_001 -> Markup_001
max :: Markup_001 -> Markup_001 -> Markup_001
$cmax :: Markup_001 -> Markup_001 -> Markup_001
>= :: Markup_001 -> Markup_001 -> Bool
$c>= :: Markup_001 -> Markup_001 -> Bool
> :: Markup_001 -> Markup_001 -> Bool
$c> :: Markup_001 -> Markup_001 -> Bool
<= :: Markup_001 -> Markup_001 -> Bool
$c<= :: Markup_001 -> Markup_001 -> Bool
< :: Markup_001 -> Markup_001 -> Bool
$c< :: Markup_001 -> Markup_001 -> Bool
compare :: Markup_001 -> Markup_001 -> Ordering
$ccompare :: Markup_001 -> Markup_001 -> Ordering
$cp1Ord :: Eq Markup_001
Ord, ReadPrec [Markup_001]
ReadPrec Markup_001
Int -> ReadS Markup_001
ReadS [Markup_001]
(Int -> ReadS Markup_001)
-> ReadS [Markup_001]
-> ReadPrec Markup_001
-> ReadPrec [Markup_001]
-> Read Markup_001
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Markup_001]
$creadListPrec :: ReadPrec [Markup_001]
readPrec :: ReadPrec Markup_001
$creadPrec :: ReadPrec Markup_001
readList :: ReadS [Markup_001]
$creadList :: ReadS [Markup_001]
readsPrec :: Int -> ReadS Markup_001
$creadsPrec :: Int -> ReadS Markup_001
Read, Int -> Markup_001 -> ShowS
[Markup_001] -> ShowS
Markup_001 -> String
(Int -> Markup_001 -> ShowS)
-> (Markup_001 -> String)
-> ([Markup_001] -> ShowS)
-> Show Markup_001
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Markup_001] -> ShowS
$cshowList :: [Markup_001] -> ShowS
show :: Markup_001 -> String
$cshow :: Markup_001 -> String
showsPrec :: Int -> Markup_001 -> ShowS
$cshowsPrec :: Int -> Markup_001 -> ShowS
Show, Typeable Markup_001
DataType
Constr
Typeable Markup_001
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Markup_001 -> c Markup_001)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Markup_001)
-> (Markup_001 -> Constr)
-> (Markup_001 -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Markup_001))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c Markup_001))
-> ((forall b. Data b => b -> b) -> Markup_001 -> Markup_001)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Markup_001 -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Markup_001 -> r)
-> (forall u. (forall d. Data d => d -> u) -> Markup_001 -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> Markup_001 -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Markup_001 -> m Markup_001)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Markup_001 -> m Markup_001)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Markup_001 -> m Markup_001)
-> Data Markup_001
Markup_001 -> DataType
Markup_001 -> Constr
(forall b. Data b => b -> b) -> Markup_001 -> Markup_001
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Markup_001 -> c Markup_001
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Markup_001
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Markup_001 -> u
forall u. (forall d. Data d => d -> u) -> Markup_001 -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Markup_001 -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Markup_001 -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Markup_001 -> m Markup_001
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Markup_001 -> m Markup_001
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Markup_001
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Markup_001 -> c Markup_001
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Markup_001)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Markup_001)
$cMarkup_001 :: Constr
$tMarkup_001 :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Markup_001 -> m Markup_001
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Markup_001 -> m Markup_001
gmapMp :: (forall d. Data d => d -> m d) -> Markup_001 -> m Markup_001
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Markup_001 -> m Markup_001
gmapM :: (forall d. Data d => d -> m d) -> Markup_001 -> m Markup_001
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Markup_001 -> m Markup_001
gmapQi :: Int -> (forall d. Data d => d -> u) -> Markup_001 -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Markup_001 -> u
gmapQ :: (forall d. Data d => d -> u) -> Markup_001 -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Markup_001 -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Markup_001 -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Markup_001 -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Markup_001 -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Markup_001 -> r
gmapT :: (forall b. Data b => b -> b) -> Markup_001 -> Markup_001
$cgmapT :: (forall b. Data b => b -> b) -> Markup_001 -> Markup_001
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Markup_001)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Markup_001)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Markup_001)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Markup_001)
dataTypeOf :: Markup_001 -> DataType
$cdataTypeOf :: Markup_001 -> DataType
toConstr :: Markup_001 -> Constr
$ctoConstr :: Markup_001 -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Markup_001
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Markup_001
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Markup_001 -> c Markup_001
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Markup_001 -> c Markup_001
$cp1Data :: Typeable Markup_001
Data, Typeable)
$(deriveSafeCopy 1 'base ''Markup_001)

data Markup
    = Markup { Markup -> [PreProcessor]
preProcessors :: [PreProcessor]
             , Markup -> Text
markup        :: Text
             , Markup -> Trust
trust         :: Trust
             }
      deriving (Markup -> Markup -> Bool
(Markup -> Markup -> Bool)
-> (Markup -> Markup -> Bool) -> Eq Markup
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Markup -> Markup -> Bool
$c/= :: Markup -> Markup -> Bool
== :: Markup -> Markup -> Bool
$c== :: Markup -> Markup -> Bool
Eq, Eq Markup
Eq Markup
-> (Markup -> Markup -> Ordering)
-> (Markup -> Markup -> Bool)
-> (Markup -> Markup -> Bool)
-> (Markup -> Markup -> Bool)
-> (Markup -> Markup -> Bool)
-> (Markup -> Markup -> Markup)
-> (Markup -> Markup -> Markup)
-> Ord Markup
Markup -> Markup -> Bool
Markup -> Markup -> Ordering
Markup -> Markup -> Markup
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Markup -> Markup -> Markup
$cmin :: Markup -> Markup -> Markup
max :: Markup -> Markup -> Markup
$cmax :: Markup -> Markup -> Markup
>= :: Markup -> Markup -> Bool
$c>= :: Markup -> Markup -> Bool
> :: Markup -> Markup -> Bool
$c> :: Markup -> Markup -> Bool
<= :: Markup -> Markup -> Bool
$c<= :: Markup -> Markup -> Bool
< :: Markup -> Markup -> Bool
$c< :: Markup -> Markup -> Bool
compare :: Markup -> Markup -> Ordering
$ccompare :: Markup -> Markup -> Ordering
$cp1Ord :: Eq Markup
Ord, ReadPrec [Markup]
ReadPrec Markup
Int -> ReadS Markup
ReadS [Markup]
(Int -> ReadS Markup)
-> ReadS [Markup]
-> ReadPrec Markup
-> ReadPrec [Markup]
-> Read Markup
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Markup]
$creadListPrec :: ReadPrec [Markup]
readPrec :: ReadPrec Markup
$creadPrec :: ReadPrec Markup
readList :: ReadS [Markup]
$creadList :: ReadS [Markup]
readsPrec :: Int -> ReadS Markup
$creadsPrec :: Int -> ReadS Markup
Read, Int -> Markup -> ShowS
[Markup] -> ShowS
Markup -> String
(Int -> Markup -> ShowS)
-> (Markup -> String) -> ([Markup] -> ShowS) -> Show Markup
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Markup] -> ShowS
$cshowList :: [Markup] -> ShowS
show :: Markup -> String
$cshow :: Markup -> String
showsPrec :: Int -> Markup -> ShowS
$cshowsPrec :: Int -> Markup -> ShowS
Show, Typeable Markup
DataType
Constr
Typeable Markup
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Markup -> c Markup)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Markup)
-> (Markup -> Constr)
-> (Markup -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Markup))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Markup))
-> ((forall b. Data b => b -> b) -> Markup -> Markup)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Markup -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Markup -> r)
-> (forall u. (forall d. Data d => d -> u) -> Markup -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Markup -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Markup -> m Markup)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Markup -> m Markup)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Markup -> m Markup)
-> Data Markup
Markup -> DataType
Markup -> Constr
(forall b. Data b => b -> b) -> Markup -> Markup
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Markup -> c Markup
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Markup
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Markup -> u
forall u. (forall d. Data d => d -> u) -> Markup -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Markup -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Markup -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Markup -> m Markup
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Markup -> m Markup
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Markup
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Markup -> c Markup
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Markup)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Markup)
$cMarkup :: Constr
$tMarkup :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Markup -> m Markup
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Markup -> m Markup
gmapMp :: (forall d. Data d => d -> m d) -> Markup -> m Markup
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Markup -> m Markup
gmapM :: (forall d. Data d => d -> m d) -> Markup -> m Markup
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Markup -> m Markup
gmapQi :: Int -> (forall d. Data d => d -> u) -> Markup -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Markup -> u
gmapQ :: (forall d. Data d => d -> u) -> Markup -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Markup -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Markup -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Markup -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Markup -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Markup -> r
gmapT :: (forall b. Data b => b -> b) -> Markup -> Markup
$cgmapT :: (forall b. Data b => b -> b) -> Markup -> Markup
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Markup)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Markup)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Markup)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Markup)
dataTypeOf :: Markup -> DataType
$cdataTypeOf :: Markup -> DataType
toConstr :: Markup -> Constr
$ctoConstr :: Markup -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Markup
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Markup
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Markup -> c Markup
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Markup -> c Markup
$cp1Data :: Typeable Markup
Data, Typeable)
$(deriveSafeCopy 2 'extension ''Markup)

instance Migrate Markup where
    type MigrateFrom Markup = Markup_001
    migrate :: MigrateFrom Markup -> Markup
migrate (Markup_001 pp mu) = [PreProcessor] -> Text -> Trust -> Markup
Markup [PreProcessor]
pp Text
mu Trust
Trusted

data PublishStatus
    = Draft
    | Revoked
    | Published
    | Scheduled
      deriving (PublishStatus -> PublishStatus -> Bool
(PublishStatus -> PublishStatus -> Bool)
-> (PublishStatus -> PublishStatus -> Bool) -> Eq PublishStatus
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PublishStatus -> PublishStatus -> Bool
$c/= :: PublishStatus -> PublishStatus -> Bool
== :: PublishStatus -> PublishStatus -> Bool
$c== :: PublishStatus -> PublishStatus -> Bool
Eq, Eq PublishStatus
Eq PublishStatus
-> (PublishStatus -> PublishStatus -> Ordering)
-> (PublishStatus -> PublishStatus -> Bool)
-> (PublishStatus -> PublishStatus -> Bool)
-> (PublishStatus -> PublishStatus -> Bool)
-> (PublishStatus -> PublishStatus -> Bool)
-> (PublishStatus -> PublishStatus -> PublishStatus)
-> (PublishStatus -> PublishStatus -> PublishStatus)
-> Ord PublishStatus
PublishStatus -> PublishStatus -> Bool
PublishStatus -> PublishStatus -> Ordering
PublishStatus -> PublishStatus -> PublishStatus
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: PublishStatus -> PublishStatus -> PublishStatus
$cmin :: PublishStatus -> PublishStatus -> PublishStatus
max :: PublishStatus -> PublishStatus -> PublishStatus
$cmax :: PublishStatus -> PublishStatus -> PublishStatus
>= :: PublishStatus -> PublishStatus -> Bool
$c>= :: PublishStatus -> PublishStatus -> Bool
> :: PublishStatus -> PublishStatus -> Bool
$c> :: PublishStatus -> PublishStatus -> Bool
<= :: PublishStatus -> PublishStatus -> Bool
$c<= :: PublishStatus -> PublishStatus -> Bool
< :: PublishStatus -> PublishStatus -> Bool
$c< :: PublishStatus -> PublishStatus -> Bool
compare :: PublishStatus -> PublishStatus -> Ordering
$ccompare :: PublishStatus -> PublishStatus -> Ordering
$cp1Ord :: Eq PublishStatus
Ord, ReadPrec [PublishStatus]
ReadPrec PublishStatus
Int -> ReadS PublishStatus
ReadS [PublishStatus]
(Int -> ReadS PublishStatus)
-> ReadS [PublishStatus]
-> ReadPrec PublishStatus
-> ReadPrec [PublishStatus]
-> Read PublishStatus
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PublishStatus]
$creadListPrec :: ReadPrec [PublishStatus]
readPrec :: ReadPrec PublishStatus
$creadPrec :: ReadPrec PublishStatus
readList :: ReadS [PublishStatus]
$creadList :: ReadS [PublishStatus]
readsPrec :: Int -> ReadS PublishStatus
$creadsPrec :: Int -> ReadS PublishStatus
Read, Int -> PublishStatus -> ShowS
[PublishStatus] -> ShowS
PublishStatus -> String
(Int -> PublishStatus -> ShowS)
-> (PublishStatus -> String)
-> ([PublishStatus] -> ShowS)
-> Show PublishStatus
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PublishStatus] -> ShowS
$cshowList :: [PublishStatus] -> ShowS
show :: PublishStatus -> String
$cshow :: PublishStatus -> String
showsPrec :: Int -> PublishStatus -> ShowS
$cshowsPrec :: Int -> PublishStatus -> ShowS
Show, Typeable PublishStatus
DataType
Constr
Typeable PublishStatus
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> PublishStatus -> c PublishStatus)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c PublishStatus)
-> (PublishStatus -> Constr)
-> (PublishStatus -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c PublishStatus))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c PublishStatus))
-> ((forall b. Data b => b -> b) -> PublishStatus -> PublishStatus)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> PublishStatus -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> PublishStatus -> r)
-> (forall u. (forall d. Data d => d -> u) -> PublishStatus -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> PublishStatus -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> PublishStatus -> m PublishStatus)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> PublishStatus -> m PublishStatus)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> PublishStatus -> m PublishStatus)
-> Data PublishStatus
PublishStatus -> DataType
PublishStatus -> Constr
(forall b. Data b => b -> b) -> PublishStatus -> PublishStatus
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PublishStatus -> c PublishStatus
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PublishStatus
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> PublishStatus -> u
forall u. (forall d. Data d => d -> u) -> PublishStatus -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PublishStatus -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PublishStatus -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> PublishStatus -> m PublishStatus
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> PublishStatus -> m PublishStatus
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PublishStatus
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PublishStatus -> c PublishStatus
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PublishStatus)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PublishStatus)
$cScheduled :: Constr
$cPublished :: Constr
$cRevoked :: Constr
$cDraft :: Constr
$tPublishStatus :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> PublishStatus -> m PublishStatus
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> PublishStatus -> m PublishStatus
gmapMp :: (forall d. Data d => d -> m d) -> PublishStatus -> m PublishStatus
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> PublishStatus -> m PublishStatus
gmapM :: (forall d. Data d => d -> m d) -> PublishStatus -> m PublishStatus
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> PublishStatus -> m PublishStatus
gmapQi :: Int -> (forall d. Data d => d -> u) -> PublishStatus -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> PublishStatus -> u
gmapQ :: (forall d. Data d => d -> u) -> PublishStatus -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> PublishStatus -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PublishStatus -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PublishStatus -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PublishStatus -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PublishStatus -> r
gmapT :: (forall b. Data b => b -> b) -> PublishStatus -> PublishStatus
$cgmapT :: (forall b. Data b => b -> b) -> PublishStatus -> PublishStatus
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PublishStatus)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c PublishStatus)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c PublishStatus)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PublishStatus)
dataTypeOf :: PublishStatus -> DataType
$cdataTypeOf :: PublishStatus -> DataType
toConstr :: PublishStatus -> Constr
$ctoConstr :: PublishStatus -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PublishStatus
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PublishStatus
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PublishStatus -> c PublishStatus
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PublishStatus -> c PublishStatus
$cp1Data :: Typeable PublishStatus
Data, Typeable)
$(deriveSafeCopy 1 'base ''PublishStatus)

publishStatusString :: PublishStatus -> String
publishStatusString :: PublishStatus -> String
publishStatusString PublishStatus
Draft     = String
"draft"
publishStatusString PublishStatus
Revoked   = String
"revoked"
publishStatusString PublishStatus
Published = String
"published"
publishStatusString PublishStatus
Scheduled = String
"scheduled"


data PageKind
    = PlainPage
    | Post
      deriving (PageKind -> PageKind -> Bool
(PageKind -> PageKind -> Bool)
-> (PageKind -> PageKind -> Bool) -> Eq PageKind
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PageKind -> PageKind -> Bool
$c/= :: PageKind -> PageKind -> Bool
== :: PageKind -> PageKind -> Bool
$c== :: PageKind -> PageKind -> Bool
Eq, Eq PageKind
Eq PageKind
-> (PageKind -> PageKind -> Ordering)
-> (PageKind -> PageKind -> Bool)
-> (PageKind -> PageKind -> Bool)
-> (PageKind -> PageKind -> Bool)
-> (PageKind -> PageKind -> Bool)
-> (PageKind -> PageKind -> PageKind)
-> (PageKind -> PageKind -> PageKind)
-> Ord PageKind
PageKind -> PageKind -> Bool
PageKind -> PageKind -> Ordering
PageKind -> PageKind -> PageKind
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: PageKind -> PageKind -> PageKind
$cmin :: PageKind -> PageKind -> PageKind
max :: PageKind -> PageKind -> PageKind
$cmax :: PageKind -> PageKind -> PageKind
>= :: PageKind -> PageKind -> Bool
$c>= :: PageKind -> PageKind -> Bool
> :: PageKind -> PageKind -> Bool
$c> :: PageKind -> PageKind -> Bool
<= :: PageKind -> PageKind -> Bool
$c<= :: PageKind -> PageKind -> Bool
< :: PageKind -> PageKind -> Bool
$c< :: PageKind -> PageKind -> Bool
compare :: PageKind -> PageKind -> Ordering
$ccompare :: PageKind -> PageKind -> Ordering
$cp1Ord :: Eq PageKind
Ord, ReadPrec [PageKind]
ReadPrec PageKind
Int -> ReadS PageKind
ReadS [PageKind]
(Int -> ReadS PageKind)
-> ReadS [PageKind]
-> ReadPrec PageKind
-> ReadPrec [PageKind]
-> Read PageKind
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PageKind]
$creadListPrec :: ReadPrec [PageKind]
readPrec :: ReadPrec PageKind
$creadPrec :: ReadPrec PageKind
readList :: ReadS [PageKind]
$creadList :: ReadS [PageKind]
readsPrec :: Int -> ReadS PageKind
$creadsPrec :: Int -> ReadS PageKind
Read, Int -> PageKind -> ShowS
[PageKind] -> ShowS
PageKind -> String
(Int -> PageKind -> ShowS)
-> (PageKind -> String) -> ([PageKind] -> ShowS) -> Show PageKind
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PageKind] -> ShowS
$cshowList :: [PageKind] -> ShowS
show :: PageKind -> String
$cshow :: PageKind -> String
showsPrec :: Int -> PageKind -> ShowS
$cshowsPrec :: Int -> PageKind -> ShowS
Show, Typeable PageKind
DataType
Constr
Typeable PageKind
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> PageKind -> c PageKind)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c PageKind)
-> (PageKind -> Constr)
-> (PageKind -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c PageKind))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PageKind))
-> ((forall b. Data b => b -> b) -> PageKind -> PageKind)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> PageKind -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> PageKind -> r)
-> (forall u. (forall d. Data d => d -> u) -> PageKind -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> PageKind -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> PageKind -> m PageKind)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> PageKind -> m PageKind)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> PageKind -> m PageKind)
-> Data PageKind
PageKind -> DataType
PageKind -> Constr
(forall b. Data b => b -> b) -> PageKind -> PageKind
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PageKind -> c PageKind
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PageKind
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> PageKind -> u
forall u. (forall d. Data d => d -> u) -> PageKind -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PageKind -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PageKind -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> PageKind -> m PageKind
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> PageKind -> m PageKind
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PageKind
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PageKind -> c PageKind
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PageKind)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PageKind)
$cPost :: Constr
$cPlainPage :: Constr
$tPageKind :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> PageKind -> m PageKind
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> PageKind -> m PageKind
gmapMp :: (forall d. Data d => d -> m d) -> PageKind -> m PageKind
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> PageKind -> m PageKind
gmapM :: (forall d. Data d => d -> m d) -> PageKind -> m PageKind
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> PageKind -> m PageKind
gmapQi :: Int -> (forall d. Data d => d -> u) -> PageKind -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> PageKind -> u
gmapQ :: (forall d. Data d => d -> u) -> PageKind -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> PageKind -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PageKind -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PageKind -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PageKind -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PageKind -> r
gmapT :: (forall b. Data b => b -> b) -> PageKind -> PageKind
$cgmapT :: (forall b. Data b => b -> b) -> PageKind -> PageKind
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PageKind)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PageKind)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c PageKind)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c PageKind)
dataTypeOf :: PageKind -> DataType
$cdataTypeOf :: PageKind -> DataType
toConstr :: PageKind -> Constr
$ctoConstr :: PageKind -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PageKind
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c PageKind
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PageKind -> c PageKind
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> PageKind -> c PageKind
$cp1Data :: Typeable PageKind
Data, Typeable)
$(deriveSafeCopy 1 'base ''PageKind)

data Page_001
    = Page_001 { Page_001 -> PageId
pageId_001        :: PageId
               , Page_001 -> Text
pageTitle_001     :: Text
               , Page_001 -> Markup
pageSrc_001       :: Markup
               , Page_001 -> Maybe Markup
pageExcerpt_001   :: Maybe Markup
               , Page_001 -> Maybe UTCTime
pageDate_001      :: Maybe UTCTime
               , Page_001 -> PublishStatus
pageStatus_001    :: PublishStatus
               , Page_001 -> PageKind
pageKind_001      :: PageKind
               }
      deriving (Page_001 -> Page_001 -> Bool
(Page_001 -> Page_001 -> Bool)
-> (Page_001 -> Page_001 -> Bool) -> Eq Page_001
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Page_001 -> Page_001 -> Bool
$c/= :: Page_001 -> Page_001 -> Bool
== :: Page_001 -> Page_001 -> Bool
$c== :: Page_001 -> Page_001 -> Bool
Eq, Eq Page_001
Eq Page_001
-> (Page_001 -> Page_001 -> Ordering)
-> (Page_001 -> Page_001 -> Bool)
-> (Page_001 -> Page_001 -> Bool)
-> (Page_001 -> Page_001 -> Bool)
-> (Page_001 -> Page_001 -> Bool)
-> (Page_001 -> Page_001 -> Page_001)
-> (Page_001 -> Page_001 -> Page_001)
-> Ord Page_001
Page_001 -> Page_001 -> Bool
Page_001 -> Page_001 -> Ordering
Page_001 -> Page_001 -> Page_001
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Page_001 -> Page_001 -> Page_001
$cmin :: Page_001 -> Page_001 -> Page_001
max :: Page_001 -> Page_001 -> Page_001
$cmax :: Page_001 -> Page_001 -> Page_001
>= :: Page_001 -> Page_001 -> Bool
$c>= :: Page_001 -> Page_001 -> Bool
> :: Page_001 -> Page_001 -> Bool
$c> :: Page_001 -> Page_001 -> Bool
<= :: Page_001 -> Page_001 -> Bool
$c<= :: Page_001 -> Page_001 -> Bool
< :: Page_001 -> Page_001 -> Bool
$c< :: Page_001 -> Page_001 -> Bool
compare :: Page_001 -> Page_001 -> Ordering
$ccompare :: Page_001 -> Page_001 -> Ordering
$cp1Ord :: Eq Page_001
Ord, ReadPrec [Page_001]
ReadPrec Page_001
Int -> ReadS Page_001
ReadS [Page_001]
(Int -> ReadS Page_001)
-> ReadS [Page_001]
-> ReadPrec Page_001
-> ReadPrec [Page_001]
-> Read Page_001
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Page_001]
$creadListPrec :: ReadPrec [Page_001]
readPrec :: ReadPrec Page_001
$creadPrec :: ReadPrec Page_001
readList :: ReadS [Page_001]
$creadList :: ReadS [Page_001]
readsPrec :: Int -> ReadS Page_001
$creadsPrec :: Int -> ReadS Page_001
Read, Int -> Page_001 -> ShowS
[Page_001] -> ShowS
Page_001 -> String
(Int -> Page_001 -> ShowS)
-> (Page_001 -> String) -> ([Page_001] -> ShowS) -> Show Page_001
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Page_001] -> ShowS
$cshowList :: [Page_001] -> ShowS
show :: Page_001 -> String
$cshow :: Page_001 -> String
showsPrec :: Int -> Page_001 -> ShowS
$cshowsPrec :: Int -> Page_001 -> ShowS
Show, Typeable Page_001
DataType
Constr
Typeable Page_001
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Page_001 -> c Page_001)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Page_001)
-> (Page_001 -> Constr)
-> (Page_001 -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Page_001))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Page_001))
-> ((forall b. Data b => b -> b) -> Page_001 -> Page_001)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Page_001 -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Page_001 -> r)
-> (forall u. (forall d. Data d => d -> u) -> Page_001 -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Page_001 -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Page_001 -> m Page_001)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Page_001 -> m Page_001)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Page_001 -> m Page_001)
-> Data Page_001
Page_001 -> DataType
Page_001 -> Constr
(forall b. Data b => b -> b) -> Page_001 -> Page_001
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Page_001 -> c Page_001
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Page_001
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Page_001 -> u
forall u. (forall d. Data d => d -> u) -> Page_001 -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Page_001 -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Page_001 -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Page_001 -> m Page_001
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Page_001 -> m Page_001
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Page_001
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Page_001 -> c Page_001
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Page_001)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Page_001)
$cPage_001 :: Constr
$tPage_001 :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Page_001 -> m Page_001
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Page_001 -> m Page_001
gmapMp :: (forall d. Data d => d -> m d) -> Page_001 -> m Page_001
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Page_001 -> m Page_001
gmapM :: (forall d. Data d => d -> m d) -> Page_001 -> m Page_001
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Page_001 -> m Page_001
gmapQi :: Int -> (forall d. Data d => d -> u) -> Page_001 -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Page_001 -> u
gmapQ :: (forall d. Data d => d -> u) -> Page_001 -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Page_001 -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Page_001 -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Page_001 -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Page_001 -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Page_001 -> r
gmapT :: (forall b. Data b => b -> b) -> Page_001 -> Page_001
$cgmapT :: (forall b. Data b => b -> b) -> Page_001 -> Page_001
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Page_001)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Page_001)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Page_001)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Page_001)
dataTypeOf :: Page_001 -> DataType
$cdataTypeOf :: Page_001 -> DataType
toConstr :: Page_001 -> Constr
$ctoConstr :: Page_001 -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Page_001
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Page_001
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Page_001 -> c Page_001
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Page_001 -> c Page_001
$cp1Data :: Typeable Page_001
Data, Typeable)
$(deriveSafeCopy 1 'base ''Page_001)

data Page_002
    = Page_002 { Page_002 -> PageId
pageId_002        :: PageId
               , Page_002 -> UserId
pageAuthor_002    :: UserId
               , Page_002 -> Text
pageTitle_002     :: Text
               , Page_002 -> Markup
pageSrc_002       :: Markup
               , Page_002 -> Maybe Markup
pageExcerpt_002   :: Maybe Markup
               , Page_002 -> UTCTime
pageDate_002      :: UTCTime
               , Page_002 -> UTCTime
pageUpdated_002   :: UTCTime
               , Page_002 -> PublishStatus
pageStatus_002    :: PublishStatus
               , Page_002 -> PageKind
pageKind_002      :: PageKind
               , Page_002 -> UUID
pageUUID_002      :: UUID
               }
      deriving (Page_002 -> Page_002 -> Bool
(Page_002 -> Page_002 -> Bool)
-> (Page_002 -> Page_002 -> Bool) -> Eq Page_002
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Page_002 -> Page_002 -> Bool
$c/= :: Page_002 -> Page_002 -> Bool
== :: Page_002 -> Page_002 -> Bool
$c== :: Page_002 -> Page_002 -> Bool
Eq, Eq Page_002
Eq Page_002
-> (Page_002 -> Page_002 -> Ordering)
-> (Page_002 -> Page_002 -> Bool)
-> (Page_002 -> Page_002 -> Bool)
-> (Page_002 -> Page_002 -> Bool)
-> (Page_002 -> Page_002 -> Bool)
-> (Page_002 -> Page_002 -> Page_002)
-> (Page_002 -> Page_002 -> Page_002)
-> Ord Page_002
Page_002 -> Page_002 -> Bool
Page_002 -> Page_002 -> Ordering
Page_002 -> Page_002 -> Page_002
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Page_002 -> Page_002 -> Page_002
$cmin :: Page_002 -> Page_002 -> Page_002
max :: Page_002 -> Page_002 -> Page_002
$cmax :: Page_002 -> Page_002 -> Page_002
>= :: Page_002 -> Page_002 -> Bool
$c>= :: Page_002 -> Page_002 -> Bool
> :: Page_002 -> Page_002 -> Bool
$c> :: Page_002 -> Page_002 -> Bool
<= :: Page_002 -> Page_002 -> Bool
$c<= :: Page_002 -> Page_002 -> Bool
< :: Page_002 -> Page_002 -> Bool
$c< :: Page_002 -> Page_002 -> Bool
compare :: Page_002 -> Page_002 -> Ordering
$ccompare :: Page_002 -> Page_002 -> Ordering
$cp1Ord :: Eq Page_002
Ord, ReadPrec [Page_002]
ReadPrec Page_002
Int -> ReadS Page_002
ReadS [Page_002]
(Int -> ReadS Page_002)
-> ReadS [Page_002]
-> ReadPrec Page_002
-> ReadPrec [Page_002]
-> Read Page_002
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Page_002]
$creadListPrec :: ReadPrec [Page_002]
readPrec :: ReadPrec Page_002
$creadPrec :: ReadPrec Page_002
readList :: ReadS [Page_002]
$creadList :: ReadS [Page_002]
readsPrec :: Int -> ReadS Page_002
$creadsPrec :: Int -> ReadS Page_002
Read, Int -> Page_002 -> ShowS
[Page_002] -> ShowS
Page_002 -> String
(Int -> Page_002 -> ShowS)
-> (Page_002 -> String) -> ([Page_002] -> ShowS) -> Show Page_002
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Page_002] -> ShowS
$cshowList :: [Page_002] -> ShowS
show :: Page_002 -> String
$cshow :: Page_002 -> String
showsPrec :: Int -> Page_002 -> ShowS
$cshowsPrec :: Int -> Page_002 -> ShowS
Show, Typeable Page_002
DataType
Constr
Typeable Page_002
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Page_002 -> c Page_002)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Page_002)
-> (Page_002 -> Constr)
-> (Page_002 -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Page_002))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Page_002))
-> ((forall b. Data b => b -> b) -> Page_002 -> Page_002)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Page_002 -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Page_002 -> r)
-> (forall u. (forall d. Data d => d -> u) -> Page_002 -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Page_002 -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Page_002 -> m Page_002)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Page_002 -> m Page_002)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Page_002 -> m Page_002)
-> Data Page_002
Page_002 -> DataType
Page_002 -> Constr
(forall b. Data b => b -> b) -> Page_002 -> Page_002
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Page_002 -> c Page_002
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Page_002
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Page_002 -> u
forall u. (forall d. Data d => d -> u) -> Page_002 -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Page_002 -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Page_002 -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Page_002 -> m Page_002
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Page_002 -> m Page_002
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Page_002
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Page_002 -> c Page_002
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Page_002)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Page_002)
$cPage_002 :: Constr
$tPage_002 :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Page_002 -> m Page_002
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Page_002 -> m Page_002
gmapMp :: (forall d. Data d => d -> m d) -> Page_002 -> m Page_002
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Page_002 -> m Page_002
gmapM :: (forall d. Data d => d -> m d) -> Page_002 -> m Page_002
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Page_002 -> m Page_002
gmapQi :: Int -> (forall d. Data d => d -> u) -> Page_002 -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Page_002 -> u
gmapQ :: (forall d. Data d => d -> u) -> Page_002 -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Page_002 -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Page_002 -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Page_002 -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Page_002 -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Page_002 -> r
gmapT :: (forall b. Data b => b -> b) -> Page_002 -> Page_002
$cgmapT :: (forall b. Data b => b -> b) -> Page_002 -> Page_002
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Page_002)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Page_002)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Page_002)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Page_002)
dataTypeOf :: Page_002 -> DataType
$cdataTypeOf :: Page_002 -> DataType
toConstr :: Page_002 -> Constr
$ctoConstr :: Page_002 -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Page_002
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Page_002
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Page_002 -> c Page_002
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Page_002 -> c Page_002
$cp1Data :: Typeable Page_002
Data, Typeable)
$(deriveSafeCopy 2 'extension ''Page_002)

instance Migrate Page_002 where
    type MigrateFrom Page_002 = Page_001
    migrate :: MigrateFrom Page_002 -> Page_002
migrate (Page_001 pi pt ps pe pd pst pk) =
        (PageId
-> UserId
-> Text
-> Markup
-> Maybe Markup
-> UTCTime
-> UTCTime
-> PublishStatus
-> PageKind
-> UUID
-> Page_002
Page_002 PageId
pi (Integer -> UserId
UserId Integer
1) Text
pt Markup
ps Maybe Markup
pe (UTCTime -> Maybe UTCTime -> UTCTime
forall a. a -> Maybe a -> a
fromMaybe UTCTime
epoch Maybe UTCTime
pd) (UTCTime -> Maybe UTCTime -> UTCTime
forall a. a -> Maybe a -> a
fromMaybe UTCTime
epoch Maybe UTCTime
pd) PublishStatus
pst PageKind
pk (UUID -> Page_002) -> UUID -> Page_002
forall a b. (a -> b) -> a -> b
$ UUID -> [Word8] -> UUID
generateNamed UUID
namespaceOID ((Char -> Word8) -> String -> [Word8]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> Word8
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Word8) -> (Char -> Int) -> Char -> Word8
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char -> Int
ord) (PageId -> String
forall a. Show a => a -> String
show PageId
pi String -> ShowS
forall a. [a] -> [a] -> [a]
++ Markup -> String
forall a. Show a => a -> String
show Markup
ps)))
            where
              epoch :: UTCTime
epoch = POSIXTime -> UTCTime
posixSecondsToUTCTime POSIXTime
0

newtype Slug = Slug { Slug -> Text
unSlug :: Text }
    deriving (Slug -> Slug -> Bool
(Slug -> Slug -> Bool) -> (Slug -> Slug -> Bool) -> Eq Slug
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Slug -> Slug -> Bool
$c/= :: Slug -> Slug -> Bool
== :: Slug -> Slug -> Bool
$c== :: Slug -> Slug -> Bool
Eq, Eq Slug
Eq Slug
-> (Slug -> Slug -> Ordering)
-> (Slug -> Slug -> Bool)
-> (Slug -> Slug -> Bool)
-> (Slug -> Slug -> Bool)
-> (Slug -> Slug -> Bool)
-> (Slug -> Slug -> Slug)
-> (Slug -> Slug -> Slug)
-> Ord Slug
Slug -> Slug -> Bool
Slug -> Slug -> Ordering
Slug -> Slug -> Slug
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Slug -> Slug -> Slug
$cmin :: Slug -> Slug -> Slug
max :: Slug -> Slug -> Slug
$cmax :: Slug -> Slug -> Slug
>= :: Slug -> Slug -> Bool
$c>= :: Slug -> Slug -> Bool
> :: Slug -> Slug -> Bool
$c> :: Slug -> Slug -> Bool
<= :: Slug -> Slug -> Bool
$c<= :: Slug -> Slug -> Bool
< :: Slug -> Slug -> Bool
$c< :: Slug -> Slug -> Bool
compare :: Slug -> Slug -> Ordering
$ccompare :: Slug -> Slug -> Ordering
$cp1Ord :: Eq Slug
Ord, Typeable Slug
DataType
Constr
Typeable Slug
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Slug -> c Slug)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Slug)
-> (Slug -> Constr)
-> (Slug -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Slug))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Slug))
-> ((forall b. Data b => b -> b) -> Slug -> Slug)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Slug -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Slug -> r)
-> (forall u. (forall d. Data d => d -> u) -> Slug -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Slug -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Slug -> m Slug)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Slug -> m Slug)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Slug -> m Slug)
-> Data Slug
Slug -> DataType
Slug -> Constr
(forall b. Data b => b -> b) -> Slug -> Slug
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Slug -> c Slug
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Slug
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Slug -> u
forall u. (forall d. Data d => d -> u) -> Slug -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Slug -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Slug -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Slug -> m Slug
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Slug -> m Slug
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Slug
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Slug -> c Slug
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Slug)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Slug)
$cSlug :: Constr
$tSlug :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Slug -> m Slug
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Slug -> m Slug
gmapMp :: (forall d. Data d => d -> m d) -> Slug -> m Slug
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Slug -> m Slug
gmapM :: (forall d. Data d => d -> m d) -> Slug -> m Slug
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Slug -> m Slug
gmapQi :: Int -> (forall d. Data d => d -> u) -> Slug -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Slug -> u
gmapQ :: (forall d. Data d => d -> u) -> Slug -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Slug -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Slug -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Slug -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Slug -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Slug -> r
gmapT :: (forall b. Data b => b -> b) -> Slug -> Slug
$cgmapT :: (forall b. Data b => b -> b) -> Slug -> Slug
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Slug)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Slug)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Slug)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Slug)
dataTypeOf :: Slug -> DataType
$cdataTypeOf :: Slug -> DataType
toConstr :: Slug -> Constr
$ctoConstr :: Slug -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Slug
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Slug
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Slug -> c Slug
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Slug -> c Slug
$cp1Data :: Typeable Slug
Data, Typeable, ReadPrec [Slug]
ReadPrec Slug
Int -> ReadS Slug
ReadS [Slug]
(Int -> ReadS Slug)
-> ReadS [Slug] -> ReadPrec Slug -> ReadPrec [Slug] -> Read Slug
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Slug]
$creadListPrec :: ReadPrec [Slug]
readPrec :: ReadPrec Slug
$creadPrec :: ReadPrec Slug
readList :: ReadS [Slug]
$creadList :: ReadS [Slug]
readsPrec :: Int -> ReadS Slug
$creadsPrec :: Int -> ReadS Slug
Read, Int -> Slug -> ShowS
[Slug] -> ShowS
Slug -> String
(Int -> Slug -> ShowS)
-> (Slug -> String) -> ([Slug] -> ShowS) -> Show Slug
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Slug] -> ShowS
$cshowList :: [Slug] -> ShowS
show :: Slug -> String
$cshow :: Slug -> String
showsPrec :: Int -> Slug -> ShowS
$cshowsPrec :: Int -> Slug -> ShowS
Show)
$(deriveSafeCopy 0 'base ''Slug)

instance PathInfo Slug where
    toPathSegments :: Slug -> [Text]
toPathSegments (Slug Text
txt) = [Text
txt]
    fromPathSegments :: URLParser Slug
fromPathSegments = Text -> Slug
Slug (Text -> Slug) -> ParsecT [Text] () Identity Text -> URLParser Slug
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ParsecT [Text] () Identity Text
anySegment

-- NOTE: this instance will cause faulty behavior if the Maybe Slug is not at the end of the URL
instance PathInfo (Maybe Slug) where
    toPathSegments :: Maybe Slug -> [Text]
toPathSegments (Just Slug
slug) = Slug -> [Text]
forall url. PathInfo url => url -> [Text]
toPathSegments Slug
slug
    fromPathSegments :: URLParser (Maybe Slug)
fromPathSegments = URLParser Slug -> URLParser (Maybe Slug)
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional (URLParser Slug -> URLParser (Maybe Slug))
-> URLParser Slug -> URLParser (Maybe Slug)
forall a b. (a -> b) -> a -> b
$ URLParser Slug
forall url. PathInfo url => URLParser url
fromPathSegments

slugify :: Text -> Slug
slugify :: Text -> Slug
slugify Text
txt = Text -> Slug
Slug (Text -> Slug) -> Text -> Slug
forall a b. (a -> b) -> a -> b
$ (Char -> Bool) -> Text -> Text
Text.dropWhileEnd (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
==Char
'-') (Text -> Text) -> Text -> Text
forall a b. (a -> b) -> a -> b
$ (Char -> Char) -> Text -> Text
Text.map (\Char
c -> if Char -> Bool
isAlphaNum Char
c then (Char -> Char
toLower Char
c) else Char
'-') Text
txt

toSlug :: Text -> Maybe Slug -> Slug
toSlug :: Text -> Maybe Slug -> Slug
toSlug Text
txt Maybe Slug
slug = Slug -> Maybe Slug -> Slug
forall a. a -> Maybe a -> a
fromMaybe (Text -> Slug
slugify Text
txt) Maybe Slug
slug



data Page_3 = Page_3
    { Page_3 -> PageId
pageId_3        :: PageId
    , Page_3 -> UserId
pageAuthor_3    :: UserId
    , Page_3 -> Text
pageTitle_3     :: Text
    , Page_3 -> Maybe Slug
pageSlug_3      :: Maybe Slug
    , Page_3 -> Markup
pageSrc_3       :: Markup
    , Page_3 -> Maybe Markup
pageExcerpt_3   :: Maybe Markup
    , Page_3 -> UTCTime
pageDate_3      :: UTCTime
    , Page_3 -> UTCTime
pageUpdated_3   :: UTCTime
    , Page_3 -> PublishStatus
pageStatus_3    :: PublishStatus
    , Page_3 -> PageKind
pageKind_3      :: PageKind
    , Page_3 -> UUID
pageUUID_3      :: UUID
    }
    deriving (Page_3 -> Page_3 -> Bool
(Page_3 -> Page_3 -> Bool)
-> (Page_3 -> Page_3 -> Bool) -> Eq Page_3
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Page_3 -> Page_3 -> Bool
$c/= :: Page_3 -> Page_3 -> Bool
== :: Page_3 -> Page_3 -> Bool
$c== :: Page_3 -> Page_3 -> Bool
Eq, Eq Page_3
Eq Page_3
-> (Page_3 -> Page_3 -> Ordering)
-> (Page_3 -> Page_3 -> Bool)
-> (Page_3 -> Page_3 -> Bool)
-> (Page_3 -> Page_3 -> Bool)
-> (Page_3 -> Page_3 -> Bool)
-> (Page_3 -> Page_3 -> Page_3)
-> (Page_3 -> Page_3 -> Page_3)
-> Ord Page_3
Page_3 -> Page_3 -> Bool
Page_3 -> Page_3 -> Ordering
Page_3 -> Page_3 -> Page_3
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Page_3 -> Page_3 -> Page_3
$cmin :: Page_3 -> Page_3 -> Page_3
max :: Page_3 -> Page_3 -> Page_3
$cmax :: Page_3 -> Page_3 -> Page_3
>= :: Page_3 -> Page_3 -> Bool
$c>= :: Page_3 -> Page_3 -> Bool
> :: Page_3 -> Page_3 -> Bool
$c> :: Page_3 -> Page_3 -> Bool
<= :: Page_3 -> Page_3 -> Bool
$c<= :: Page_3 -> Page_3 -> Bool
< :: Page_3 -> Page_3 -> Bool
$c< :: Page_3 -> Page_3 -> Bool
compare :: Page_3 -> Page_3 -> Ordering
$ccompare :: Page_3 -> Page_3 -> Ordering
$cp1Ord :: Eq Page_3
Ord, ReadPrec [Page_3]
ReadPrec Page_3
Int -> ReadS Page_3
ReadS [Page_3]
(Int -> ReadS Page_3)
-> ReadS [Page_3]
-> ReadPrec Page_3
-> ReadPrec [Page_3]
-> Read Page_3
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Page_3]
$creadListPrec :: ReadPrec [Page_3]
readPrec :: ReadPrec Page_3
$creadPrec :: ReadPrec Page_3
readList :: ReadS [Page_3]
$creadList :: ReadS [Page_3]
readsPrec :: Int -> ReadS Page_3
$creadsPrec :: Int -> ReadS Page_3
Read, Int -> Page_3 -> ShowS
[Page_3] -> ShowS
Page_3 -> String
(Int -> Page_3 -> ShowS)
-> (Page_3 -> String) -> ([Page_3] -> ShowS) -> Show Page_3
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Page_3] -> ShowS
$cshowList :: [Page_3] -> ShowS
show :: Page_3 -> String
$cshow :: Page_3 -> String
showsPrec :: Int -> Page_3 -> ShowS
$cshowsPrec :: Int -> Page_3 -> ShowS
Show, Typeable Page_3
DataType
Constr
Typeable Page_3
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Page_3 -> c Page_3)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Page_3)
-> (Page_3 -> Constr)
-> (Page_3 -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Page_3))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Page_3))
-> ((forall b. Data b => b -> b) -> Page_3 -> Page_3)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Page_3 -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Page_3 -> r)
-> (forall u. (forall d. Data d => d -> u) -> Page_3 -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Page_3 -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Page_3 -> m Page_3)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Page_3 -> m Page_3)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Page_3 -> m Page_3)
-> Data Page_3
Page_3 -> DataType
Page_3 -> Constr
(forall b. Data b => b -> b) -> Page_3 -> Page_3
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Page_3 -> c Page_3
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Page_3
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Page_3 -> u
forall u. (forall d. Data d => d -> u) -> Page_3 -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Page_3 -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Page_3 -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Page_3 -> m Page_3
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Page_3 -> m Page_3
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Page_3
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Page_3 -> c Page_3
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Page_3)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Page_3)
$cPage_3 :: Constr
$tPage_3 :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Page_3 -> m Page_3
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Page_3 -> m Page_3
gmapMp :: (forall d. Data d => d -> m d) -> Page_3 -> m Page_3
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Page_3 -> m Page_3
gmapM :: (forall d. Data d => d -> m d) -> Page_3 -> m Page_3
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Page_3 -> m Page_3
gmapQi :: Int -> (forall d. Data d => d -> u) -> Page_3 -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Page_3 -> u
gmapQ :: (forall d. Data d => d -> u) -> Page_3 -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Page_3 -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Page_3 -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Page_3 -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Page_3 -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Page_3 -> r
gmapT :: (forall b. Data b => b -> b) -> Page_3 -> Page_3
$cgmapT :: (forall b. Data b => b -> b) -> Page_3 -> Page_3
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Page_3)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Page_3)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Page_3)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Page_3)
dataTypeOf :: Page_3 -> DataType
$cdataTypeOf :: Page_3 -> DataType
toConstr :: Page_3 -> Constr
$ctoConstr :: Page_3 -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Page_3
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Page_3
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Page_3 -> c Page_3
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Page_3 -> c Page_3
$cp1Data :: Typeable Page_3
Data, Typeable)
$(deriveSafeCopy 3 'extension ''Page_3)

instance Migrate Page_3 where
    type MigrateFrom Page_3 = Page_002
    migrate :: MigrateFrom Page_3 -> Page_3
migrate (Page_002 pi pa pt ps pe pd pu pst pk puu) =
        (PageId
-> UserId
-> Text
-> Maybe Slug
-> Markup
-> Maybe Markup
-> UTCTime
-> UTCTime
-> PublishStatus
-> PageKind
-> UUID
-> Page_3
Page_3 PageId
pi UserId
pa Text
pt Maybe Slug
forall a. Maybe a
Nothing Markup
ps Maybe Markup
pe UTCTime
pd UTCTime
pu PublishStatus
pst PageKind
pk UUID
puu)

data Page
    = Page { Page -> PageId
pageId           :: PageId
           , Page -> UserId
pageAuthor       :: UserId
           , Page -> Text
pageTitle        :: Text
           , Page -> Maybe Slug
pageSlug         :: Maybe Slug
           , Page -> Markup
pageSrc          :: Markup
           , Page -> Maybe Markup
pageExcerpt      :: Maybe Markup
           , Page -> UTCTime
pageDate         :: UTCTime
           , Page -> UTCTime
pageUpdated      :: UTCTime
           , Page -> PublishStatus
pageStatus       :: PublishStatus
           , Page -> PageKind
pageKind         :: PageKind
           , Page -> UUID
pageUUID         :: UUID
           , Page -> ThemeStyleId
pageThemeStyleId :: ThemeStyleId
           }
      deriving (Page -> Page -> Bool
(Page -> Page -> Bool) -> (Page -> Page -> Bool) -> Eq Page
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Page -> Page -> Bool
$c/= :: Page -> Page -> Bool
== :: Page -> Page -> Bool
$c== :: Page -> Page -> Bool
Eq, Eq Page
Eq Page
-> (Page -> Page -> Ordering)
-> (Page -> Page -> Bool)
-> (Page -> Page -> Bool)
-> (Page -> Page -> Bool)
-> (Page -> Page -> Bool)
-> (Page -> Page -> Page)
-> (Page -> Page -> Page)
-> Ord Page
Page -> Page -> Bool
Page -> Page -> Ordering
Page -> Page -> Page
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Page -> Page -> Page
$cmin :: Page -> Page -> Page
max :: Page -> Page -> Page
$cmax :: Page -> Page -> Page
>= :: Page -> Page -> Bool
$c>= :: Page -> Page -> Bool
> :: Page -> Page -> Bool
$c> :: Page -> Page -> Bool
<= :: Page -> Page -> Bool
$c<= :: Page -> Page -> Bool
< :: Page -> Page -> Bool
$c< :: Page -> Page -> Bool
compare :: Page -> Page -> Ordering
$ccompare :: Page -> Page -> Ordering
$cp1Ord :: Eq Page
Ord, ReadPrec [Page]
ReadPrec Page
Int -> ReadS Page
ReadS [Page]
(Int -> ReadS Page)
-> ReadS [Page] -> ReadPrec Page -> ReadPrec [Page] -> Read Page
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Page]
$creadListPrec :: ReadPrec [Page]
readPrec :: ReadPrec Page
$creadPrec :: ReadPrec Page
readList :: ReadS [Page]
$creadList :: ReadS [Page]
readsPrec :: Int -> ReadS Page
$creadsPrec :: Int -> ReadS Page
Read, Int -> Page -> ShowS
[Page] -> ShowS
Page -> String
(Int -> Page -> ShowS)
-> (Page -> String) -> ([Page] -> ShowS) -> Show Page
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Page] -> ShowS
$cshowList :: [Page] -> ShowS
show :: Page -> String
$cshow :: Page -> String
showsPrec :: Int -> Page -> ShowS
$cshowsPrec :: Int -> Page -> ShowS
Show, Typeable Page
DataType
Constr
Typeable Page
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Page -> c Page)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Page)
-> (Page -> Constr)
-> (Page -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Page))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Page))
-> ((forall b. Data b => b -> b) -> Page -> Page)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Page -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Page -> r)
-> (forall u. (forall d. Data d => d -> u) -> Page -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Page -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Page -> m Page)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Page -> m Page)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Page -> m Page)
-> Data Page
Page -> DataType
Page -> Constr
(forall b. Data b => b -> b) -> Page -> Page
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Page -> c Page
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Page
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Page -> u
forall u. (forall d. Data d => d -> u) -> Page -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Page -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Page -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Page -> m Page
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Page -> m Page
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Page
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Page -> c Page
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Page)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Page)
$cPage :: Constr
$tPage :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> Page -> m Page
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Page -> m Page
gmapMp :: (forall d. Data d => d -> m d) -> Page -> m Page
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Page -> m Page
gmapM :: (forall d. Data d => d -> m d) -> Page -> m Page
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Page -> m Page
gmapQi :: Int -> (forall d. Data d => d -> u) -> Page -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Page -> u
gmapQ :: (forall d. Data d => d -> u) -> Page -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Page -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Page -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Page -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Page -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Page -> r
gmapT :: (forall b. Data b => b -> b) -> Page -> Page
$cgmapT :: (forall b. Data b => b -> b) -> Page -> Page
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Page)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Page)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Page)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Page)
dataTypeOf :: Page -> DataType
$cdataTypeOf :: Page -> DataType
toConstr :: Page -> Constr
$ctoConstr :: Page -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Page
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Page
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Page -> c Page
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Page -> c Page
$cp1Data :: Typeable Page
Data, Typeable)
$(deriveSafeCopy 4 'extension ''Page)

-- migration added for clckwrks-plugin-page-0.3.0 on 2013-12-26
instance Migrate Page where
    type MigrateFrom Page = Page_3
    migrate :: MigrateFrom Page -> Page
migrate (Page_3 pi pa pt psl ps pe pd pu pst pk puu) =
        (PageId
-> UserId
-> Text
-> Maybe Slug
-> Markup
-> Maybe Markup
-> UTCTime
-> UTCTime
-> PublishStatus
-> PageKind
-> UUID
-> ThemeStyleId
-> Page
Page PageId
pi UserId
pa Text
pt Maybe Slug
psl Markup
ps Maybe Markup
pe UTCTime
pd UTCTime
pu PublishStatus
pst PageKind
pk UUID
puu (Int -> ThemeStyleId
ThemeStyleId Int
0))

instance Indexable Page where
    empty :: IxSet Page
empty = [Ix Page] -> IxSet Page
forall a. [Ix a] -> IxSet a
ixSet [ (Page -> [PageId]) -> Ix Page
forall a b. (Ord b, Typeable b) => (a -> [b]) -> Ix a
ixFun ((PageId -> [PageId] -> [PageId]
forall a. a -> [a] -> [a]
:[]) (PageId -> [PageId]) -> (Page -> PageId) -> Page -> [PageId]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Page -> PageId
pageId)
                  , (Page -> [UTCTime]) -> Ix Page
forall a b. (Ord b, Typeable b) => (a -> [b]) -> Ix a
ixFun ((UTCTime -> [UTCTime] -> [UTCTime]
forall a. a -> [a] -> [a]
:[]) (UTCTime -> [UTCTime]) -> (Page -> UTCTime) -> Page -> [UTCTime]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Page -> UTCTime
pageDate)
                  , (Page -> [PageKind]) -> Ix Page
forall a b. (Ord b, Typeable b) => (a -> [b]) -> Ix a
ixFun ((PageKind -> [PageKind] -> [PageKind]
forall a. a -> [a] -> [a]
:[]) (PageKind -> [PageKind])
-> (Page -> PageKind) -> Page -> [PageKind]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Page -> PageKind
pageKind)
                  , (Page -> [UTCTime]) -> Ix Page
forall a b. (Ord b, Typeable b) => (a -> [b]) -> Ix a
ixFun ((UTCTime -> [UTCTime] -> [UTCTime]
forall a. a -> [a] -> [a]
:[]) (UTCTime -> [UTCTime]) -> (Page -> UTCTime) -> Page -> [UTCTime]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Page -> UTCTime
pageDate)
                  , (Page -> [PublishStatus]) -> Ix Page
forall a b. (Ord b, Typeable b) => (a -> [b]) -> Ix a
ixFun ((PublishStatus -> [PublishStatus] -> [PublishStatus]
forall a. a -> [a] -> [a]
:[]) (PublishStatus -> [PublishStatus])
-> (Page -> PublishStatus) -> Page -> [PublishStatus]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Page -> PublishStatus
pageStatus)
                  ]

type Pages = IxSet Page

data FeedConfig = FeedConfig
    { FeedConfig -> UUID
feedUUID       :: UUID -- ^ UUID which identifies this feed. Should probably never change
--    , feedCategory :: Set Text
    , FeedConfig -> Text
feedTitle      :: Text
    , FeedConfig -> Text
feedLink       :: Text
    , FeedConfig -> Text
feedAuthorName :: Text
    }
    deriving (FeedConfig -> FeedConfig -> Bool
(FeedConfig -> FeedConfig -> Bool)
-> (FeedConfig -> FeedConfig -> Bool) -> Eq FeedConfig
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: FeedConfig -> FeedConfig -> Bool
$c/= :: FeedConfig -> FeedConfig -> Bool
== :: FeedConfig -> FeedConfig -> Bool
$c== :: FeedConfig -> FeedConfig -> Bool
Eq, Eq FeedConfig
Eq FeedConfig
-> (FeedConfig -> FeedConfig -> Ordering)
-> (FeedConfig -> FeedConfig -> Bool)
-> (FeedConfig -> FeedConfig -> Bool)
-> (FeedConfig -> FeedConfig -> Bool)
-> (FeedConfig -> FeedConfig -> Bool)
-> (FeedConfig -> FeedConfig -> FeedConfig)
-> (FeedConfig -> FeedConfig -> FeedConfig)
-> Ord FeedConfig
FeedConfig -> FeedConfig -> Bool
FeedConfig -> FeedConfig -> Ordering
FeedConfig -> FeedConfig -> FeedConfig
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: FeedConfig -> FeedConfig -> FeedConfig
$cmin :: FeedConfig -> FeedConfig -> FeedConfig
max :: FeedConfig -> FeedConfig -> FeedConfig
$cmax :: FeedConfig -> FeedConfig -> FeedConfig
>= :: FeedConfig -> FeedConfig -> Bool
$c>= :: FeedConfig -> FeedConfig -> Bool
> :: FeedConfig -> FeedConfig -> Bool
$c> :: FeedConfig -> FeedConfig -> Bool
<= :: FeedConfig -> FeedConfig -> Bool
$c<= :: FeedConfig -> FeedConfig -> Bool
< :: FeedConfig -> FeedConfig -> Bool
$c< :: FeedConfig -> FeedConfig -> Bool
compare :: FeedConfig -> FeedConfig -> Ordering
$ccompare :: FeedConfig -> FeedConfig -> Ordering
$cp1Ord :: Eq FeedConfig
Ord, ReadPrec [FeedConfig]
ReadPrec FeedConfig
Int -> ReadS FeedConfig
ReadS [FeedConfig]
(Int -> ReadS FeedConfig)
-> ReadS [FeedConfig]
-> ReadPrec FeedConfig
-> ReadPrec [FeedConfig]
-> Read FeedConfig
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [FeedConfig]
$creadListPrec :: ReadPrec [FeedConfig]
readPrec :: ReadPrec FeedConfig
$creadPrec :: ReadPrec FeedConfig
readList :: ReadS [FeedConfig]
$creadList :: ReadS [FeedConfig]
readsPrec :: Int -> ReadS FeedConfig
$creadsPrec :: Int -> ReadS FeedConfig
Read, Int -> FeedConfig -> ShowS
[FeedConfig] -> ShowS
FeedConfig -> String
(Int -> FeedConfig -> ShowS)
-> (FeedConfig -> String)
-> ([FeedConfig] -> ShowS)
-> Show FeedConfig
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [FeedConfig] -> ShowS
$cshowList :: [FeedConfig] -> ShowS
show :: FeedConfig -> String
$cshow :: FeedConfig -> String
showsPrec :: Int -> FeedConfig -> ShowS
$cshowsPrec :: Int -> FeedConfig -> ShowS
Show, Typeable FeedConfig
DataType
Constr
Typeable FeedConfig
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> FeedConfig -> c FeedConfig)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c FeedConfig)
-> (FeedConfig -> Constr)
-> (FeedConfig -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c FeedConfig))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c FeedConfig))
-> ((forall b. Data b => b -> b) -> FeedConfig -> FeedConfig)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> FeedConfig -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> FeedConfig -> r)
-> (forall u. (forall d. Data d => d -> u) -> FeedConfig -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> FeedConfig -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> FeedConfig -> m FeedConfig)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> FeedConfig -> m FeedConfig)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> FeedConfig -> m FeedConfig)
-> Data FeedConfig
FeedConfig -> DataType
FeedConfig -> Constr
(forall b. Data b => b -> b) -> FeedConfig -> FeedConfig
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> FeedConfig -> c FeedConfig
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c FeedConfig
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> FeedConfig -> u
forall u. (forall d. Data d => d -> u) -> FeedConfig -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> FeedConfig -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> FeedConfig -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> FeedConfig -> m FeedConfig
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> FeedConfig -> m FeedConfig
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c FeedConfig
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> FeedConfig -> c FeedConfig
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c FeedConfig)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FeedConfig)
$cFeedConfig :: Constr
$tFeedConfig :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> FeedConfig -> m FeedConfig
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> FeedConfig -> m FeedConfig
gmapMp :: (forall d. Data d => d -> m d) -> FeedConfig -> m FeedConfig
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> FeedConfig -> m FeedConfig
gmapM :: (forall d. Data d => d -> m d) -> FeedConfig -> m FeedConfig
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> FeedConfig -> m FeedConfig
gmapQi :: Int -> (forall d. Data d => d -> u) -> FeedConfig -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> FeedConfig -> u
gmapQ :: (forall d. Data d => d -> u) -> FeedConfig -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> FeedConfig -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> FeedConfig -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> FeedConfig -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> FeedConfig -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> FeedConfig -> r
gmapT :: (forall b. Data b => b -> b) -> FeedConfig -> FeedConfig
$cgmapT :: (forall b. Data b => b -> b) -> FeedConfig -> FeedConfig
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FeedConfig)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FeedConfig)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c FeedConfig)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c FeedConfig)
dataTypeOf :: FeedConfig -> DataType
$cdataTypeOf :: FeedConfig -> DataType
toConstr :: FeedConfig -> Constr
$ctoConstr :: FeedConfig -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c FeedConfig
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c FeedConfig
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> FeedConfig -> c FeedConfig
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> FeedConfig -> c FeedConfig
$cp1Data :: Typeable FeedConfig
Data, Typeable)
$(deriveSafeCopy 0 'base ''FeedConfig)

initialFeedConfig :: IO FeedConfig
initialFeedConfig :: IO FeedConfig
initialFeedConfig =
    do UUID
uuid <- IO UUID
forall a (m :: * -> *). (Random a, MonadIO m) => m a
randomIO
       FeedConfig -> IO FeedConfig
forall (m :: * -> *) a. Monad m => a -> m a
return (FeedConfig -> IO FeedConfig) -> FeedConfig -> IO FeedConfig
forall a b. (a -> b) -> a -> b
$ FeedConfig :: UUID -> Text -> Text -> Text -> FeedConfig
FeedConfig { feedUUID :: UUID
feedUUID       = UUID
uuid
                           , feedTitle :: Text
feedTitle      = String -> Text
forall a. IsString a => String -> a
fromString String
"Untitled Feed"
                           , feedLink :: Text
feedLink       = String -> Text
forall a. IsString a => String -> a
fromString String
""
                           , feedAuthorName :: Text
feedAuthorName = String -> Text
forall a. IsString a => String -> a
fromString String
"Anonymous"
                           }