module ProAbstract.Structure.BlockTagContent
    ( BlockTagContent (..)
    ) where

import ProAbstract.Annotation
import ProAbstract.Metadata
import ProAbstract.Structure.Block
import ProAbstract.Structure.CanBePlain
import ProAbstract.Structure.CanFork
import ProAbstract.Structure.Fork
import ProAbstract.Structure.HasManyParagraphs
import ProAbstract.Structure.HasManyPlainBlocks
import ProAbstract.Structure.HasManyPlainInlines
import ProAbstract.Structure.Plain
import ProAbstract.Structure.PlainBlock
import ProAbstract.Tag

data BlockTagContent ann =
    BlockTagContent_Fork  (Blocks ann)     -- ^ 'ProAbstract.fork'
  | BlockTagContent_Plain (PlainBlock ann) -- ^ 'ProAbstract.plain'
  deriving stock (BlockTagContent ann -> BlockTagContent ann -> Bool
(BlockTagContent ann -> BlockTagContent ann -> Bool)
-> (BlockTagContent ann -> BlockTagContent ann -> Bool)
-> Eq (BlockTagContent ann)
forall ann.
Eq ann =>
BlockTagContent ann -> BlockTagContent ann -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BlockTagContent ann -> BlockTagContent ann -> Bool
$c/= :: forall ann.
Eq ann =>
BlockTagContent ann -> BlockTagContent ann -> Bool
== :: BlockTagContent ann -> BlockTagContent ann -> Bool
$c== :: forall ann.
Eq ann =>
BlockTagContent ann -> BlockTagContent ann -> Bool
Eq, Int -> BlockTagContent ann -> ShowS
[BlockTagContent ann] -> ShowS
BlockTagContent ann -> String
(Int -> BlockTagContent ann -> ShowS)
-> (BlockTagContent ann -> String)
-> ([BlockTagContent ann] -> ShowS)
-> Show (BlockTagContent ann)
forall ann. Show ann => Int -> BlockTagContent ann -> ShowS
forall ann. Show ann => [BlockTagContent ann] -> ShowS
forall ann. Show ann => BlockTagContent ann -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BlockTagContent ann] -> ShowS
$cshowList :: forall ann. Show ann => [BlockTagContent ann] -> ShowS
show :: BlockTagContent ann -> String
$cshow :: forall ann. Show ann => BlockTagContent ann -> String
showsPrec :: Int -> BlockTagContent ann -> ShowS
$cshowsPrec :: forall ann. Show ann => Int -> BlockTagContent ann -> ShowS
Show, (forall x. BlockTagContent ann -> Rep (BlockTagContent ann) x)
-> (forall x. Rep (BlockTagContent ann) x -> BlockTagContent ann)
-> Generic (BlockTagContent ann)
forall x. Rep (BlockTagContent ann) x -> BlockTagContent ann
forall x. BlockTagContent ann -> Rep (BlockTagContent ann) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall ann x. Rep (BlockTagContent ann) x -> BlockTagContent ann
forall ann x. BlockTagContent ann -> Rep (BlockTagContent ann) x
$cto :: forall ann x. Rep (BlockTagContent ann) x -> BlockTagContent ann
$cfrom :: forall ann x. BlockTagContent ann -> Rep (BlockTagContent ann) x
Generic)
  deriving anyclass (Eq (BlockTagContent ann)
Eq (BlockTagContent ann)
-> (Int -> BlockTagContent ann -> Int)
-> (BlockTagContent ann -> Int)
-> Hashable (BlockTagContent ann)
Int -> BlockTagContent ann -> Int
BlockTagContent ann -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
forall ann. Hashable ann => Eq (BlockTagContent ann)
forall ann. Hashable ann => Int -> BlockTagContent ann -> Int
forall ann. Hashable ann => BlockTagContent ann -> Int
hash :: BlockTagContent ann -> Int
$chash :: forall ann. Hashable ann => BlockTagContent ann -> Int
hashWithSalt :: Int -> BlockTagContent ann -> Int
$chashWithSalt :: forall ann. Hashable ann => Int -> BlockTagContent ann -> Int
$cp1Hashable :: forall ann. Hashable ann => Eq (BlockTagContent ann)
Hashable, BlockTagContent ann -> ()
(BlockTagContent ann -> ()) -> NFData (BlockTagContent ann)
forall ann. NFData ann => BlockTagContent ann -> ()
forall a. (a -> ()) -> NFData a
rnf :: BlockTagContent ann -> ()
$crnf :: forall ann. NFData ann => BlockTagContent ann -> ()
NFData)

