{-# OPTIONS_GHC -Wno-orphans #-}
module Generics.Diff.Special.List
( ListDiffError (..)
, diffListWith
)
where
import Data.Function (on)
import qualified Data.List.NonEmpty as NE
import Generics.Diff.Class
import Generics.Diff.Render
import Generics.Diff.Type
instance (Diff a) => SpecialDiff (NE.NonEmpty a) where
type SpecialDiffError (NE.NonEmpty a) = ListDiffError a
specialDiff :: NonEmpty a -> NonEmpty a -> Maybe (SpecialDiffError (NonEmpty a))
specialDiff = (a -> a -> DiffResult a) -> [a] -> [a] -> Maybe (ListDiffError a)
forall a.
(a -> a -> DiffResult a) -> [a] -> [a] -> Maybe (ListDiffError a)
diffListWith a -> a -> DiffResult a
forall a. Diff a => a -> a -> DiffResult a
diff ([a] -> [a] -> Maybe (ListDiffError a))
-> (NonEmpty a -> [a])
-> NonEmpty a
-> NonEmpty a
-> Maybe (ListDiffError a)
forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c
`on` NonEmpty a -> [a]
forall a. NonEmpty a -> [a]
NE.toList
renderSpecialDiffError :: SpecialDiffError (NonEmpty a) -> Doc
renderSpecialDiffError = Builder -> ListDiffError a -> Doc
forall a. Builder -> ListDiffError a -> Doc
listDiffErrorDoc Builder
"non-empty list"