gdiff-th-0.1.0.2: src/Data/Generic/Diff/TH.hs
-- | This module exports the Template Haskell functions necessary
-- deriving gdiff GADTs and associated instances. Usage is pretty
-- straightforward.
--
-- @
--module Example where
--import "Data.Generic.Diff"
--import "Data.Generic.Diff.TH"
--import "System.Console.Terminfo.Color"
--import "Text.PrettyPrint.Free"
--import "System.Console.Terminfo.PrettyPrint"
--
--data Exp = Exp :+: Exp
-- | Exp :*: Exp
-- | B Integer
-- deriving(Show, Eq, Typeable)
--
--{- Make the GDiff apparatus -}
--makeGDiff ''Exp
--
--testA :: Exp
--testA = foldl1 (:+:) . map B $ [0..20]
--
--testB :: Exp
--testB = foldl1 (:+:) . map B $ [0..8] ++ [42] ++ [10..20]
--
--{- Make a type signature to help inference -}
--diffExp :: Type ExpFamily Exp => Exp -> Exp -> EditScript ExpFamily Exp Exp
--diffExp = diff
--
--diffAandB = showCompressed $ diffExp testA testB
--
--main = diffAandB
--
--{- Utility functions to show colored diffs -}
--showEdits :: forall (f :: * -> * -> *) txs tys.
-- EditScriptL f txs tys -> IO ()
--showEdits = display . pprEdits
--
--showCompressed :: Family f => EditScriptL f txs tys -> IO ()
--showCompressed = display . pprEdits . compress
--
--pprEdits :: EditScriptL f txs tys -> TermDoc
--pprEdits x = case x of
-- Cpy c d -> (text $ string c) <+> pprEdits d
-- CpyTree d -> text \" ... \" <+> pprEdits d
-- Del c d -> (with (Foreground Red) . text $ \"- \" ++ string c) <+> pprEdits d
-- Ins c d -> (with (Foreground Green) . text $ \"+ \" ++ string c) <+> pprEdits d
-- End -> line
-- @
--
-- Running the main function above would result in the following output
--
-- >>> main
-- :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: ... B + 42 - 9 ... ... ... ... ... ... ... ... ... ... ...
--
-- Except with pretty colors :).
module Data.Generic.Diff.TH(
-- * Main Creation Function
makeGDiff,
-- * Customizable Creation
makeGDiffWith,
defaultFamSuffix,
defaultConstructorRenamer,
defaultPrimitives,
ConstructorRenamer
) where
import Data.Generic.Diff.TH.Internal