type instance Annotation (BlockTagContent ann) = ann

type instance Plain (BlockTagContent ann) = PlainBlock ann

type instance Fork (BlockTagContent ann) = Blocks ann

instance CanBePlain (BlockTagContent ann) where
    plain :: Prism' (BlockTagContent ann) (Plain (BlockTagContent ann))
plain = (PlainBlock ann -> BlockTagContent ann)
-> (BlockTagContent ann -> Maybe (PlainBlock ann))
-> Prism
     (BlockTagContent ann)
     (BlockTagContent ann)
     (PlainBlock ann)
     (PlainBlock ann)
forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
prism' PlainBlock ann -> BlockTagContent ann
forall ann. PlainBlock ann -> BlockTagContent ann
BlockTagContent_Plain \case
        BlockTagContent_Plain PlainBlock ann
x -> PlainBlock ann -> Maybe (PlainBlock ann)
forall a. a -> Maybe a
Just PlainBlock ann
x; BlockTagContent ann
_ -> Maybe (PlainBlock ann)
forall a. Maybe a
Nothing

instance CanFork (BlockTagContent ann) where
    fork :: Prism' (BlockTagContent ann) (Fork (BlockTagContent ann))
fork = (Blocks ann -> BlockTagContent ann)
-> (BlockTagContent ann -> Maybe (Blocks ann))
-> Prism
     (BlockTagContent ann)
     (BlockTagContent ann)
     (Blocks ann)
     (Blocks ann)
forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
prism' Blocks ann -> BlockTagContent ann
forall ann. Blocks ann -> BlockTagContent ann
BlockTagContent_Fork \case
        BlockTagContent_Fork Blocks ann
x -> Blocks ann -> Maybe (Blocks ann)
forall a. a -> Maybe a
Just Blocks ann
x; BlockTagContent ann
_ -> Maybe (Blocks ann)
forall a. Maybe a
Nothing

instance HasManyPlainBlocks (BlockTagContent ann) where
    allPlainBlocks :: Traversal'
  (BlockTagContent ann)
  (TaggedPlainBlock (Annotation (BlockTagContent ann)))
allPlainBlocks = Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
forall x. CanFork x => Prism' x (Fork x)
fork Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
-> Optic
     A_Traversal
     NoIx
     (Blocks ann)
     (Blocks ann)
     (TaggedPlainBlock ann)
     (TaggedPlainBlock ann)
-> Optic
     A_Traversal
     NoIx
     (BlockTagContent ann)
     (BlockTagContent ann)
     (TaggedPlainBlock ann)
     (TaggedPlainBlock ann)
forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a
       b.
(JoinKinds k l m, AppendIndices is js ks) =>
Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b
% Optic
  A_Traversal
  NoIx
  (Blocks ann)
  (Blocks ann)
  (TaggedPlainBlock ann)
  (TaggedPlainBlock ann)
forall x.
HasManyPlainBlocks x =>
Traversal' x (TaggedPlainBlock (Annotation x))
allPlainBlocks

instance HasManyPlainInlines (BlockTagContent ann) where
    allPlainInlines :: Traversal'
  (BlockTagContent ann) (Fragment (Annotation (BlockTagContent ann)))
allPlainInlines = Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
forall x. CanFork x => Prism' x (Fork x)
fork Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
-> Optic
     A_Traversal
     NoIx
     (Blocks ann)
     (Blocks ann)
     (Fragment ann)
     (Fragment ann)
-> Optic
     A_Traversal
     NoIx
     (BlockTagContent ann)
     (BlockTagContent ann)
     (Fragment ann)
     (Fragment ann)
forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a
       b.
(JoinKinds k l m, AppendIndices is js ks) =>
Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b
% Optic
  A_Traversal
  NoIx
  (Blocks ann)
  (Blocks ann)
  (Fragment ann)
  (Fragment ann)
forall x.
HasManyPlainInlines x =>
Traversal' x (Fragment (Annotation x))
allPlainInlines

