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) (BlockTag ann) (BlockTag ann) forall a. IsTaggedOrBare a => Prism' a (TaggedType a) tagged Optic A_Prism NoIx (Block ann) (Block ann) (BlockTag ann) (BlockTag ann) -> Optic An_AffineFold NoIx (BlockTag ann) (BlockTag 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 (BlockTag ann) (BlockTag ann) t t forall a t. CanHaveTaglessContent a => KindOfText t -> AffineFold a t taglessContent @(BlockTag 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) (Paragraph ann) (Paragraph ann) forall a. IsTaggedOrBare a => Prism' a (BareType a) bare Optic A_Prism NoIx (Block ann) (Block ann) (Paragraph 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) (TaggedPlainBlock ann) (TaggedPlainBlock ann) forall x. CanBePlain x => Prism' x (Plain x) plain Optic A_Prism NoIx (BlockTag ann) (BlockTag ann) (TaggedPlainBlock ann) (TaggedPlainBlock ann) -> Optic An_AffineFold NoIx (TaggedPlainBlock ann) (TaggedPlainBlock 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 (TaggedPlainBlock ann) (TaggedPlainBlock ann) t t forall a t. CanHaveTaglessContent a => KindOfText t -> AffineFold a t taglessContent @(TaggedPlainBlock 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) (TaggedBlocks ann) (TaggedBlocks ann) forall x. CanFork x => Prism' x (Fork x) fork Optic A_Prism NoIx (BlockTag ann) (BlockTag ann) (TaggedBlocks ann) (TaggedBlocks ann) -> Optic An_AffineFold NoIx (TaggedBlocks ann) (TaggedBlocks 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 (TaggedBlocks ann) (TaggedBlocks ann) t t forall a t. CanHaveTaglessContent a => KindOfText t -> AffineFold a t taglessContent @(TaggedBlocks 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) (TaggedLines ann) (TaggedLines ann) forall x. CanFork x => Prism' x (Fork x) fork Optic A_Prism NoIx (Inline ann) (Inline ann) (TaggedLines ann) (TaggedLines ann) -> Optic An_AffineFold NoIx (TaggedLines ann) (TaggedLines 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 (TaggedLines ann) (TaggedLines 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 (TaggedBlocks ann) where taglessContent :: KindOfText t -> AffineFold (TaggedBlocks ann) t taglessContent KindOfText t s = Optic A_Lens NoIx (TaggedBlocks ann) (TaggedBlocks ann) (Blocks ann) (Blocks ann) forall x x'. HasContent x x' => Lens x x' (Content x) (Content x') content Optic A_Lens NoIx (TaggedBlocks ann) (TaggedBlocks ann) (Blocks ann) (Blocks ann) -> Optic An_AffineFold NoIx (Blocks ann) (Blocks ann) t t -> AffineFold (TaggedBlocks 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 (TaggedPlainBlock ann) where taglessContent :: KindOfText t -> AffineFold (TaggedPlainBlock ann) t taglessContent KindOfText t s = Optic A_Lens NoIx (TaggedPlainBlock ann) (TaggedPlainBlock ann) (PlainBlock ann) (PlainBlock ann) forall x x'. HasContent x x' => Lens x x' (Content x) (Content x') content Optic A_Lens NoIx (TaggedPlainBlock ann) (TaggedPlainBlock ann) (PlainBlock ann) (PlainBlock ann) -> Optic An_AffineFold NoIx (PlainBlock ann) (PlainBlock ann) t t -> AffineFold (TaggedPlainBlock 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 (TaggedLines ann) where taglessContent :: KindOfText t -> AffineFold (TaggedLines ann) t taglessContent KindOfText t s = Optic A_Lens NoIx (TaggedLines ann) (TaggedLines ann) (Lines ann) (Lines ann) forall x x'. HasContent x x' => Lens x x' (Content x) (Content x') content Optic A_Lens NoIx (TaggedLines ann) (TaggedLines ann) (Lines ann) (Lines ann) -> Optic An_AffineFold NoIx (Lines ann) (Lines ann) t t -> AffineFold (TaggedLines 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