{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}

module Data.Text.CaseSensitivity where

import Control.DeepSeq (NFData)
import Data.Hashable (Hashable)
import GHC.Generics (Generic)
#if defined(HAS_AESON)
import Data.Aeson (FromJSON, ToJSON)
#endif
data CaseSensitivity
  = CaseSensitive
  | IgnoreCase
  deriving stock (CaseSensitivity -> CaseSensitivity -> Bool
(CaseSensitivity -> CaseSensitivity -> Bool)
-> (CaseSensitivity -> CaseSensitivity -> Bool)
-> Eq CaseSensitivity
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CaseSensitivity -> CaseSensitivity -> Bool
$c/= :: CaseSensitivity -> CaseSensitivity -> Bool
== :: CaseSensitivity -> CaseSensitivity -> Bool
$c== :: CaseSensitivity -> CaseSensitivity -> Bool
Eq, (forall x. CaseSensitivity -> Rep CaseSensitivity x)
-> (forall x. Rep CaseSensitivity x -> CaseSensitivity)
-> Generic CaseSensitivity
forall x. Rep CaseSensitivity x -> CaseSensitivity
forall x. CaseSensitivity -> Rep CaseSensitivity x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CaseSensitivity x -> CaseSensitivity
$cfrom :: forall x. CaseSensitivity -> Rep CaseSensitivity x
Generic, Int -> CaseSensitivity -> ShowS
[CaseSensitivity] -> ShowS
CaseSensitivity -> String
(Int -> CaseSensitivity -> ShowS)
-> (CaseSensitivity -> String)
-> ([CaseSensitivity] -> ShowS)
-> Show CaseSensitivity
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CaseSensitivity] -> ShowS
$cshowList :: [CaseSensitivity] -> ShowS
show :: CaseSensitivity -> String
$cshow :: CaseSensitivity -> String
showsPrec :: Int -> CaseSensitivity -> ShowS
$cshowsPrec :: Int -> CaseSensitivity -> ShowS
Show)
#if defined(HAS_AESON)
  deriving anyclass (Eq CaseSensitivity
Eq CaseSensitivity
-> (Int -> CaseSensitivity -> Int)
-> (CaseSensitivity -> Int)
-> Hashable CaseSensitivity
Int -> CaseSensitivity -> Int
CaseSensitivity -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: CaseSensitivity -> Int
$chash :: CaseSensitivity -> Int
hashWithSalt :: Int -> CaseSensitivity -> Int
$chashWithSalt :: Int -> CaseSensitivity -> Int
$cp1Hashable :: Eq CaseSensitivity
Hashable, CaseSensitivity -> ()
(CaseSensitivity -> ()) -> NFData CaseSensitivity
forall a. (a -> ()) -> NFData a
rnf :: CaseSensitivity -> ()
$crnf :: CaseSensitivity -> ()
NFData, Value -> Parser [CaseSensitivity]
Value -> Parser CaseSensitivity
(Value -> Parser CaseSensitivity)
-> (Value -> Parser [CaseSensitivity]) -> FromJSON CaseSensitivity
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [CaseSensitivity]
$cparseJSONList :: Value -> Parser [CaseSensitivity]
parseJSON :: Value -> Parser CaseSensitivity
$cparseJSON :: Value -> Parser CaseSensitivity
FromJSON, [CaseSensitivity] -> Encoding
[CaseSensitivity] -> Value
CaseSensitivity -> Encoding
CaseSensitivity -> Value
(CaseSensitivity -> Value)
-> (CaseSensitivity -> Encoding)
-> ([CaseSensitivity] -> Value)
-> ([CaseSensitivity] -> Encoding)
-> ToJSON CaseSensitivity
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [CaseSensitivity] -> Encoding
$ctoEncodingList :: [CaseSensitivity] -> Encoding
toJSONList :: [CaseSensitivity] -> Value
$ctoJSONList :: [CaseSensitivity] -> Value
toEncoding :: CaseSensitivity -> Encoding
$ctoEncoding :: CaseSensitivity -> Encoding
toJSON :: CaseSensitivity -> Value
$ctoJSON :: CaseSensitivity -> Value
ToJSON)
#else
  deriving anyclass (Hashable, NFData)
#endif