instance HasManyAnnotations (BlockTagContent ann) (BlockTagContent ann') where
    allAnnotations :: Traversal
  (BlockTagContent ann)
  (BlockTagContent ann')
  (Annotation (BlockTagContent ann))
  (Annotation (BlockTagContent ann'))
allAnnotations = TraversalVL (BlockTagContent ann) (BlockTagContent ann') ann ann'
-> Traversal (BlockTagContent ann) (BlockTagContent ann') ann ann'
forall s t a b. TraversalVL s t a b -> Traversal s t a b
traversalVL \ann -> f ann'
f -> \case
        BlockTagContent_Fork x -> Blocks ann' -> BlockTagContent ann'
forall ann. Blocks ann -> BlockTagContent ann
BlockTagContent_Fork (Blocks ann' -> BlockTagContent ann')
-> f (Blocks ann') -> f (BlockTagContent ann')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Optic A_Traversal NoIx (Blocks ann) (Blocks ann') ann ann'
-> (ann -> f ann') -> Blocks ann -> f (Blocks ann')
forall k (f :: * -> *) (is :: IxList) s t a b.
(Is k A_Traversal, Applicative f) =>
Optic k is s t a b -> (a -> f b) -> s -> f t
traverseOf Optic A_Traversal NoIx (Blocks ann) (Blocks ann') ann ann'
forall x x'.
HasManyAnnotations x x' =>
Traversal x x' (Annotation x) (Annotation x')
allAnnotations ann -> f ann'
f Blocks ann
x
        BlockTagContent_Plain x -> PlainBlock ann' -> BlockTagContent ann'
forall ann. PlainBlock ann -> BlockTagContent ann
BlockTagContent_Plain (PlainBlock ann' -> BlockTagContent ann')
-> f (PlainBlock ann') -> f (BlockTagContent ann')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Optic A_Traversal NoIx (PlainBlock ann) (PlainBlock ann') ann ann'
-> (ann -> f ann') -> PlainBlock ann -> f (PlainBlock ann')
forall k (f :: * -> *) (is :: IxList) s t a b.
(Is k A_Traversal, Applicative f) =>
Optic k is s t a b -> (a -> f b) -> s -> f t
traverseOf Optic A_Traversal NoIx (PlainBlock ann) (PlainBlock ann') ann ann'
forall x x'.
HasManyAnnotations x x' =>
Traversal x x' (Annotation x) (Annotation x')
allAnnotations ann -> f ann'
f PlainBlock ann
x

instance HasManyMetadata (BlockTagContent ann) where
    allMetadata :: Traversal' (BlockTagContent ann) Metadata
allMetadata = Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
forall x. CanFork x => Prism' x (Fork x)
fork Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
-> Optic
     A_Traversal NoIx (Blocks ann) (Blocks ann) Metadata Metadata
-> Traversal' (BlockTagContent ann) Metadata
forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a
       b.
(JoinKinds k l m, AppendIndices is js ks) =>
Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b
% Optic A_Traversal NoIx (Blocks ann) (Blocks ann) Metadata Metadata
forall x. HasManyMetadata x => Traversal' x Metadata
allMetadata

instance HasManyTags (BlockTagContent ann) where
    allTags :: Traversal'
  (BlockTagContent ann) (Tag (Annotation (BlockTagContent ann)))
allTags = Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
forall x. CanFork x => Prism' x (Fork x)
fork Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
-> Optic
     A_Traversal NoIx (Blocks ann) (Blocks ann) (Tag ann) (Tag ann)
-> Optic
     A_Traversal
     NoIx
     (BlockTagContent ann)
     (BlockTagContent ann)
     (Tag ann)
     (Tag ann)
forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a
       b.
(JoinKinds k l m, AppendIndices is js ks) =>
Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b
% Optic
  A_Traversal NoIx (Blocks ann) (Blocks ann) (Tag ann) (Tag ann)
forall x. HasManyTags x => Traversal' x (Tag (Annotation x))
allTags
    allInlineTags :: Traversal'
  (BlockTagContent ann) (Tag (Annotation (BlockTagContent ann)))
allInlineTags = Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
forall x. CanFork x => Prism' x (Fork x)
fork Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
-> Optic
     A_Traversal NoIx (Blocks ann) (Blocks ann) (Tag ann) (Tag ann)
-> Optic
     A_Traversal
     NoIx
     (BlockTagContent ann)
     (BlockTagContent ann)
     (Tag ann)
     (Tag ann)
forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a
       b.
(JoinKinds k l m, AppendIndices is js ks) =>
Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b
% Optic
  A_Traversal NoIx (Blocks ann) (Blocks ann) (Tag ann) (Tag ann)
forall x. HasManyTags x => Traversal' x (Tag (Annotation x))
allInlineTags

instance HasManyBlockTags (BlockTagContent ann) where
    allBlockTags :: Traversal'
  (BlockTagContent ann) (Tag (Annotation (BlockTagContent ann)))
allBlockTags = Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
forall x. CanFork x => Prism' x (Fork x)
fork Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
-> Optic
     A_Traversal NoIx (Blocks ann) (Blocks ann) (Tag ann) (Tag ann)
-> Optic
     A_Traversal
     NoIx
     (BlockTagContent ann)
     (BlockTagContent ann)
     (Tag ann)
     (Tag ann)
forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a
       b.
(JoinKinds k l m, AppendIndices is js ks) =>
Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b
% Optic
  A_Traversal NoIx (Blocks ann) (Blocks ann) (Tag ann) (Tag ann)
forall x. HasManyBlockTags x => Traversal' x (Tag (Annotation x))
allBlockTags

instance HasWitherableTags (BlockTagContent ann) where
    witherTags :: (Tag (Annotation (BlockTagContent ann))
 -> f (Maybe (Tag (Annotation (BlockTagContent ann)))))
-> BlockTagContent ann -> f (BlockTagContent ann)
witherTags Tag (Annotation (BlockTagContent ann))
-> f (Maybe (Tag (Annotation (BlockTagContent ann))))
f = Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
-> (Blocks ann -> f (Blocks ann))
-> BlockTagContent ann
-> f (BlockTagContent ann)
forall k (f :: * -> *) (is :: IxList) s t a b.
(Is k A_Traversal, Applicative f) =>
Optic k is s t a b -> (a -> f b) -> s -> f t
traverseOf Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
forall x. CanFork x => Prism' x (Fork x)
fork ((Tag (Annotation (Blocks ann))
 -> f (Maybe (Tag (Annotation (Blocks ann)))))
-> Blocks ann -> f (Blocks ann)
forall x (f :: * -> *).
(HasWitherableTags x, Monad f) =>
(Tag (Annotation x) -> f (Maybe (Tag (Annotation x)))) -> x -> f x
witherTags Tag (Annotation (Blocks ann))
-> f (Maybe (Tag (Annotation (Blocks ann))))
Tag (Annotation (BlockTagContent ann))
-> f (Maybe (Tag (Annotation (BlockTagContent ann))))
f)
    mapMaybeTags :: (Tag (Annotation (BlockTagContent ann))
 -> Maybe (Tag (Annotation (BlockTagContent ann))))
-> BlockTagContent ann -> BlockTagContent ann
mapMaybeTags Tag (Annotation (BlockTagContent ann))
-> Maybe (Tag (Annotation (BlockTagContent ann)))
f = Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
-> (Blocks ann -> Blocks ann)
-> BlockTagContent ann
-> BlockTagContent ann
forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
over Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
forall x. CanFork x => Prism' x (Fork x)
fork ((Tag (Annotation (Blocks ann))
 -> Maybe (Tag (Annotation (Blocks ann))))
-> Blocks ann -> Blocks ann
forall x.
HasWitherableTags x =>
(Tag (Annotation x) -> Maybe (Tag (Annotation x))) -> x -> x
mapMaybeTags Tag (Annotation (Blocks ann))
-> Maybe (Tag (Annotation (Blocks ann)))
Tag (Annotation (BlockTagContent ann))
-> Maybe (Tag (Annotation (BlockTagContent ann)))
f)

instance HasWitherableInlineTags (BlockTagContent ann) where
    witherInlineTags :: (Tag (Annotation (BlockTagContent ann))
 -> f (Maybe (Tag (Annotation (BlockTagContent ann)))))
-> BlockTagContent ann -> f (BlockTagContent ann)
witherInlineTags Tag (Annotation (BlockTagContent ann))
-> f (Maybe (Tag (Annotation (BlockTagContent ann))))
f = Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
-> (Blocks ann -> f (Blocks ann))
-> BlockTagContent ann
-> f (BlockTagContent ann)
forall k (f :: * -> *) (is :: IxList) s t a b.
(Is k A_Traversal, Applicative f) =>
Optic k is s t a b -> (a -> f b) -> s -> f t
traverseOf Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
forall x. CanFork x => Prism' x (Fork x)
fork ((Tag (Annotation (Blocks ann))
 -> f (Maybe (Tag (Annotation (Blocks ann)))))
-> Blocks ann -> f (Blocks ann)
forall x (f :: * -> *).
(HasWitherableInlineTags x, Monad f) =>
(Tag (Annotation x) -> f (Maybe (Tag (Annotation x)))) -> x -> f x
witherInlineTags Tag (Annotation (Blocks ann))
-> f (Maybe (Tag (Annotation (Blocks ann))))
Tag (Annotation (BlockTagContent ann))
-> f (Maybe (Tag (Annotation (BlockTagContent ann))))
f)
    mapMaybeInlineTags :: (Tag (Annotation (BlockTagContent ann))
 -> Maybe (Tag (Annotation (BlockTagContent ann))))
-> BlockTagContent ann -> BlockTagContent ann
mapMaybeInlineTags Tag (Annotation (BlockTagContent ann))
-> Maybe (Tag (Annotation (BlockTagContent ann)))
f = Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
-> (Blocks ann -> Blocks ann)
-> BlockTagContent ann
-> BlockTagContent ann
forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
over Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
forall x. CanFork x => Prism' x (Fork x)
fork ((Tag (Annotation (Blocks ann))
 -> Maybe (Tag (Annotation (Blocks ann))))
-> Blocks ann -> Blocks ann
forall x.
HasWitherableInlineTags x =>
(Tag (Annotation x) -> Maybe (Tag (Annotation x))) -> x -> x
mapMaybeInlineTags Tag (Annotation (Blocks ann))
-> Maybe (Tag (Annotation (Blocks ann)))
Tag (Annotation (BlockTagContent ann))
-> Maybe (Tag (Annotation (BlockTagContent ann)))
f)

instance HasWitherableBlockTags (BlockTagContent ann) where
    witherBlockTags :: (Tag (Annotation (BlockTagContent ann))
 -> f (Maybe (Tag (Annotation (BlockTagContent ann)))))
-> BlockTagContent ann -> f (BlockTagContent ann)
witherBlockTags Tag (Annotation (BlockTagContent ann))
-> f (Maybe (Tag (Annotation (BlockTagContent ann))))
f = Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
-> (Blocks ann -> f (Blocks ann))
-> BlockTagContent ann
-> f (BlockTagContent ann)
forall k (f :: * -> *) (is :: IxList) s t a b.
(Is k A_Traversal, Applicative f) =>
Optic k is s t a b -> (a -> f b) -> s -> f t
traverseOf Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
forall x. CanFork x => Prism' x (Fork x)
fork ((Tag (Annotation (Blocks ann))
 -> f (Maybe (Tag (Annotation (Blocks ann)))))
-> Blocks ann -> f (Blocks ann)
forall x (f :: * -> *).
(HasWitherableBlockTags x, Monad f) =>
(Tag (Annotation x) -> f (Maybe (Tag (Annotation x)))) -> x -> f x
witherBlockTags Tag (Annotation (Blocks ann))
-> f (Maybe (Tag (Annotation (Blocks ann))))
Tag (Annotation (BlockTagContent ann))
-> f (Maybe (Tag (Annotation (BlockTagContent ann))))
f)
    mapMaybeBlockTags :: (Tag (Annotation (BlockTagContent ann))
 -> Maybe (Tag (Annotation (BlockTagContent ann))))
-> BlockTagContent ann -> BlockTagContent ann
mapMaybeBlockTags Tag (Annotation (BlockTagContent ann))
-> Maybe (Tag (Annotation (BlockTagContent ann)))
f = Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
-> (Blocks ann -> Blocks ann)
-> BlockTagContent ann
-> BlockTagContent ann
forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
over Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
forall x. CanFork x => Prism' x (Fork x)
fork ((Tag (Annotation (Blocks ann))
 -> Maybe (Tag (Annotation (Blocks ann))))
-> Blocks ann -> Blocks ann
forall x.
HasWitherableBlockTags x =>
(Tag (Annotation x) -> Maybe (Tag (Annotation x))) -> x -> x
mapMaybeBlockTags Tag (Annotation (Blocks ann))
-> Maybe (Tag (Annotation (Blocks ann)))
Tag (Annotation (BlockTagContent ann))
-> Maybe (Tag (Annotation (BlockTagContent ann)))
f)

instance HasManyParagraphs (BlockTagContent ann) where
    allParagraphs :: Traversal'
  (BlockTagContent ann)
  (Paragraph (Annotation (BlockTagContent ann)))
allParagraphs = Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
forall x. CanFork x => Prism' x (Fork x)
fork Optic
  A_Prism
  NoIx
  (BlockTagContent ann)
  (BlockTagContent ann)
  (Blocks ann)
  (Blocks ann)
-> Optic
     A_Traversal
     NoIx
     (Blocks ann)
     (Blocks ann)
     (Paragraph ann)
     (Paragraph ann)
-> Optic
     A_Traversal
     NoIx
     (BlockTagContent ann)
     (BlockTagContent ann)
     (Paragraph ann)
     (Paragraph ann)
forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a
       b.
(JoinKinds k l m, AppendIndices is js ks) =>
Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b
% Optic
  A_Traversal
  NoIx
  (Blocks ann)
  (Blocks ann)
  (Paragraph ann)
  (Paragraph ann)
forall x.
HasManyParagraphs x =>
Traversal' x (Paragraph (Annotation x))
allParagraphs