From 4f9928e4efeb3b96a994825e8db92faf5996cf2e Mon Sep 17 00:00:00 2001 From: "dm.naumenko@gmail.com" Date: Mon, 27 Dec 2010 21:30:46 +0000 Subject: [PATCH] add apply patch example --- test/examples/diffutils/ApplyPatch.java | 27 ++++++++++++++++++ .../examples/diffutils/ComputeDifference.java | 28 ++++--------------- test/examples/diffutils/Example.java | 23 +++++++++++++++ 3 files changed, 55 insertions(+), 23 deletions(-) create mode 100644 test/examples/diffutils/ApplyPatch.java create mode 100644 test/examples/diffutils/Example.java diff --git a/test/examples/diffutils/ApplyPatch.java b/test/examples/diffutils/ApplyPatch.java new file mode 100644 index 0000000..c1688ac --- /dev/null +++ b/test/examples/diffutils/ApplyPatch.java @@ -0,0 +1,27 @@ +package diffutils; + +import java.io.File; +import java.util.List; + +import difflib.DiffUtils; +import difflib.Patch; +import difflib.PatchFailedException; + +public class ApplyPatch extends Example { + static final String FS = File.separator; + static final String ORIGINAL = "test" + FS + "mocks" + FS + "issue10_base.txt"; + static final String PATCH = "test" + FS + "mocks" + FS + "issue10_patch.txt"; + + public static void main(String[] args) throws PatchFailedException { + List original = fileToLines(ORIGINAL); + List patched = fileToLines(PATCH); + + // At first, parse the unified diff file and get the patch + Patch patch = DiffUtils.parseUnifiedDiff(patched); + + // Then apply the computed patch to the given text + List result = DiffUtils.patch(original, patch); + System.out.println(result); + /// Or we can call patch.applyTo(original). There is no difference. + } +} diff --git a/test/examples/diffutils/ComputeDifference.java b/test/examples/diffutils/ComputeDifference.java index e866d81..b76e128 100644 --- a/test/examples/diffutils/ComputeDifference.java +++ b/test/examples/diffutils/ComputeDifference.java @@ -1,38 +1,20 @@ package diffutils; -import java.io.BufferedReader; import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.LinkedList; import java.util.List; import difflib.Delta; import difflib.DiffUtils; import difflib.Patch; -public class ComputeDifference { +public class ComputeDifference extends Example { static final String FS = File.separator; - static final String originalFilename = "test" + FS + "mocks" + FS + "original.txt"; - static final String revisedFilename = "test" + FS + "mocks" + FS + "revised.txt"; - - private static List fileToLines(String filename) { - List lines = new LinkedList(); - String line = ""; - try { - BufferedReader in = new BufferedReader(new FileReader(filename)); - while ((line = in.readLine()) != null) { - lines.add(line); - } - } catch (IOException e) { - e.printStackTrace(); - } - return lines; - } + static final String ORIGINAL = "test" + FS + "mocks" + FS + "original.txt"; + static final String RIVISED = "test" + FS + "mocks" + FS + "revised.txt"; public static void main(String[] args) { - List original = fileToLines(originalFilename); - List revised = fileToLines(revisedFilename); + List original = fileToLines(ORIGINAL); + List revised = fileToLines(RIVISED); // Compute diff. Get the Patch object. Patch is the container for computed deltas. Patch patch = DiffUtils.diff(original, revised); diff --git a/test/examples/diffutils/Example.java b/test/examples/diffutils/Example.java new file mode 100644 index 0000000..1e148e7 --- /dev/null +++ b/test/examples/diffutils/Example.java @@ -0,0 +1,23 @@ +package diffutils; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.LinkedList; +import java.util.List; + +public class Example { + public static List fileToLines(String filename) { + List lines = new LinkedList(); + String line = ""; + try { + BufferedReader in = new BufferedReader(new FileReader(filename)); + while ((line = in.readLine()) != null) { + lines.add(line); + } + } catch (IOException e) { + e.printStackTrace(); + } + return lines; + } +}