pro-abstract-0.3.0.0: library/pro-abstract/ProAbstract/Tagless/CanHaveTaglessContent.hs
module ProAbstract.Tagless.CanHaveTaglessContent
( CanHaveTaglessContent (..)
) where
import ProAbstract.Content
import ProAbstract.Structure
import ProAbstract.Tagless.CanBeTagless
import ProAbstract.Tagless.KindOfText
class CanHaveTaglessContent a where
taglessContent :: KindOfText t -> AffineFold a t
instance CanHaveTaglessContent (Block ann) where
taglessContent s =
(tagged % taglessContent @(BlockTag ann) s) `afailing`
(bare % tagless @(Paragraph ann) s)
instance CanHaveTaglessContent (BlockTag ann) where
taglessContent s =
(plain % taglessContent @(TaggedPlainBlock ann) s) `afailing`
(fork % taglessContent @(TaggedBlocks ann) s)
instance CanHaveTaglessContent (BlockTagContent ann) where
taglessContent = tagless
instance CanHaveTaglessContent (Inline ann) where
taglessContent s =
(plain % tagless s) `afailing`
(fork % taglessContent s)
instance CanHaveTaglessContent (Lines ann) where
taglessContent = tagless
instance CanHaveTaglessContent (Blocks ann) where
taglessContent = tagless
instance CanHaveTaglessContent (Line ann) where
taglessContent = tagless
instance CanHaveTaglessContent (Fragment ann) where
taglessContent = tagless
instance CanHaveTaglessContent (TaggedBlocks ann) where
taglessContent s = content % tagless s
instance CanHaveTaglessContent (TaggedPlainBlock ann) where
taglessContent s = content % tagless s
instance CanHaveTaglessContent (TaggedLines ann) where
taglessContent s = content % tagless s
instance CanHaveTaglessContent (Document ann) where
taglessContent s = content % tagless s