| Copyright | (c) David Fox (2015) |
|---|---|
| License | BSD 3 Clause |
| Maintainer | s.clover@gmail.com |
| Stability | experimental |
| Portability | portable |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
Data.Algorithm.DiffContext
Description
Generates a grouped diff with merged runs, and outputs them in the manner of diff -u.
Synopsis
- type ContextDiff c = [Hunk c]
- type Hunk c = [Diff [c]]
- getContextDiff :: Eq a => Maybe ContextSize -> [a] -> [a] -> ContextDiff (Numbered a)
- prettyContextDiff :: Doc -> Doc -> (Numbered c -> Doc) -> ContextDiff (Numbered c) -> Doc
- prettyContextDiffOld :: Doc -> Doc -> (c -> Doc) -> ContextDiff c -> Doc
- getContextDiffNumbered :: Eq a => Maybe ContextSize -> [Numbered a] -> [Numbered a] -> ContextDiff (Numbered a)
- data Numbered a = Numbered Int a
- numbered :: [a] -> [Numbered a]
- unnumber :: Numbered a -> a
- unNumberContextDiff :: ContextDiff (Numbered a) -> ContextDiff a
Documentation
type ContextDiff c = [Hunk c] Source #
A diff consisting of disjoint Hunks.
Arguments
| :: Eq a | |
| => Maybe ContextSize | Context size. |
| -> [a] | |
| -> [a] | |
| -> ContextDiff (Numbered a) |
> let textA = ["a","b","c","d","e","f","g","h","i","j","k"] > let textB = ["a","b","d","e","f","g","h","i","j"] > let diff = getContextDiff (Just 2) textA textB > prettyContextDiff (text "file1") (text "file2") (text . unnumber) diff --- file1 +++ file2 @@ -1,5 +1,4 @@ a b -c d e @@ -9,3 +8,2 @@ i j -k
Arguments
| :: Doc | Document 1 name |
| -> Doc | Document 2 name |
| -> (Numbered c -> Doc) | Element pretty printer |
| -> ContextDiff (Numbered c) | |
| -> Doc |
Pretty print a ContextDiff in the manner of diff -u.
Arguments
| :: Doc | Document 1 name |
| -> Doc | Document 2 name |
| -> (c -> Doc) | Element pretty printer |
| -> ContextDiff c | |
| -> Doc |
Pretty print without line numbers.
getContextDiffNumbered Source #
Arguments
| :: Eq a | |
| => Maybe ContextSize | Context size. |
| -> [Numbered a] | |
| -> [Numbered a] | |
| -> ContextDiff (Numbered a) |
Create a diff of separate Hunks, each containing a sequence
of differing elements surrounded by common elements for context.
The context size determines when to merge adjacent hunks:
two hunks are merged when the number of common elements between them does not
exceed twice the context size. Furthermore, if contextSize is Nothing
a single hunk with the whole diff is produced.
Constructors
| Numbered Int a |
Instances
| Show a => Show (Numbered a) Source # | |
| Eq a => Eq (Numbered a) Source # | |
| Ord a => Ord (Numbered a) Source # | |
unNumberContextDiff :: ContextDiff (Numbered a) -> ContextDiff a Source #
If for some reason you need the line numbers stripped from the
result of getContextDiff for backwards compatibility.