-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | O(ND) diff algorithm in haskell. -- -- Implementation of the standard diff algorithm, and utilities for -- pretty printing. @package Diff @version 0.3.3 -- | This is an implementation of the O(ND) diff algorithm as described in -- "An O(ND) Difference Algorithm and Its Variations (1986)" -- http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927. -- It is O(mn) in space. The algorithm is the same one used by standared -- Unix diff. module Data.Algorithm.Diff -- | A value is either from the First list, the Second or -- from Both. Both contains both the left and right values, -- in case you are using a form of equality that doesn't check all data -- (for example, if you are using a newtype to only perform equality on -- side of a tuple). data Diff a First :: a -> Diff a Second :: a -> Diff a Both :: a -> a -> Diff a -- | Takes two lists and returns a list of differences between them. This -- is getDiffBy with == used as predicate. getDiff :: (Eq t) => [t] -> [t] -> [Diff t] -- | A form of getDiff with no Eq constraint. Instead, an -- equality predicate is taken as the first argument. getDiffBy :: (t -> t -> Bool) -> [t] -> [t] -> [Diff t] -- | Takes two lists and returns a list of differences between them, -- grouped into chunks. This is getGroupedDiffBy with == -- used as predicate. getGroupedDiff :: (Eq t) => [t] -> [t] -> [Diff [t]] getGroupedDiffBy :: (t -> t -> Bool) -> [t] -> [t] -> [Diff [t]] instance GHC.Classes.Eq Data.Algorithm.Diff.DL instance GHC.Show.Show Data.Algorithm.Diff.DL instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Algorithm.Diff.Diff a) instance GHC.Show.Show a => GHC.Show.Show (Data.Algorithm.Diff.Diff a) instance GHC.Classes.Eq Data.Algorithm.Diff.DI instance GHC.Show.Show Data.Algorithm.Diff.DI instance GHC.Classes.Ord Data.Algorithm.Diff.DL -- | Author : Stephan Wehr (wehrfactisresearch.com) and JP Moresmau -- (jpmoresmau.fr) -- -- Generates a string output that is similar to diff normal mode module Data.Algorithm.DiffOutput -- | Converts Diffs to DiffOperations diffToLineRanges :: [Diff [String]] -> [DiffOperation LineRange] -- | pretty print the differences. The output is similar to the output of -- the diff utility ppDiff :: [Diff [String]] -> String -- | pretty print of diff operations prettyDiffs :: [DiffOperation LineRange] -> Doc -- | Parse pretty printed Diffs as DiffOperations parsePrettyDiffs :: String -> [DiffOperation LineRange] -- | Line number alias type LineNo = Int -- | Line Range: start, end and contents data LineRange LineRange :: (LineNo, LineNo) -> [String] -> LineRange [lrNumbers] :: LineRange -> (LineNo, LineNo) [lrContents] :: LineRange -> [String] -- | Diff Operation representing changes to apply data DiffOperation a Deletion :: a -> LineNo -> DiffOperation a Addition :: a -> LineNo -> DiffOperation a Change :: a -> a -> DiffOperation a instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Algorithm.DiffOutput.DiffOperation a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Algorithm.DiffOutput.DiffOperation a) instance GHC.Read.Read a => GHC.Read.Read (Data.Algorithm.DiffOutput.DiffOperation a) instance GHC.Show.Show a => GHC.Show.Show (Data.Algorithm.DiffOutput.DiffOperation a) instance GHC.Classes.Ord Data.Algorithm.DiffOutput.LineRange instance GHC.Classes.Eq Data.Algorithm.DiffOutput.LineRange instance GHC.Read.Read Data.Algorithm.DiffOutput.LineRange instance GHC.Show.Show Data.Algorithm.DiffOutput.LineRange -- | Author : David Fox (ddssff at the email service from google) -- -- Generates a grouped diff with merged runs, and outputs them in the -- manner of diff -u module Data.Algorithm.DiffContext -- | Do a grouped diff and then split up the chunks into runs that contain -- differences surrounded by N lines of unchanged text. If there is less -- then 2N+1 lines of unchanged text between two changes, the runs are -- left merged. getContextDiff :: Eq a => Int -> [a] -> [a] -> ContextDiff a -- | Pretty print a ContextDiff in the manner of diff -u. prettyContextDiff :: Doc -> Doc -> (c -> Doc) -> ContextDiff c -> Doc