{-# OPTIONS_GHC -Wall #-}
{-# LANGUAGE LambdaCase #-}
module Data.SemanticVersion.IdentifierCharacter where
import Control.Applicative
import Control.Lens
import Data.Char.Alpha
import Data.Digit
import Data.SemanticVersion.NonDigit
import Text.Parser.Char
data IdentifierCharacter =
IdentifierCharacterDigit DecDigit
| IdentifierCharacterNonDigit NonDigit
deriving (IdentifierCharacter -> IdentifierCharacter -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: IdentifierCharacter -> IdentifierCharacter -> Bool
$c/= :: IdentifierCharacter -> IdentifierCharacter -> Bool
== :: IdentifierCharacter -> IdentifierCharacter -> Bool
$c== :: IdentifierCharacter -> IdentifierCharacter -> Bool
Eq, Int -> IdentifierCharacter -> ShowS
[IdentifierCharacter] -> ShowS
IdentifierCharacter -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [IdentifierCharacter] -> ShowS
$cshowList :: [IdentifierCharacter] -> ShowS
show :: IdentifierCharacter -> String
$cshow :: IdentifierCharacter -> String
showsPrec :: Int -> IdentifierCharacter -> ShowS
$cshowsPrec :: Int -> IdentifierCharacter -> ShowS
Show)
class HasIdentifierCharacter a where
identifierCharacter ::
Lens' a IdentifierCharacter
instance HasIdentifierCharacter IdentifierCharacter where
identifierCharacter :: Lens' IdentifierCharacter IdentifierCharacter
identifierCharacter =
forall a. a -> a
id
class AsIdentifierCharacter a where
_IdentifierCharacter ::
Prism' a IdentifierCharacter
_IdentifierCharacterDigit ::
Prism' a DecDigit
_IdentifierCharacterDigit =
forall a. AsIdentifierCharacter a => Prism' a IdentifierCharacter
_IdentifierCharacter forall b c a. (b -> c) -> (a -> b) -> a -> c
.
forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
prism'
DecDigit -> IdentifierCharacter
IdentifierCharacterDigit
(\case
IdentifierCharacterDigit DecDigit
a ->
forall a. a -> Maybe a
Just DecDigit
a
IdentifierCharacter
_ ->
forall a. Maybe a
Nothing)
instance AsIdentifierCharacter IdentifierCharacter where
_IdentifierCharacter :: Prism' IdentifierCharacter IdentifierCharacter
_IdentifierCharacter =
forall a. a -> a
id
instance AsNonDigit IdentifierCharacter where
_NonDigit :: Prism' IdentifierCharacter NonDigit
_NonDigit =
forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
prism'
NonDigit -> IdentifierCharacter
IdentifierCharacterNonDigit
(\case
IdentifierCharacterNonDigit NonDigit
a ->
forall a. a -> Maybe a
Just NonDigit
a
IdentifierCharacter
_ ->
forall a. Maybe a
Nothing)
instance CA IdentifierCharacter where _A' :: Prism' IdentifierCharacter ()
_A' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CA x => Prism' x ()
_A'
instance CB IdentifierCharacter where _B' :: Prism' IdentifierCharacter ()
_B' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CB x => Prism' x ()
_B'
instance CC IdentifierCharacter where _C' :: Prism' IdentifierCharacter ()
_C' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CC x => Prism' x ()
_C'
instance CD IdentifierCharacter where _D' :: Prism' IdentifierCharacter ()
_D' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CD x => Prism' x ()
_D'
instance CE IdentifierCharacter where _E' :: Prism' IdentifierCharacter ()
_E' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CE x => Prism' x ()
_E'
instance CF IdentifierCharacter where _F' :: Prism' IdentifierCharacter ()
_F' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CF x => Prism' x ()
_F'
instance CG IdentifierCharacter where _G' :: Prism' IdentifierCharacter ()
_G' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CG x => Prism' x ()
_G'
instance CH IdentifierCharacter where _H' :: Prism' IdentifierCharacter ()
_H' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CH x => Prism' x ()
_H'
instance CI IdentifierCharacter where _I' :: Prism' IdentifierCharacter ()
_I' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CI x => Prism' x ()
_I'
instance CJ IdentifierCharacter where _J' :: Prism' IdentifierCharacter ()
_J' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CJ x => Prism' x ()
_J'
instance CK IdentifierCharacter where _K' :: Prism' IdentifierCharacter ()
_K' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CK x => Prism' x ()
_K'
instance CL IdentifierCharacter where _L' :: Prism' IdentifierCharacter ()
_L' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CL x => Prism' x ()
_L'
instance CM IdentifierCharacter where _M' :: Prism' IdentifierCharacter ()
_M' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CM x => Prism' x ()
_M'
instance CN IdentifierCharacter where _N' :: Prism' IdentifierCharacter ()
_N' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CN x => Prism' x ()
_N'
instance CO IdentifierCharacter where _O' :: Prism' IdentifierCharacter ()
_O' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CO x => Prism' x ()
_O'
instance CP IdentifierCharacter where _P' :: Prism' IdentifierCharacter ()
_P' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CP x => Prism' x ()
_P'
instance CQ IdentifierCharacter where _Q' :: Prism' IdentifierCharacter ()
_Q' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CQ x => Prism' x ()
_Q'
instance CR IdentifierCharacter where _R' :: Prism' IdentifierCharacter ()
_R' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CR x => Prism' x ()
_R'
instance CS IdentifierCharacter where _S' :: Prism' IdentifierCharacter ()
_S' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CS x => Prism' x ()
_S'
instance CT IdentifierCharacter where _T' :: Prism' IdentifierCharacter ()
_T' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CT x => Prism' x ()
_T'
instance CU IdentifierCharacter where _U' :: Prism' IdentifierCharacter ()
_U' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CU x => Prism' x ()
_U'
instance CV IdentifierCharacter where _V' :: Prism' IdentifierCharacter ()
_V' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CV x => Prism' x ()
_V'
instance CW IdentifierCharacter where _W' :: Prism' IdentifierCharacter ()
_W' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CW x => Prism' x ()
_W'
instance CX IdentifierCharacter where _X' :: Prism' IdentifierCharacter ()
_X' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CX x => Prism' x ()
_X'
instance CY IdentifierCharacter where _Y' :: Prism' IdentifierCharacter ()
_Y' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CY x => Prism' x ()
_Y'
instance CZ IdentifierCharacter where _Z' :: Prism' IdentifierCharacter ()
_Z' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. CZ x => Prism' x ()
_Z'
instance Ca IdentifierCharacter where _a' :: Prism' IdentifierCharacter ()
_a' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Ca x => Prism' x ()
_a'
instance Cb IdentifierCharacter where _b' :: Prism' IdentifierCharacter ()
_b' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cb x => Prism' x ()
_b'
instance Cc IdentifierCharacter where _c' :: Prism' IdentifierCharacter ()
_c' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cc x => Prism' x ()
_c'
instance Cd IdentifierCharacter where _d' :: Prism' IdentifierCharacter ()
_d' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cd x => Prism' x ()
_d'
instance Ce IdentifierCharacter where _e' :: Prism' IdentifierCharacter ()
_e' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Ce x => Prism' x ()
_e'
instance Cf IdentifierCharacter where _f' :: Prism' IdentifierCharacter ()
_f' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cf x => Prism' x ()
_f'
instance Cg IdentifierCharacter where _g' :: Prism' IdentifierCharacter ()
_g' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cg x => Prism' x ()
_g'
instance Ch IdentifierCharacter where _h' :: Prism' IdentifierCharacter ()
_h' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Ch x => Prism' x ()
_h'
instance Ci IdentifierCharacter where _i' :: Prism' IdentifierCharacter ()
_i' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Ci x => Prism' x ()
_i'
instance Cj IdentifierCharacter where _j' :: Prism' IdentifierCharacter ()
_j' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cj x => Prism' x ()
_j'
instance Ck IdentifierCharacter where _k' :: Prism' IdentifierCharacter ()
_k' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Ck x => Prism' x ()
_k'
instance Cl IdentifierCharacter where _l' :: Prism' IdentifierCharacter ()
_l' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cl x => Prism' x ()
_l'
instance Cm IdentifierCharacter where _m' :: Prism' IdentifierCharacter ()
_m' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cm x => Prism' x ()
_m'
instance Cn IdentifierCharacter where _n' :: Prism' IdentifierCharacter ()
_n' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cn x => Prism' x ()
_n'
instance Co IdentifierCharacter where _o' :: Prism' IdentifierCharacter ()
_o' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Co x => Prism' x ()
_o'
instance Cp IdentifierCharacter where _p' :: Prism' IdentifierCharacter ()
_p' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cp x => Prism' x ()
_p'
instance Cq IdentifierCharacter where _q' :: Prism' IdentifierCharacter ()
_q' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cq x => Prism' x ()
_q'
instance Cr IdentifierCharacter where _r' :: Prism' IdentifierCharacter ()
_r' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cr x => Prism' x ()
_r'
instance Cs IdentifierCharacter where _s' :: Prism' IdentifierCharacter ()
_s' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cs x => Prism' x ()
_s'
instance Ct IdentifierCharacter where _t' :: Prism' IdentifierCharacter ()
_t' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Ct x => Prism' x ()
_t'
instance Cu IdentifierCharacter where _u' :: Prism' IdentifierCharacter ()
_u' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cu x => Prism' x ()
_u'
instance Cv IdentifierCharacter where _v' :: Prism' IdentifierCharacter ()
_v' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cv x => Prism' x ()
_v'
instance Cw IdentifierCharacter where _w' :: Prism' IdentifierCharacter ()
_w' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cw x => Prism' x ()
_w'
instance Cx IdentifierCharacter where _x' :: Prism' IdentifierCharacter ()
_x' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cx x => Prism' x ()
_x'
instance Cy IdentifierCharacter where _y' :: Prism' IdentifierCharacter ()
_y' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cy x => Prism' x ()
_y'
instance Cz IdentifierCharacter where _z' :: Prism' IdentifierCharacter ()
_z' = forall a. AsNonDigit a => Prism' a NonDigit
_NonDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall x. Cz x => Prism' x ()
_z'
instance D0 IdentifierCharacter where d0 :: Prism' IdentifierCharacter ()
d0 = forall a. AsIdentifierCharacter a => Prism' a DecDigit
_IdentifierCharacterDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall d. D0 d => Prism' d ()
d0
instance D1 IdentifierCharacter where d1 :: Prism' IdentifierCharacter ()
d1 = forall a. AsIdentifierCharacter a => Prism' a DecDigit
_IdentifierCharacterDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall d. D1 d => Prism' d ()
d1
instance D2 IdentifierCharacter where d2 :: Prism' IdentifierCharacter ()
d2 = forall a. AsIdentifierCharacter a => Prism' a DecDigit
_IdentifierCharacterDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall d. D2 d => Prism' d ()
d2
instance D3 IdentifierCharacter where d3 :: Prism' IdentifierCharacter ()
d3 = forall a. AsIdentifierCharacter a => Prism' a DecDigit
_IdentifierCharacterDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall d. D3 d => Prism' d ()
d3
instance D4 IdentifierCharacter where d4 :: Prism' IdentifierCharacter ()
d4 = forall a. AsIdentifierCharacter a => Prism' a DecDigit
_IdentifierCharacterDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall d. D4 d => Prism' d ()
d4
instance D5 IdentifierCharacter where d5 :: Prism' IdentifierCharacter ()
d5 = forall a. AsIdentifierCharacter a => Prism' a DecDigit
_IdentifierCharacterDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall d. D5 d => Prism' d ()
d5
instance D6 IdentifierCharacter where d6 :: Prism' IdentifierCharacter ()
d6 = forall a. AsIdentifierCharacter a => Prism' a DecDigit
_IdentifierCharacterDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall d. D6 d => Prism' d ()
d6
instance D7 IdentifierCharacter where d7 :: Prism' IdentifierCharacter ()
d7 = forall a. AsIdentifierCharacter a => Prism' a DecDigit
_IdentifierCharacterDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall d. D7 d => Prism' d ()
d7
instance D8 IdentifierCharacter where d8 :: Prism' IdentifierCharacter ()
d8 = forall a. AsIdentifierCharacter a => Prism' a DecDigit
_IdentifierCharacterDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall d. D8 d => Prism' d ()
d8
instance D9 IdentifierCharacter where d9 :: Prism' IdentifierCharacter ()
d9 = forall a. AsIdentifierCharacter a => Prism' a DecDigit
_IdentifierCharacterDigit forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall d. D9 d => Prism' d ()
d9
parseIdentifierCharacter ::
CharParsing p =>
p IdentifierCharacter
parseIdentifierCharacter :: forall (p :: * -> *). CharParsing p => p IdentifierCharacter
parseIdentifierCharacter =
DecDigit -> IdentifierCharacter
IdentifierCharacterDigit forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall d (p :: * -> *). (Decimal d, CharParsing p) => p d
parseDecimal forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
NonDigit -> IdentifierCharacter
IdentifierCharacterNonDigit forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (p :: * -> *). CharParsing p => p NonDigit
parseNonDigit