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 :: KindOfText t -> AffineFold (Block ann) t taglessContent KindOfText t s = (Optic A_Prism NoIx (Block ann) (Block ann) (Tagged (PlainBlock ann)) (Tagged (PlainBlock ann)) forall x. CanBePlain x => Prism' x (Plain x) plain Optic A_Prism NoIx (Block ann) (Block ann) (Tagged (PlainBlock ann)) (Tagged (PlainBlock ann)) -> Optic An_AffineFold NoIx (Tagged (PlainBlock ann)) (Tagged (PlainBlock ann)) t t -> AffineFold (Block ann) t 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 % KindOfText t -> Optic An_AffineFold NoIx (Tagged (PlainBlock ann)) (Tagged (PlainBlock ann)) t t forall a t. CanHaveTaglessContent a => KindOfText t -> AffineFold a t taglessContent @(Tagged (PlainBlock ann)) KindOfText t s) AffineFold (Block ann) t -> AffineFold (Block ann) t -> AffineFold (Block ann) t forall k l (is :: IxList) s a (js :: IxList). (Is k An_AffineFold, Is l An_AffineFold) => Optic' k is s a -> Optic' l js s a -> AffineFold s a `afailing` (Optic A_Prism NoIx (Block ann) (Block ann) (Tagged (Blocks ann)) (Tagged (Blocks ann)) forall x. CanFork x => Prism' x (Fork x) fork Optic A_Prism NoIx (Block ann) (Block ann) (Tagged (Blocks ann)) (Tagged (Blocks ann)) -> Optic An_AffineFold NoIx (Tagged (Blocks ann)) (Tagged (Blocks ann)) t t -> AffineFold (Block ann) t 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 % KindOfText t -> Optic An_AffineFold NoIx (Tagged (Blocks ann)) (Tagged (Blocks ann)) t t forall a t. CanHaveTaglessContent a => KindOfText t -> AffineFold a t taglessContent @(Tagged (Blocks ann)) KindOfText t s) AffineFold (Block ann) t -> AffineFold (Block ann) t -> AffineFold (Block ann) t forall k l (is :: IxList) s a (js :: IxList). (Is k An_AffineFold, Is l An_AffineFold) => Optic' k is s a -> Optic' l js s a -> AffineFold s a `afailing` (Prism' (Block ann) (Paragraph ann) forall ann. Prism' (Block ann) (Paragraph ann) paragraph Prism' (Block ann) (Paragraph ann) -> Optic An_AffineFold NoIx (Paragraph ann) (Paragraph ann) t t -> AffineFold (Block ann) t 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 % KindOfText t -> Optic An_AffineFold NoIx (Paragraph ann) (Paragraph ann) t t forall a txt. CanBeTagless a => KindOfText txt -> AffineFold a txt tagless @(Paragraph ann) KindOfText t s) instance CanHaveTaglessContent (BlockTag ann) where taglessContent :: KindOfText t -> AffineFold (BlockTag ann) t taglessContent KindOfText t s = (Optic A_Prism NoIx (BlockTag ann) (BlockTag ann) (Tagged (PlainBlock ann)) (Tagged (PlainBlock ann)) forall x. CanBePlain x => Prism' x (Plain x) plain Optic A_Prism NoIx (BlockTag ann) (BlockTag ann) (Tagged (PlainBlock ann)) (Tagged (PlainBlock ann)) -> Optic An_AffineFold NoIx (Tagged (PlainBlock ann)) (Tagged (PlainBlock ann)) t t -> AffineFold (BlockTag ann) t 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 % KindOfText t -> Optic An_AffineFold NoIx (Tagged (PlainBlock ann)) (Tagged (PlainBlock ann)) t t forall a t. CanHaveTaglessContent a => KindOfText t -> AffineFold a t taglessContent @(Tagged (PlainBlock ann)) KindOfText t s) AffineFold (BlockTag ann) t -> AffineFold (BlockTag ann) t -> AffineFold (BlockTag ann) t forall k l (is :: IxList) s a (js :: IxList). (Is k An_AffineFold, Is l An_AffineFold) => Optic' k is s a -> Optic' l js s a -> AffineFold s a `afailing` (Optic A_Prism NoIx (BlockTag ann) (BlockTag ann) (Tagged (Blocks ann)) (Tagged (Blocks ann)) forall x. CanFork x => Prism' x (Fork x) fork Optic A_Prism NoIx (BlockTag ann) (BlockTag ann) (Tagged (Blocks ann)) (Tagged (Blocks ann)) -> Optic An_AffineFold NoIx (Tagged (Blocks ann)) (Tagged (Blocks ann)) t t -> AffineFold (BlockTag ann) t 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 % KindOfText t -> Optic An_AffineFold NoIx (Tagged (Blocks ann)) (Tagged (Blocks ann)) t t forall a t. CanHaveTaglessContent a => KindOfText t -> AffineFold a t taglessContent @(Tagged (Blocks ann)) KindOfText t s) instance CanHaveTaglessContent (BlockTagContent ann) where taglessContent :: KindOfText t -> AffineFold (BlockTagContent ann) t taglessContent = KindOfText t -> AffineFold (BlockTagContent ann) t forall a txt. CanBeTagless a => KindOfText txt -> AffineFold a txt tagless instance CanHaveTaglessContent (Inline ann) where taglessContent :: KindOfText t -> AffineFold (Inline ann) t taglessContent KindOfText t s = (Optic A_Prism NoIx (Inline ann) (Inline ann) (Fragment ann) (Fragment ann) forall x. CanBePlain x => Prism' x (Plain x) plain Optic A_Prism NoIx (Inline ann) (Inline ann) (Fragment ann) (Fragment ann) -> Optic An_AffineFold NoIx (Fragment ann) (Fragment ann) t t -> AffineFold (Inline ann) t 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 % KindOfText t -> Optic An_AffineFold NoIx (Fragment ann) (Fragment ann) t t forall a txt. CanBeTagless a => KindOfText txt -> AffineFold a txt tagless KindOfText t s) AffineFold (Inline ann) t -> AffineFold (Inline ann) t -> AffineFold (Inline ann) t forall k l (is :: IxList) s a (js :: IxList). (Is k An_AffineFold, Is l An_AffineFold) => Optic' k is s a -> Optic' l js s a -> AffineFold s a `afailing` (Optic A_Prism NoIx (Inline ann) (Inline ann) (Tagged (Lines ann)) (Tagged (Lines ann)) forall x. CanFork x => Prism' x (Fork x) fork Optic A_Prism NoIx (Inline ann) (Inline ann) (Tagged (Lines ann)) (Tagged (Lines ann)) -> Optic An_AffineFold NoIx (Tagged (Lines ann)) (Tagged (Lines ann)) t t -> AffineFold (Inline ann) t 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 % KindOfText t -> Optic An_AffineFold NoIx (Tagged (Lines ann)) (Tagged (Lines ann)) t t forall a t. CanHaveTaglessContent a => KindOfText t -> AffineFold a t taglessContent KindOfText t s) instance CanHaveTaglessContent (Lines ann) where taglessContent :: KindOfText t -> AffineFold (Lines ann) t taglessContent = KindOfText t -> AffineFold (Lines ann) t forall a txt. CanBeTagless a => KindOfText txt -> AffineFold a txt tagless instance CanHaveTaglessContent (Blocks ann) where taglessContent :: KindOfText t -> AffineFold (Blocks ann) t taglessContent = KindOfText t -> AffineFold (Blocks ann) t forall a txt. CanBeTagless a => KindOfText txt -> AffineFold a txt tagless instance CanHaveTaglessContent (Line ann) where taglessContent :: KindOfText t -> AffineFold (Line ann) t taglessContent = KindOfText t -> AffineFold (Line ann) t forall a txt. CanBeTagless a => KindOfText txt -> AffineFold a txt tagless instance CanHaveTaglessContent (Fragment ann) where taglessContent :: KindOfText t -> AffineFold (Fragment ann) t taglessContent = KindOfText t -> AffineFold (Fragment ann) t forall a txt. CanBeTagless a => KindOfText txt -> AffineFold a txt tagless instance CanHaveTaglessContent (Tagged (Blocks ann)) where taglessContent :: KindOfText t -> AffineFold (Tagged (Blocks ann)) t taglessContent KindOfText t s = Optic A_Lens NoIx (Tagged (Blocks ann)) (Tagged (Blocks ann)) (Blocks ann) (Blocks ann) forall x x'. HasContent x x' => Lens x x' (Content x) (Content x') content Optic A_Lens NoIx (Tagged (Blocks ann)) (Tagged (Blocks ann)) (Blocks ann) (Blocks ann) -> Optic An_AffineFold NoIx (Blocks ann) (Blocks ann) t t -> AffineFold (Tagged (Blocks ann)) t 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 % KindOfText t -> Optic An_AffineFold NoIx (Blocks ann) (Blocks ann) t t forall a txt. CanBeTagless a => KindOfText txt -> AffineFold a txt tagless KindOfText t s instance CanHaveTaglessContent (Tagged (PlainBlock ann)) where taglessContent :: KindOfText t -> AffineFold (Tagged (PlainBlock ann)) t taglessContent KindOfText t s = Optic A_Lens NoIx (Tagged (PlainBlock ann)) (Tagged (PlainBlock ann)) (PlainBlock ann) (PlainBlock ann) forall x x'. HasContent x x' => Lens x x' (Content x) (Content x') content Optic A_Lens NoIx (Tagged (PlainBlock ann)) (Tagged (PlainBlock ann)) (PlainBlock ann) (PlainBlock ann) -> Optic An_AffineFold NoIx (PlainBlock ann) (PlainBlock ann) t t -> AffineFold (Tagged (PlainBlock ann)) t 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 % KindOfText t -> Optic An_AffineFold NoIx (PlainBlock ann) (PlainBlock ann) t t forall a txt. CanBeTagless a => KindOfText txt -> AffineFold a txt tagless KindOfText t s instance CanHaveTaglessContent (Tagged (Lines ann)) where taglessContent :: KindOfText t -> AffineFold (Tagged (Lines ann)) t taglessContent KindOfText t s = Optic A_Lens NoIx (Tagged (Lines ann)) (Tagged (Lines ann)) (Lines ann) (Lines ann) forall x x'. HasContent x x' => Lens x x' (Content x) (Content x') content Optic A_Lens NoIx (Tagged (Lines ann)) (Tagged (Lines ann)) (Lines ann) (Lines ann) -> Optic An_AffineFold NoIx (Lines ann) (Lines ann) t t -> AffineFold (Tagged (Lines ann)) t 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 % KindOfText t -> Optic An_AffineFold NoIx (Lines ann) (Lines ann) t t forall a txt. CanBeTagless a => KindOfText txt -> AffineFold a txt tagless KindOfText t s instance CanHaveTaglessContent (Document ann) where taglessContent :: KindOfText t -> AffineFold (Document ann) t taglessContent KindOfText t s = Optic A_Lens NoIx (Document ann) (Document ann) (Blocks ann) (Blocks ann) forall x x'. HasContent x x' => Lens x x' (Content x) (Content x') content Optic A_Lens NoIx (Document ann) (Document ann) (Blocks ann) (Blocks ann) -> Optic An_AffineFold NoIx (Blocks ann) (Blocks ann) t t -> AffineFold (Document ann) t 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 % KindOfText t -> Optic An_AffineFold NoIx (Blocks ann) (Blocks ann) t t forall a txt. CanBeTagless a => KindOfText txt -> AffineFold a txt tagless KindOfText t s