{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE TypeFamilies #-}
module Data.Diff (
Diff(..)
, Patch(..), DiffLevel(..), MergeResult(..)
, merge, catLevels, normDL, dlPercent, percentDiff, prodPatchLevel
, compareDiff
, ShowPatch(..), putPatch
, DefaultDiff(..)
, Edit'(..), diff', patch', undiff'
, Swap(..), eqDiff, eqPatch
, EqDiff(..)
, gpatchLevel
, gmergePatch
, SeqPatchAt(..)
, SeqPatch
, listDiff
, listPatch
, listUndiff
, seqDiff
, seqPatch
, seqUndiff
, EqSeqPatch(..)
, eqListDiff
, eqListPatch
, eqListUndiff
, eqSeqDiff
, eqSeqPatch
, eqSeqUndiff
, LinesPatch(..)
, Lines(..)
, GPatch(..)
, gdiff
, gdiff'
, gpatch
, gundiff
, GPatchProd(..)
, gdiffProd
, gpatchProd
, gundiffProd
, SumDiff(..)
, CtrDiff(..)
, ValDiff(..)
, MapDiff(..)
) where
import Data.Diff.Internal
import Data.Diff.Internal.Generics
import Data.Diff.Internal.Map
import Data.Diff.Internal.Sequence
import qualified Text.PrettyPrint.ANSI.Leijen as PP
putPatch :: ShowPatch a => a -> IO ()
putPatch = PP.putDoc . showPatch