spacechar (empty) → 0.0.0.1
raw patch · 5 files changed
+1880/−0 lines, 5 filesdep +basedep +lensdep +parserssetup-changed
Dependencies added: base, lens, parsers
Files
- LICENCE +30/−0
- Setup.hs +2/−0
- changelog.md +3/−0
- spacechar.cabal +30/−0
- src/Data/Char/Space.hs +1815/−0
+ LICENCE view
@@ -0,0 +1,30 @@+Copyright (c) 2022 Tony Morris++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++ * Redistributions of source code must retain the above copyright+ notice, this list of conditions and the following disclaimer.++ * Redistributions in binary form must reproduce the above+ copyright notice, this list of conditions and the following+ disclaimer in the documentation and/or other materials provided+ with the distribution.++ * Neither the name of Tony Morris nor the names of other+ contributors may be used to endorse or promote products derived+ from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ changelog.md view
@@ -0,0 +1,3 @@+0.0.0.1++* The initial version of spacechar.
+ spacechar.cabal view
@@ -0,0 +1,30 @@+name: spacechar+version: 0.0.0.1+synopsis: Space Character+description: Space Character+license: BSD3+license-file: LICENCE+author: Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>+maintainer: Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>+copyright: Copyright (C) 2022 Tony Morris+category: Test+build-type: Simple+extra-source-files: changelog.md+cabal-version: >=1.10+homepage: https://gitlab.com/tonymorris/spacechar+bug-reports: https://gitlab.com/tonymorris/spacechar/issues+tested-with: GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.3, GHC == 8.6.5++source-repository head+ type: git+ location: git@github.com:tonymorris/spacechar.git++library+ exposed-modules: Data.Char.Space+ build-depends: base >= 4.8 && < 6+ , lens >= 4 && < 6+ , parsers >= 0.12 && < 1++ hs-source-dirs: src+ default-language: Haskell2010+ ghc-options: -Wall
+ src/Data/Char/Space.hs view
@@ -0,0 +1,1815 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE LambdaCase #-}++module Data.Char.Space where++import Control.Category ( Category(id) )+import Control.Lens ( Prism', prism', (#), Lens' )+import Data.Char ( Char )+import Data.Eq ( Eq((==)) )+import Data.Int ( Int )+import Data.Foldable ( asum )+import Data.Functor ( Functor((<$), fmap) )+import Data.Maybe ( Maybe(Nothing, Just) )+import Data.Monoid ( (<>), Monoid(mempty) )+import Data.Ord ( Ord )+import Data.Semigroup ( Semigroup )+import GHC.Generics ( Generic )+import GHC.Show ( Show )+import Prelude(Integer)+import Text.Parser.Char ( CharParsing(satisfy) )+import Text.Parser.Combinators ( Parsing((<?>)) )++data HorizontalTab = HorizontalTab+ deriving (Eq, Ord, Show, Generic)++class HasHorizontalTab a where+ horizontalTab :: Lens' a HorizontalTab++instance HasHorizontalTab HorizontalTab where+ horizontalTab = id++instance HasHorizontalTab () where+ horizontalTab f x =+ fmap (\HorizontalTab -> x) (f HorizontalTab)++instance Semigroup HorizontalTab where+ HorizontalTab <> HorizontalTab = HorizontalTab++instance Monoid HorizontalTab where+ mempty = HorizontalTab++class AsHorizontalTab a where+ _HorizontalTab :: Prism' a HorizontalTab+ _HorizontalTab' :: a+ _HorizontalTab' = _HorizontalTab # HorizontalTab++instance AsHorizontalTab HorizontalTab where+ _HorizontalTab = id++instance AsHorizontalTab () where+ _HorizontalTab =+ prism'+ (\HorizontalTab -> ())+ (\() -> Just HorizontalTab)++instance AsHorizontalTab Char where+ _HorizontalTab =+ prism'+ (\HorizontalTab -> '\9')+ (\case+ '\9' -> Just HorizontalTab+ _ -> Nothing+ )++instance AsHorizontalTab Int where+ _HorizontalTab =+ prism'+ (\HorizontalTab -> 9)+ (\case+ 9 -> Just HorizontalTab+ _ -> Nothing+ )++instance AsHorizontalTab Integer where+ _HorizontalTab =+ prism'+ (\HorizontalTab -> 9)+ (\case+ 9 -> Just HorizontalTab+ _ -> Nothing+ )++parseHorizontalTab ::+ CharParsing p =>+ p HorizontalTab+parseHorizontalTab =+ HorizontalTab <$ satisfy (== '\9') <?> "horizontal tab character"++data LineFeed = LineFeed+ deriving (Eq, Ord, Show, Generic)++class HasLineFeed a where+ lineFeed :: Lens' a LineFeed++instance HasLineFeed LineFeed where+ lineFeed = id++instance HasLineFeed () where+ lineFeed f x =+ fmap (\LineFeed -> x) (f LineFeed)++instance Semigroup LineFeed where+ LineFeed <> LineFeed = LineFeed++instance Monoid LineFeed where+ mempty = LineFeed++class AsLineFeed a where+ _LineFeed :: Prism' a LineFeed+ _LineFeed' :: a+ _LineFeed' = _LineFeed # LineFeed++instance AsLineFeed LineFeed where+ _LineFeed = id++instance AsLineFeed () where+ _LineFeed =+ prism'+ (\LineFeed -> ())+ (\() -> Just LineFeed)++instance AsLineFeed Char where+ _LineFeed =+ prism'+ (\LineFeed -> '\10')+ (\case+ '\10' -> Just LineFeed+ _ -> Nothing+ )++instance AsLineFeed Int where+ _LineFeed =+ prism'+ (\LineFeed -> 10)+ (\case+ 10 -> Just LineFeed+ _ -> Nothing+ )++instance AsLineFeed Integer where+ _LineFeed =+ prism'+ (\LineFeed -> 10)+ (\case+ 10 -> Just LineFeed+ _ -> Nothing+ )++parseLineFeed ::+ CharParsing p =>+ p LineFeed+parseLineFeed =+ LineFeed <$ satisfy (== '\10') <?> "line feed character"++data VerticalTab = VerticalTab+ deriving (Eq, Ord, Show, Generic)++class HasVerticalTab a where+ verticalTab :: Lens' a VerticalTab++instance HasVerticalTab VerticalTab where+ verticalTab = id++instance HasVerticalTab () where+ verticalTab f x =+ fmap (\VerticalTab -> x) (f VerticalTab)++instance Semigroup VerticalTab where+ VerticalTab <> VerticalTab = VerticalTab++instance Monoid VerticalTab where+ mempty = VerticalTab++class AsVerticalTab a where+ _VerticalTab :: Prism' a VerticalTab+ _VerticalTab' :: a+ _VerticalTab' = _VerticalTab # VerticalTab++instance AsVerticalTab VerticalTab where+ _VerticalTab = id++instance AsVerticalTab () where+ _VerticalTab =+ prism'+ (\VerticalTab -> ())+ (\() -> Just VerticalTab)++instance AsVerticalTab Char where+ _VerticalTab =+ prism'+ (\VerticalTab -> '\11')+ (\case+ '\11' -> Just VerticalTab+ _ -> Nothing+ )++instance AsVerticalTab Int where+ _VerticalTab =+ prism'+ (\VerticalTab -> 11)+ (\case+ 11 -> Just VerticalTab+ _ -> Nothing+ )++instance AsVerticalTab Integer where+ _VerticalTab =+ prism'+ (\VerticalTab -> 11)+ (\case+ 11 -> Just VerticalTab+ _ -> Nothing+ )++parseVerticalTab ::+ CharParsing p =>+ p VerticalTab+parseVerticalTab =+ VerticalTab <$ satisfy (== '\11') <?> "vertical tab character"++data FormFeed = FormFeed+ deriving (Eq, Ord, Show, Generic)++class HasFormFeed a where+ formFeed :: Lens' a FormFeed++instance HasFormFeed FormFeed where+ formFeed = id++instance HasFormFeed () where+ formFeed f x =+ fmap (\FormFeed -> x) (f FormFeed)++instance Semigroup FormFeed where+ FormFeed <> FormFeed = FormFeed++instance Monoid FormFeed where+ mempty = FormFeed++class AsFormFeed a where+ _FormFeed :: Prism' a FormFeed+ _FormFeed' :: a+ _FormFeed' = _FormFeed # FormFeed++instance AsFormFeed FormFeed where+ _FormFeed = id++instance AsFormFeed () where+ _FormFeed =+ prism'+ (\FormFeed -> ())+ (\() -> Just FormFeed)++instance AsFormFeed Char where+ _FormFeed =+ prism'+ (\FormFeed -> '\12')+ (\case+ '\12' -> Just FormFeed+ _ -> Nothing+ )++instance AsFormFeed Int where+ _FormFeed =+ prism'+ (\FormFeed -> 12)+ (\case+ 12 -> Just FormFeed+ _ -> Nothing+ )++instance AsFormFeed Integer where+ _FormFeed =+ prism'+ (\FormFeed -> 12)+ (\case+ 12 -> Just FormFeed+ _ -> Nothing+ )++parseFormFeed ::+ CharParsing p =>+ p FormFeed+parseFormFeed =+ FormFeed <$ satisfy (== '\12') <?> "form feed character"++data CarriageReturn = CarriageReturn+ deriving (Eq, Ord, Show, Generic)++class HasCarriageReturn a where+ carriageReturn :: Lens' a CarriageReturn++instance HasCarriageReturn CarriageReturn where+ carriageReturn = id++instance HasCarriageReturn () where+ carriageReturn f x =+ fmap (\CarriageReturn -> x) (f CarriageReturn)++instance Semigroup CarriageReturn where+ CarriageReturn <> CarriageReturn = CarriageReturn++instance Monoid CarriageReturn where+ mempty = CarriageReturn++class AsCarriageReturn a where+ _CarriageReturn :: Prism' a CarriageReturn+ _CarriageReturn' :: a+ _CarriageReturn' = _CarriageReturn # CarriageReturn++instance AsCarriageReturn CarriageReturn where+ _CarriageReturn = id++instance AsCarriageReturn () where+ _CarriageReturn =+ prism'+ (\CarriageReturn -> ())+ (\() -> Just CarriageReturn)++instance AsCarriageReturn Char where+ _CarriageReturn =+ prism'+ (\CarriageReturn -> '\13')+ (\case+ '\13' -> Just CarriageReturn+ _ -> Nothing+ )++instance AsCarriageReturn Int where+ _CarriageReturn =+ prism'+ (\CarriageReturn -> 13)+ (\case+ 13 -> Just CarriageReturn+ _ -> Nothing+ )++instance AsCarriageReturn Integer where+ _CarriageReturn =+ prism'+ (\CarriageReturn -> 13)+ (\case+ 13 -> Just CarriageReturn+ _ -> Nothing+ )++parseCarriageReturn ::+ CharParsing p =>+ p CarriageReturn+parseCarriageReturn =+ CarriageReturn <$ satisfy (== '\13') <?> "carriage return character"++data Whitespace = Whitespace+ deriving (Eq, Ord, Show, Generic)++class HasWhitespace a where+ whitespace :: Lens' a Whitespace++instance HasWhitespace Whitespace where+ whitespace = id++instance HasWhitespace () where+ whitespace f x =+ fmap (\Whitespace -> x) (f Whitespace)++instance Semigroup Whitespace where+ Whitespace <> Whitespace = Whitespace++instance Monoid Whitespace where+ mempty = Whitespace++class AsWhitespace a where+ _Whitespace :: Prism' a Whitespace+ _Whitespace' :: a+ _Whitespace' = _Whitespace # Whitespace++instance AsWhitespace Whitespace where+ _Whitespace = id++instance AsWhitespace () where+ _Whitespace =+ prism'+ (\Whitespace -> ())+ (\() -> Just Whitespace)++instance AsWhitespace Char where+ _Whitespace =+ prism'+ (\Whitespace -> '\32')+ (\case+ '\32' -> Just Whitespace+ _ -> Nothing+ )++instance AsWhitespace Int where+ _Whitespace =+ prism'+ (\Whitespace -> 32)+ (\case+ 32 -> Just Whitespace+ _ -> Nothing+ )++instance AsWhitespace Integer where+ _Whitespace =+ prism'+ (\Whitespace -> 32)+ (\case+ 32 -> Just Whitespace+ _ -> Nothing+ )++parseWhitespace ::+ CharParsing p =>+ p Whitespace+parseWhitespace =+ Whitespace <$ satisfy (== '\32') <?> "whitespace character"++data NoBreakSpace = NoBreakSpace+ deriving (Eq, Ord, Show, Generic)++class HasNoBreakSpace a where+ noBreakSpace :: Lens' a NoBreakSpace++instance HasNoBreakSpace NoBreakSpace where+ noBreakSpace = id++instance HasNoBreakSpace () where+ noBreakSpace f x =+ fmap (\NoBreakSpace -> x) (f NoBreakSpace)++instance Semigroup NoBreakSpace where+ NoBreakSpace <> NoBreakSpace = NoBreakSpace++instance Monoid NoBreakSpace where+ mempty = NoBreakSpace++class AsNoBreakSpace a where+ _NoBreakSpace :: Prism' a NoBreakSpace+ _NoBreakSpace' :: a+ _NoBreakSpace' = _NoBreakSpace # NoBreakSpace++instance AsNoBreakSpace NoBreakSpace where+ _NoBreakSpace = id++instance AsNoBreakSpace () where+ _NoBreakSpace =+ prism'+ (\NoBreakSpace -> ())+ (\() -> Just NoBreakSpace)++instance AsNoBreakSpace Char where+ _NoBreakSpace =+ prism'+ (\NoBreakSpace -> '\160')+ (\case+ '\160' -> Just NoBreakSpace+ _ -> Nothing+ )++instance AsNoBreakSpace Int where+ _NoBreakSpace =+ prism'+ (\NoBreakSpace -> 160)+ (\case+ 160 -> Just NoBreakSpace+ _ -> Nothing+ )++instance AsNoBreakSpace Integer where+ _NoBreakSpace =+ prism'+ (\NoBreakSpace -> 160)+ (\case+ 160 -> Just NoBreakSpace+ _ -> Nothing+ )++parseNoBreakSpace ::+ CharParsing p =>+ p NoBreakSpace+parseNoBreakSpace =+ NoBreakSpace <$ satisfy (== '\160') <?> "no break space character"++data OghamSpaceMark = OghamSpaceMark+ deriving (Eq, Ord, Show, Generic)++class HasOghamSpaceMark a where+ oghamSpaceMark :: Lens' a OghamSpaceMark++instance HasOghamSpaceMark OghamSpaceMark where+ oghamSpaceMark = id++instance HasOghamSpaceMark () where+ oghamSpaceMark f x =+ fmap (\OghamSpaceMark -> x) (f OghamSpaceMark)++instance Semigroup OghamSpaceMark where+ OghamSpaceMark <> OghamSpaceMark = OghamSpaceMark++instance Monoid OghamSpaceMark where+ mempty = OghamSpaceMark++class AsOghamSpaceMark a where+ _OghamSpaceMark :: Prism' a OghamSpaceMark+ _OghamSpaceMark' :: a+ _OghamSpaceMark' = _OghamSpaceMark # OghamSpaceMark++instance AsOghamSpaceMark OghamSpaceMark where+ _OghamSpaceMark = id++instance AsOghamSpaceMark () where+ _OghamSpaceMark =+ prism'+ (\OghamSpaceMark -> ())+ (\() -> Just OghamSpaceMark)++instance AsOghamSpaceMark Char where+ _OghamSpaceMark =+ prism'+ (\OghamSpaceMark -> '\5760')+ (\case+ '\5760' -> Just OghamSpaceMark+ _ -> Nothing+ )++instance AsOghamSpaceMark Int where+ _OghamSpaceMark =+ prism'+ (\OghamSpaceMark -> 5760)+ (\case+ 5760 -> Just OghamSpaceMark+ _ -> Nothing+ )++instance AsOghamSpaceMark Integer where+ _OghamSpaceMark =+ prism'+ (\OghamSpaceMark -> 5760)+ (\case+ 5760 -> Just OghamSpaceMark+ _ -> Nothing+ )++parseOghamSpaceMark ::+ CharParsing p =>+ p OghamSpaceMark+parseOghamSpaceMark =+ OghamSpaceMark <$ satisfy (== '\5760') <?> "ogham space mark character"++data EnQuad = EnQuad+ deriving (Eq, Ord, Show, Generic)++class HasEnQuad a where+ enQuad :: Lens' a EnQuad++instance HasEnQuad EnQuad where+ enQuad = id++instance HasEnQuad () where+ enQuad f x =+ fmap (\EnQuad -> x) (f EnQuad)++instance Semigroup EnQuad where+ EnQuad <> EnQuad = EnQuad++instance Monoid EnQuad where+ mempty = EnQuad++class AsEnQuad a where+ _EnQuad :: Prism' a EnQuad+ _EnQuad' :: a+ _EnQuad' = _EnQuad # EnQuad++instance AsEnQuad EnQuad where+ _EnQuad = id++instance AsEnQuad () where+ _EnQuad =+ prism'+ (\EnQuad -> ())+ (\() -> Just EnQuad)++instance AsEnQuad Char where+ _EnQuad =+ prism'+ (\EnQuad -> '\8192')+ (\case+ '\8192' -> Just EnQuad+ _ -> Nothing+ )++instance AsEnQuad Int where+ _EnQuad =+ prism'+ (\EnQuad -> 8192)+ (\case+ 8192 -> Just EnQuad+ _ -> Nothing+ )++instance AsEnQuad Integer where+ _EnQuad =+ prism'+ (\EnQuad -> 8192)+ (\case+ 8192 -> Just EnQuad+ _ -> Nothing+ )++parseEnQuad ::+ CharParsing p =>+ p EnQuad+parseEnQuad =+ EnQuad <$ satisfy (== '\8192') <?> "en quad character"++data EmQuad = EmQuad+ deriving (Eq, Ord, Show, Generic)++class HasEmQuad a where+ emQuad :: Lens' a EmQuad++instance HasEmQuad EmQuad where+ emQuad = id++instance HasEmQuad () where+ emQuad f x =+ fmap (\EmQuad -> x) (f EmQuad)++instance Semigroup EmQuad where+ EmQuad <> EmQuad = EmQuad++instance Monoid EmQuad where+ mempty = EmQuad++class AsEmQuad a where+ _EmQuad :: Prism' a EmQuad+ _EmQuad' :: a+ _EmQuad' = _EmQuad # EmQuad++instance AsEmQuad EmQuad where+ _EmQuad = id++instance AsEmQuad () where+ _EmQuad =+ prism'+ (\EmQuad -> ())+ (\() -> Just EmQuad)++instance AsEmQuad Char where+ _EmQuad =+ prism'+ (\EmQuad -> '\8193')+ (\case+ '\8193' -> Just EmQuad+ _ -> Nothing+ )++instance AsEmQuad Int where+ _EmQuad =+ prism'+ (\EmQuad -> 8193)+ (\case+ 8193 -> Just EmQuad+ _ -> Nothing+ )++instance AsEmQuad Integer where+ _EmQuad =+ prism'+ (\EmQuad -> 8193)+ (\case+ 8193 -> Just EmQuad+ _ -> Nothing+ )++parseEmQuad ::+ CharParsing p =>+ p EmQuad+parseEmQuad =+ EmQuad <$ satisfy (== '\8193') <?> "em quad character"++data EnSpace = EnSpace+ deriving (Eq, Ord, Show, Generic)++class HasEnSpace a where+ enSpace :: Lens' a EnSpace++instance HasEnSpace EnSpace where+ enSpace = id++instance HasEnSpace () where+ enSpace f x =+ fmap (\EnSpace -> x) (f EnSpace)++instance Semigroup EnSpace where+ EnSpace <> EnSpace = EnSpace++instance Monoid EnSpace where+ mempty = EnSpace++class AsEnSpace a where+ _EnSpace :: Prism' a EnSpace+ _EnSpace' :: a+ _EnSpace' = _EnSpace # EnSpace++instance AsEnSpace EnSpace where+ _EnSpace = id++instance AsEnSpace () where+ _EnSpace =+ prism'+ (\EnSpace -> ())+ (\() -> Just EnSpace)++instance AsEnSpace Char where+ _EnSpace =+ prism'+ (\EnSpace -> '\8194')+ (\case+ '\8194' -> Just EnSpace+ _ -> Nothing+ )++instance AsEnSpace Int where+ _EnSpace =+ prism'+ (\EnSpace -> 8194)+ (\case+ 8194 -> Just EnSpace+ _ -> Nothing+ )++instance AsEnSpace Integer where+ _EnSpace =+ prism'+ (\EnSpace -> 8194)+ (\case+ 8194 -> Just EnSpace+ _ -> Nothing+ )++parseEnSpace ::+ CharParsing p =>+ p EnSpace+parseEnSpace =+ EnSpace <$ satisfy (== '\8194') <?> "en space character"++data EmSpace = EmSpace+ deriving (Eq, Ord, Show, Generic)++class HasEmSpace a where+ emSpace :: Lens' a EmSpace++instance HasEmSpace EmSpace where+ emSpace = id++instance HasEmSpace () where+ emSpace f x =+ fmap (\EmSpace -> x) (f EmSpace)++instance Semigroup EmSpace where+ EmSpace <> EmSpace = EmSpace++instance Monoid EmSpace where+ mempty = EmSpace++class AsEmSpace a where+ _EmSpace :: Prism' a EmSpace+ _EmSpace' :: a+ _EmSpace' = _EmSpace # EmSpace++instance AsEmSpace EmSpace where+ _EmSpace = id++instance AsEmSpace () where+ _EmSpace =+ prism'+ (\EmSpace -> ())+ (\() -> Just EmSpace)++instance AsEmSpace Char where+ _EmSpace =+ prism'+ (\EmSpace -> '\8195')+ (\case+ '\8195' -> Just EmSpace+ _ -> Nothing+ )++instance AsEmSpace Int where+ _EmSpace =+ prism'+ (\EmSpace -> 8195)+ (\case+ 8195 -> Just EmSpace+ _ -> Nothing+ )++instance AsEmSpace Integer where+ _EmSpace =+ prism'+ (\EmSpace -> 8195)+ (\case+ 8195 -> Just EmSpace+ _ -> Nothing+ )++parseEmSpace ::+ CharParsing p =>+ p EmSpace+parseEmSpace =+ EmSpace <$ satisfy (== '\8195') <?> "em space character"++data ThreePerEmSpace = ThreePerEmSpace+ deriving (Eq, Ord, Show, Generic)++class HasThreePerEmSpace a where+ threePerEmSpace :: Lens' a ThreePerEmSpace++instance HasThreePerEmSpace ThreePerEmSpace where+ threePerEmSpace = id++instance HasThreePerEmSpace () where+ threePerEmSpace f x =+ fmap (\ThreePerEmSpace -> x) (f ThreePerEmSpace)++instance Semigroup ThreePerEmSpace where+ ThreePerEmSpace <> ThreePerEmSpace = ThreePerEmSpace++instance Monoid ThreePerEmSpace where+ mempty = ThreePerEmSpace++class AsThreePerEmSpace a where+ _ThreePerEmSpace :: Prism' a ThreePerEmSpace+ _ThreePerEmSpace' :: a+ _ThreePerEmSpace' = _ThreePerEmSpace # ThreePerEmSpace++instance AsThreePerEmSpace ThreePerEmSpace where+ _ThreePerEmSpace = id++instance AsThreePerEmSpace () where+ _ThreePerEmSpace =+ prism'+ (\ThreePerEmSpace -> ())+ (\() -> Just ThreePerEmSpace)++instance AsThreePerEmSpace Char where+ _ThreePerEmSpace =+ prism'+ (\ThreePerEmSpace -> '\8196')+ (\case+ '\8196' -> Just ThreePerEmSpace+ _ -> Nothing+ )++instance AsThreePerEmSpace Int where+ _ThreePerEmSpace =+ prism'+ (\ThreePerEmSpace -> 8196)+ (\case+ 8196 -> Just ThreePerEmSpace+ _ -> Nothing+ )++instance AsThreePerEmSpace Integer where+ _ThreePerEmSpace =+ prism'+ (\ThreePerEmSpace -> 8196)+ (\case+ 8196 -> Just ThreePerEmSpace+ _ -> Nothing+ )++parseThreePerEmSpace ::+ CharParsing p =>+ p ThreePerEmSpace+parseThreePerEmSpace =+ ThreePerEmSpace <$ satisfy (== '\8196') <?> "three per em space character"++data FourPerEmSpace = FourPerEmSpace+ deriving (Eq, Ord, Show, Generic)++class HasFourPerEmSpace a where+ fourPerEmSpace :: Lens' a FourPerEmSpace++instance HasFourPerEmSpace FourPerEmSpace where+ fourPerEmSpace = id++instance HasFourPerEmSpace () where+ fourPerEmSpace f x =+ fmap (\FourPerEmSpace -> x) (f FourPerEmSpace)++instance Semigroup FourPerEmSpace where+ FourPerEmSpace <> FourPerEmSpace = FourPerEmSpace++instance Monoid FourPerEmSpace where+ mempty = FourPerEmSpace++class AsFourPerEmSpace a where+ _FourPerEmSpace :: Prism' a FourPerEmSpace+ _FourPerEmSpace' :: a+ _FourPerEmSpace' = _FourPerEmSpace # FourPerEmSpace++instance AsFourPerEmSpace FourPerEmSpace where+ _FourPerEmSpace = id++instance AsFourPerEmSpace () where+ _FourPerEmSpace =+ prism'+ (\FourPerEmSpace -> ())+ (\() -> Just FourPerEmSpace)++instance AsFourPerEmSpace Char where+ _FourPerEmSpace =+ prism'+ (\FourPerEmSpace -> '\8197')+ (\case+ '\8197' -> Just FourPerEmSpace+ _ -> Nothing+ )++instance AsFourPerEmSpace Int where+ _FourPerEmSpace =+ prism'+ (\FourPerEmSpace -> 8197)+ (\case+ 8197 -> Just FourPerEmSpace+ _ -> Nothing+ )++instance AsFourPerEmSpace Integer where+ _FourPerEmSpace =+ prism'+ (\FourPerEmSpace -> 8197)+ (\case+ 8197 -> Just FourPerEmSpace+ _ -> Nothing+ )++parseFourPerEmSpace ::+ CharParsing p =>+ p FourPerEmSpace+parseFourPerEmSpace =+ FourPerEmSpace <$ satisfy (== '\8197') <?> "four per em space character"++data SixPerEmSpace = SixPerEmSpace+ deriving (Eq, Ord, Show, Generic)++class HasSixPerEmSpace a where+ sixPerEmSpace :: Lens' a SixPerEmSpace++instance HasSixPerEmSpace SixPerEmSpace where+ sixPerEmSpace = id++instance HasSixPerEmSpace () where+ sixPerEmSpace f x =+ fmap (\SixPerEmSpace -> x) (f SixPerEmSpace)++instance Semigroup SixPerEmSpace where+ SixPerEmSpace <> SixPerEmSpace = SixPerEmSpace++instance Monoid SixPerEmSpace where+ mempty = SixPerEmSpace++class AsSixPerEmSpace a where+ _SixPerEmSpace :: Prism' a SixPerEmSpace+ _SixPerEmSpace' :: a+ _SixPerEmSpace' = _SixPerEmSpace # SixPerEmSpace++instance AsSixPerEmSpace SixPerEmSpace where+ _SixPerEmSpace = id++instance AsSixPerEmSpace () where+ _SixPerEmSpace =+ prism'+ (\SixPerEmSpace -> ())+ (\() -> Just SixPerEmSpace)++instance AsSixPerEmSpace Char where+ _SixPerEmSpace =+ prism'+ (\SixPerEmSpace -> '\8198')+ (\case+ '\8198' -> Just SixPerEmSpace+ _ -> Nothing+ )++instance AsSixPerEmSpace Int where+ _SixPerEmSpace =+ prism'+ (\SixPerEmSpace -> 8198)+ (\case+ 8198 -> Just SixPerEmSpace+ _ -> Nothing+ )++instance AsSixPerEmSpace Integer where+ _SixPerEmSpace =+ prism'+ (\SixPerEmSpace -> 8198)+ (\case+ 8198 -> Just SixPerEmSpace+ _ -> Nothing+ )++parseSixPerEmSpace ::+ CharParsing p =>+ p SixPerEmSpace+parseSixPerEmSpace =+ SixPerEmSpace <$ satisfy (== '\8198') <?> "six per em space character"++data FigureSpace = FigureSpace+ deriving (Eq, Ord, Show, Generic)++class HasFigureSpace a where+ figureSpace :: Lens' a FigureSpace++instance HasFigureSpace FigureSpace where+ figureSpace = id++instance HasFigureSpace () where+ figureSpace f x =+ fmap (\FigureSpace -> x) (f FigureSpace)++instance Semigroup FigureSpace where+ FigureSpace <> FigureSpace = FigureSpace++instance Monoid FigureSpace where+ mempty = FigureSpace++class AsFigureSpace a where+ _FigureSpace :: Prism' a FigureSpace+ _FigureSpace' :: a+ _FigureSpace' = _FigureSpace # FigureSpace++instance AsFigureSpace FigureSpace where+ _FigureSpace = id++instance AsFigureSpace () where+ _FigureSpace =+ prism'+ (\FigureSpace -> ())+ (\() -> Just FigureSpace)++instance AsFigureSpace Char where+ _FigureSpace =+ prism'+ (\FigureSpace -> '\8199')+ (\case+ '\8199' -> Just FigureSpace+ _ -> Nothing+ )++instance AsFigureSpace Int where+ _FigureSpace =+ prism'+ (\FigureSpace -> 8199)+ (\case+ 8199 -> Just FigureSpace+ _ -> Nothing+ )++instance AsFigureSpace Integer where+ _FigureSpace =+ prism'+ (\FigureSpace -> 8199)+ (\case+ 8199 -> Just FigureSpace+ _ -> Nothing+ )++parseFigureSpace ::+ CharParsing p =>+ p FigureSpace+parseFigureSpace =+ FigureSpace <$ satisfy (== '\8199') <?> "figure space character"++data PunctuationSpace = PunctuationSpace+ deriving (Eq, Ord, Show, Generic)++class HasPunctuationSpace a where+ punctuationSpace :: Lens' a PunctuationSpace++instance HasPunctuationSpace PunctuationSpace where+ punctuationSpace = id++instance HasPunctuationSpace () where+ punctuationSpace f x =+ fmap (\PunctuationSpace -> x) (f PunctuationSpace)++instance Semigroup PunctuationSpace where+ PunctuationSpace <> PunctuationSpace = PunctuationSpace++instance Monoid PunctuationSpace where+ mempty = PunctuationSpace++class AsPunctuationSpace a where+ _PunctuationSpace :: Prism' a PunctuationSpace+ _PunctuationSpace' :: a+ _PunctuationSpace' = _PunctuationSpace # PunctuationSpace++instance AsPunctuationSpace PunctuationSpace where+ _PunctuationSpace = id++instance AsPunctuationSpace () where+ _PunctuationSpace =+ prism'+ (\PunctuationSpace -> ())+ (\() -> Just PunctuationSpace)++instance AsPunctuationSpace Char where+ _PunctuationSpace =+ prism'+ (\PunctuationSpace -> '\8200')+ (\case+ '\8200' -> Just PunctuationSpace+ _ -> Nothing+ )++instance AsPunctuationSpace Int where+ _PunctuationSpace =+ prism'+ (\PunctuationSpace -> 8200)+ (\case+ 8200 -> Just PunctuationSpace+ _ -> Nothing+ )++instance AsPunctuationSpace Integer where+ _PunctuationSpace =+ prism'+ (\PunctuationSpace -> 8200)+ (\case+ 8200 -> Just PunctuationSpace+ _ -> Nothing+ )++parsePunctuationSpace ::+ CharParsing p =>+ p PunctuationSpace+parsePunctuationSpace =+ PunctuationSpace <$ satisfy (== '\8200') <?> "punctuation space character"++data ThinSpace = ThinSpace+ deriving (Eq, Ord, Show, Generic)++class HasThinSpace a where+ thinSpace :: Lens' a ThinSpace++instance HasThinSpace ThinSpace where+ thinSpace = id++instance HasThinSpace () where+ thinSpace f x =+ fmap (\ThinSpace -> x) (f ThinSpace)++instance Semigroup ThinSpace where+ ThinSpace <> ThinSpace = ThinSpace++instance Monoid ThinSpace where+ mempty = ThinSpace++class AsThinSpace a where+ _ThinSpace :: Prism' a ThinSpace+ _ThinSpace' :: a+ _ThinSpace' = _ThinSpace # ThinSpace++instance AsThinSpace ThinSpace where+ _ThinSpace = id++instance AsThinSpace () where+ _ThinSpace =+ prism'+ (\ThinSpace -> ())+ (\() -> Just ThinSpace)++instance AsThinSpace Char where+ _ThinSpace =+ prism'+ (\ThinSpace -> '\8201')+ (\case+ '\8201' -> Just ThinSpace+ _ -> Nothing+ )++instance AsThinSpace Int where+ _ThinSpace =+ prism'+ (\ThinSpace -> 8201)+ (\case+ 8201 -> Just ThinSpace+ _ -> Nothing+ )++instance AsThinSpace Integer where+ _ThinSpace =+ prism'+ (\ThinSpace -> 8201)+ (\case+ 8201 -> Just ThinSpace+ _ -> Nothing+ )++parseThinSpace ::+ CharParsing p =>+ p ThinSpace+parseThinSpace =+ ThinSpace <$ satisfy (== '\8201') <?> "thin space character"++data HairSpace = HairSpace+ deriving (Eq, Ord, Show, Generic)++class HasHairSpace a where+ hairSpace :: Lens' a HairSpace++instance HasHairSpace HairSpace where+ hairSpace = id++instance HasHairSpace () where+ hairSpace f x =+ fmap (\HairSpace -> x) (f HairSpace)++instance Semigroup HairSpace where+ HairSpace <> HairSpace = HairSpace++instance Monoid HairSpace where+ mempty = HairSpace++class AsHairSpace a where+ _HairSpace :: Prism' a HairSpace+ _HairSpace' :: a+ _HairSpace' = _HairSpace # HairSpace++instance AsHairSpace HairSpace where+ _HairSpace = id++instance AsHairSpace () where+ _HairSpace =+ prism'+ (\HairSpace -> ())+ (\() -> Just HairSpace)++instance AsHairSpace Char where+ _HairSpace =+ prism'+ (\HairSpace -> '\8202')+ (\case+ '\8202' -> Just HairSpace+ _ -> Nothing+ )++instance AsHairSpace Int where+ _HairSpace =+ prism'+ (\HairSpace -> 8202)+ (\case+ 8202 -> Just HairSpace+ _ -> Nothing+ )++instance AsHairSpace Integer where+ _HairSpace =+ prism'+ (\HairSpace -> 8202)+ (\case+ 8202 -> Just HairSpace+ _ -> Nothing+ )++parseHairSpace ::+ CharParsing p =>+ p HairSpace+parseHairSpace =+ HairSpace <$ satisfy (== '\8202') <?> "hair space character"++data NarrowNoBreakSpace = NarrowNoBreakSpace+ deriving (Eq, Ord, Show, Generic)++class HasNarrowNoBreakSpace a where+ narrowNoBreakSpace :: Lens' a NarrowNoBreakSpace++instance HasNarrowNoBreakSpace NarrowNoBreakSpace where+ narrowNoBreakSpace = id++instance HasNarrowNoBreakSpace () where+ narrowNoBreakSpace f x =+ fmap (\NarrowNoBreakSpace -> x) (f NarrowNoBreakSpace)++instance Semigroup NarrowNoBreakSpace where+ NarrowNoBreakSpace <> NarrowNoBreakSpace = NarrowNoBreakSpace++instance Monoid NarrowNoBreakSpace where+ mempty = NarrowNoBreakSpace++class AsNarrowNoBreakSpace a where+ _NarrowNoBreakSpace :: Prism' a NarrowNoBreakSpace+ _NarrowNoBreakSpace' :: a+ _NarrowNoBreakSpace' = _NarrowNoBreakSpace # NarrowNoBreakSpace++instance AsNarrowNoBreakSpace NarrowNoBreakSpace where+ _NarrowNoBreakSpace = id++instance AsNarrowNoBreakSpace () where+ _NarrowNoBreakSpace =+ prism'+ (\NarrowNoBreakSpace -> ())+ (\() -> Just NarrowNoBreakSpace)++instance AsNarrowNoBreakSpace Char where+ _NarrowNoBreakSpace =+ prism'+ (\NarrowNoBreakSpace -> '\8239')+ (\case+ '\8239' -> Just NarrowNoBreakSpace+ _ -> Nothing+ )++instance AsNarrowNoBreakSpace Int where+ _NarrowNoBreakSpace =+ prism'+ (\NarrowNoBreakSpace -> 8239)+ (\case+ 8239 -> Just NarrowNoBreakSpace+ _ -> Nothing+ )++instance AsNarrowNoBreakSpace Integer where+ _NarrowNoBreakSpace =+ prism'+ (\NarrowNoBreakSpace -> 8239)+ (\case+ 8239 -> Just NarrowNoBreakSpace+ _ -> Nothing+ )++parseNarrowNoBreakSpace ::+ CharParsing p =>+ p NarrowNoBreakSpace+parseNarrowNoBreakSpace =+ NarrowNoBreakSpace <$ satisfy (== '\8239') <?> "narrow no break space character"++data MediumMathematicalSpace = MediumMathematicalSpace+ deriving (Eq, Ord, Show, Generic)++class HasMediumMathematicalSpace a where+ mediumMathematicalSpace :: Lens' a MediumMathematicalSpace++instance HasMediumMathematicalSpace MediumMathematicalSpace where+ mediumMathematicalSpace = id++instance HasMediumMathematicalSpace () where+ mediumMathematicalSpace f x =+ fmap (\MediumMathematicalSpace -> x) (f MediumMathematicalSpace)++instance Semigroup MediumMathematicalSpace where+ MediumMathematicalSpace <> MediumMathematicalSpace = MediumMathematicalSpace++instance Monoid MediumMathematicalSpace where+ mempty = MediumMathematicalSpace++class AsMediumMathematicalSpace a where+ _MediumMathematicalSpace :: Prism' a MediumMathematicalSpace+ _MediumMathematicalSpace' :: a+ _MediumMathematicalSpace' = _MediumMathematicalSpace # MediumMathematicalSpace++instance AsMediumMathematicalSpace MediumMathematicalSpace where+ _MediumMathematicalSpace = id++instance AsMediumMathematicalSpace () where+ _MediumMathematicalSpace =+ prism'+ (\MediumMathematicalSpace -> ())+ (\() -> Just MediumMathematicalSpace)++instance AsMediumMathematicalSpace Char where+ _MediumMathematicalSpace =+ prism'+ (\MediumMathematicalSpace -> '\8287')+ (\case+ '\8287' -> Just MediumMathematicalSpace+ _ -> Nothing+ )++instance AsMediumMathematicalSpace Int where+ _MediumMathematicalSpace =+ prism'+ (\MediumMathematicalSpace -> 8287)+ (\case+ 8287 -> Just MediumMathematicalSpace+ _ -> Nothing+ )++instance AsMediumMathematicalSpace Integer where+ _MediumMathematicalSpace =+ prism'+ (\MediumMathematicalSpace -> 8287)+ (\case+ 8287 -> Just MediumMathematicalSpace+ _ -> Nothing+ )++parseMediumMathematicalSpace ::+ CharParsing p =>+ p MediumMathematicalSpace+parseMediumMathematicalSpace =+ MediumMathematicalSpace <$ satisfy (== '\8287') <?> "medium mathematical space character"++data IdeographicSpace = IdeographicSpace+ deriving (Eq, Ord, Show, Generic)++class HasIdeographicSpace a where+ ideographicSpace :: Lens' a IdeographicSpace++instance HasIdeographicSpace IdeographicSpace where+ ideographicSpace = id++instance HasIdeographicSpace () where+ ideographicSpace f x =+ fmap (\IdeographicSpace -> x) (f IdeographicSpace)++instance Semigroup IdeographicSpace where+ IdeographicSpace <> IdeographicSpace = IdeographicSpace++instance Monoid IdeographicSpace where+ mempty = IdeographicSpace++class AsIdeographicSpace a where+ _IdeographicSpace :: Prism' a IdeographicSpace+ _IdeographicSpace' :: a+ _IdeographicSpace' = _IdeographicSpace # IdeographicSpace++instance AsIdeographicSpace IdeographicSpace where+ _IdeographicSpace = id++instance AsIdeographicSpace () where+ _IdeographicSpace =+ prism'+ (\IdeographicSpace -> ())+ (\() -> Just IdeographicSpace)++instance AsIdeographicSpace Char where+ _IdeographicSpace =+ prism'+ (\IdeographicSpace -> '\12288')+ (\case+ '\12288' -> Just IdeographicSpace+ _ -> Nothing+ )++instance AsIdeographicSpace Int where+ _IdeographicSpace =+ prism'+ (\IdeographicSpace -> 12288)+ (\case+ 12288 -> Just IdeographicSpace+ _ -> Nothing+ )++instance AsIdeographicSpace Integer where+ _IdeographicSpace =+ prism'+ (\IdeographicSpace -> 12288)+ (\case+ 12288 -> Just IdeographicSpace+ _ -> Nothing+ )++parseIdeographicSpace ::+ CharParsing p =>+ p IdeographicSpace+parseIdeographicSpace =+ IdeographicSpace <$ satisfy (== '\12288') <?> "ideographic space character"++data SpaceChar =+ HorizontalTab_+ | LineFeed_+ | VerticalTab_+ | FormFeed_+ | CarriageReturn_+ | Whitespace_+ | NoBreakSpace_+ | OghamSpaceMark_+ | EnQuad_+ | EmQuad_+ | EnSpace_+ | EmSpace_+ | ThreePerEmSpace_+ | FourPerEmSpace_+ | SixPerEmSpace_+ | FigureSpace_+ | PunctuationSpace_+ | ThinSpace_+ | HairSpace_+ | NarrowNoBreakSpace_+ | MediumMathematicalSpace_+ | IdeographicSpace_+ deriving (Eq, Ord, Show, Generic)++class HasSpaceChar a where+ spaceChar :: Lens' a SpaceChar++instance HasSpaceChar SpaceChar where+ spaceChar = id++class AsSpaceChar a where+ _SpaceChar :: Prism' a SpaceChar++instance AsSpaceChar SpaceChar where+ _SpaceChar = id++parseSpaceChar ::+ CharParsing p =>+ p SpaceChar+parseSpaceChar =+ asum [+ HorizontalTab_ <$ parseHorizontalTab+ , LineFeed_ <$ parseLineFeed+ , VerticalTab_ <$ parseVerticalTab+ , FormFeed_ <$ parseFormFeed+ , CarriageReturn_ <$ parseCarriageReturn+ , Whitespace_ <$ parseWhitespace+ , NoBreakSpace_ <$ parseNoBreakSpace+ , OghamSpaceMark_ <$ parseOghamSpaceMark+ , EnQuad_ <$ parseEnQuad+ , EmQuad_ <$ parseEmQuad+ , EnSpace_ <$ parseEnSpace+ , EmSpace_ <$ parseEmSpace+ , ThreePerEmSpace_ <$ parseThreePerEmSpace+ , FourPerEmSpace_ <$ parseFourPerEmSpace+ , SixPerEmSpace_ <$ parseSixPerEmSpace+ , FigureSpace_ <$ parseFigureSpace+ , PunctuationSpace_ <$ parsePunctuationSpace+ , ThinSpace_ <$ parseThinSpace+ , HairSpace_ <$ parseHairSpace+ , NarrowNoBreakSpace_ <$ parseNarrowNoBreakSpace+ , MediumMathematicalSpace_ <$ parseMediumMathematicalSpace+ , IdeographicSpace_ <$ parseIdeographicSpace+ ]++instance AsHorizontalTab SpaceChar where+ _HorizontalTab =+ prism'+ (\HorizontalTab -> HorizontalTab_)+ (\case+ HorizontalTab_ -> Just HorizontalTab+ _ -> Nothing+ )++instance AsLineFeed SpaceChar where+ _LineFeed =+ prism'+ (\LineFeed -> LineFeed_)+ (\case+ LineFeed_ -> Just LineFeed+ _ -> Nothing+ )++instance AsVerticalTab SpaceChar where+ _VerticalTab =+ prism'+ (\VerticalTab -> VerticalTab_)+ (\case+ VerticalTab_ -> Just VerticalTab+ _ -> Nothing+ )++instance AsFormFeed SpaceChar where+ _FormFeed =+ prism'+ (\FormFeed -> FormFeed_)+ (\case+ FormFeed_ -> Just FormFeed+ _ -> Nothing+ )++instance AsCarriageReturn SpaceChar where+ _CarriageReturn =+ prism'+ (\CarriageReturn -> CarriageReturn_)+ (\case+ CarriageReturn_ -> Just CarriageReturn+ _ -> Nothing+ )++instance AsWhitespace SpaceChar where+ _Whitespace =+ prism'+ (\Whitespace -> Whitespace_)+ (\case+ Whitespace_ -> Just Whitespace+ _ -> Nothing+ )++instance AsNoBreakSpace SpaceChar where+ _NoBreakSpace =+ prism'+ (\NoBreakSpace -> NoBreakSpace_)+ (\case+ NoBreakSpace_ -> Just NoBreakSpace+ _ -> Nothing+ )++instance AsOghamSpaceMark SpaceChar where+ _OghamSpaceMark =+ prism'+ (\OghamSpaceMark -> OghamSpaceMark_)+ (\case+ OghamSpaceMark_ -> Just OghamSpaceMark+ _ -> Nothing+ )++instance AsEnQuad SpaceChar where+ _EnQuad =+ prism'+ (\EnQuad -> EnQuad_)+ (\case+ EnQuad_ -> Just EnQuad+ _ -> Nothing+ )++instance AsEmQuad SpaceChar where+ _EmQuad =+ prism'+ (\EmQuad -> EmQuad_)+ (\case+ EmQuad_ -> Just EmQuad+ _ -> Nothing+ )++instance AsEnSpace SpaceChar where+ _EnSpace =+ prism'+ (\EnSpace -> EnSpace_)+ (\case+ EnSpace_ -> Just EnSpace+ _ -> Nothing+ )++instance AsEmSpace SpaceChar where+ _EmSpace =+ prism'+ (\EmSpace -> EmSpace_)+ (\case+ EmSpace_ -> Just EmSpace+ _ -> Nothing+ )++instance AsThreePerEmSpace SpaceChar where+ _ThreePerEmSpace =+ prism'+ (\ThreePerEmSpace -> ThreePerEmSpace_)+ (\case+ ThreePerEmSpace_ -> Just ThreePerEmSpace+ _ -> Nothing+ )++instance AsFourPerEmSpace SpaceChar where+ _FourPerEmSpace =+ prism'+ (\FourPerEmSpace -> FourPerEmSpace_)+ (\case+ FourPerEmSpace_ -> Just FourPerEmSpace+ _ -> Nothing+ )++instance AsSixPerEmSpace SpaceChar where+ _SixPerEmSpace =+ prism'+ (\SixPerEmSpace -> SixPerEmSpace_)+ (\case+ SixPerEmSpace_ -> Just SixPerEmSpace+ _ -> Nothing+ )++instance AsFigureSpace SpaceChar where+ _FigureSpace =+ prism'+ (\FigureSpace -> FigureSpace_)+ (\case+ FigureSpace_ -> Just FigureSpace+ _ -> Nothing+ )++instance AsPunctuationSpace SpaceChar where+ _PunctuationSpace =+ prism'+ (\PunctuationSpace -> PunctuationSpace_)+ (\case+ PunctuationSpace_ -> Just PunctuationSpace+ _ -> Nothing+ )++instance AsThinSpace SpaceChar where+ _ThinSpace =+ prism'+ (\ThinSpace -> ThinSpace_)+ (\case+ ThinSpace_ -> Just ThinSpace+ _ -> Nothing+ )++instance AsHairSpace SpaceChar where+ _HairSpace =+ prism'+ (\HairSpace -> HairSpace_)+ (\case+ HairSpace_ -> Just HairSpace+ _ -> Nothing+ )++instance AsNarrowNoBreakSpace SpaceChar where+ _NarrowNoBreakSpace =+ prism'+ (\NarrowNoBreakSpace -> NarrowNoBreakSpace_)+ (\case+ NarrowNoBreakSpace_ -> Just NarrowNoBreakSpace+ _ -> Nothing+ )++instance AsMediumMathematicalSpace SpaceChar where+ _MediumMathematicalSpace =+ prism'+ (\MediumMathematicalSpace -> MediumMathematicalSpace_)+ (\case+ MediumMathematicalSpace_ -> Just MediumMathematicalSpace+ _ -> Nothing+ )++instance AsIdeographicSpace SpaceChar where+ _IdeographicSpace =+ prism'+ (\IdeographicSpace -> IdeographicSpace_)+ (\case+ IdeographicSpace_ -> Just IdeographicSpace+ _ -> Nothing+ )++data IsoLatin1 =+ HorizontalTab__+ | LineFeed__+ | FormFeed__+ | CarriageReturn__+ | Whitespace__+ deriving (Eq, Ord, Show, Generic)++class HasIsoLatin1 a where+ isoLatin1 :: Lens' a IsoLatin1++instance HasIsoLatin1 IsoLatin1 where+ isoLatin1 = id++class AsIsoLatin1 a where+ _IsoLatin1 :: Prism' a IsoLatin1++instance AsIsoLatin1 IsoLatin1 where+ _IsoLatin1 = id++parseIsoLatin1 ::+ CharParsing p =>+ p IsoLatin1+parseIsoLatin1 =+ asum [+ HorizontalTab__ <$ parseHorizontalTab+ , LineFeed__ <$ parseLineFeed+ , FormFeed__ <$ parseFormFeed+ , CarriageReturn__ <$ parseCarriageReturn+ , Whitespace__ <$ parseWhitespace+ ]++instance AsHorizontalTab IsoLatin1 where+ _HorizontalTab =+ prism'+ (\HorizontalTab -> HorizontalTab__)+ (\case+ HorizontalTab__ -> Just HorizontalTab+ _ -> Nothing+ )++instance AsLineFeed IsoLatin1 where+ _LineFeed =+ prism'+ (\LineFeed -> LineFeed__)+ (\case+ LineFeed__ -> Just LineFeed+ _ -> Nothing+ )++instance AsFormFeed IsoLatin1 where+ _FormFeed =+ prism'+ (\FormFeed -> FormFeed__)+ (\case+ FormFeed__ -> Just FormFeed+ _ -> Nothing+ )++instance AsCarriageReturn IsoLatin1 where+ _CarriageReturn =+ prism'+ (\CarriageReturn -> CarriageReturn__)+ (\case+ CarriageReturn__ -> Just CarriageReturn+ _ -> Nothing+ )++instance AsWhitespace IsoLatin1 where+ _Whitespace =+ prism'+ (\Whitespace -> Whitespace__)+ (\case+ Whitespace__ -> Just Whitespace+ _ -> Nothing+ )