{-# OPTIONS_GHC -fno-warn-orphans #-} module Chez.Grater.Internal.CI.Orphans where import Chez.Grater.Internal.Prelude import Data.Aeson ( FromJSON, FromJSONKey, ToJSON, ToJSONKey, fromJSONKey, fromJSONKeyList, parseJSON, toJSON , toJSONKey, toJSONKeyList ) import Data.Functor.Contravariant (contramap) import qualified Data.CaseInsensitive as CI instance (CI.FoldCase a, FromJSON a) => FromJSON (CI a) where parseJSON :: Value -> Parser (CI a) parseJSON = (a -> CI a) -> Parser a -> Parser (CI a) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap a -> CI a forall s. FoldCase s => s -> CI s CI.mk (Parser a -> Parser (CI a)) -> (Value -> Parser a) -> Value -> Parser (CI a) forall b c a. (b -> c) -> (a -> b) -> a -> c . Value -> Parser a forall a. FromJSON a => Value -> Parser a parseJSON instance (CI.FoldCase a, FromJSONKey a) => FromJSONKey (CI a) where fromJSONKey :: FromJSONKeyFunction (CI a) fromJSONKey = a -> CI a forall s. FoldCase s => s -> CI s CI.mk (a -> CI a) -> FromJSONKeyFunction a -> FromJSONKeyFunction (CI a) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> FromJSONKeyFunction a forall a. FromJSONKey a => FromJSONKeyFunction a fromJSONKey fromJSONKeyList :: FromJSONKeyFunction [CI a] fromJSONKeyList = (a -> CI a) -> [a] -> [CI a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap a -> CI a forall s. FoldCase s => s -> CI s CI.mk ([a] -> [CI a]) -> FromJSONKeyFunction [a] -> FromJSONKeyFunction [CI a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> FromJSONKeyFunction [a] forall a. FromJSONKey a => FromJSONKeyFunction [a] fromJSONKeyList instance (ToJSON a) => ToJSON (CI a) where toJSON :: CI a -> Value toJSON = a -> Value forall a. ToJSON a => a -> Value toJSON (a -> Value) -> (CI a -> a) -> CI a -> Value forall b c a. (b -> c) -> (a -> b) -> a -> c . CI a -> a forall s. CI s -> s CI.original instance (ToJSONKey a) => ToJSONKey (CI a) where toJSONKey :: ToJSONKeyFunction (CI a) toJSONKey = (CI a -> a) -> ToJSONKeyFunction a -> ToJSONKeyFunction (CI a) forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a contramap CI a -> a forall s. CI s -> s CI.original ToJSONKeyFunction a forall a. ToJSONKey a => ToJSONKeyFunction a toJSONKey toJSONKeyList :: ToJSONKeyFunction [CI a] toJSONKeyList = ([CI a] -> [a]) -> ToJSONKeyFunction [a] -> ToJSONKeyFunction [CI a] forall (f :: * -> *) a b. Contravariant f => (a -> b) -> f b -> f a contramap ((CI a -> a) -> [CI a] -> [a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap CI a -> a forall s. CI s -> s CI.original) ToJSONKeyFunction [a] forall a. ToJSONKey a => ToJSONKeyFunction [a] toJSONKeyList