{-# LANGUAGE FlexibleInstances #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Data.Validity.CaseInsensitive where
import Data.CaseInsensitive (CI)
import qualified Data.CaseInsensitive as CI
import Data.Validity
instance (Validity a, Eq a, CI.FoldCase a) => Validity (CI a) where
validate :: CI a -> Validation
validate CI a
ci =
[Validation] -> Validation
forall a. Monoid a => [a] -> a
mconcat
[ String -> a -> Validation
forall a. Validity a => String -> a -> Validation
delve String
"original" (a -> Validation) -> a -> Validation
forall a b. (a -> b) -> a -> b
$ CI a -> a
forall s. CI s -> s
CI.original CI a
ci,
String -> a -> Validation
forall a. Validity a => String -> a -> Validation
delve String
"foldedCase" (a -> Validation) -> a -> Validation
forall a b. (a -> b) -> a -> b
$ CI a -> a
forall s. CI s -> s
CI.foldedCase CI a
ci,
String -> Bool -> Validation
declare String
"The foldedCase is indeed folded correctly" (Bool -> Validation) -> Bool -> Validation
forall a b. (a -> b) -> a -> b
$
CI a -> a
forall s. CI s -> s
CI.foldedCase CI a
ci a -> a -> Bool
forall a. Eq a => a -> a -> Bool
== a -> a
forall s. FoldCase s => s -> s
CI.foldCase (CI a -> a
forall s. CI s -> s
CI.original CI a
ci)
]