GeezerVison is showing github.com — fixes #193 - allow to parse copy commands from a diff · mockmotor/java-diff-utils@aff6bfe
File treeExpand file treeCollapse file tree Open diff view settings main/java/com/github/difflib/unifieddiff java/com/github/difflib/unifieddiff resources/com/github/difflib/unifieddiff
Expand file treeCollapse file tree Open diff view settings Collapse file Copy file name to clipboardExpand all lines: java-diff-utils/src/main/java/com/github/difflib/unifieddiff/UnifiedDiffFile.java +18Lines changed: 18 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -30,6 +30,8 @@ public final class UnifiedDiffFile { | 30 | 30 | private String toFile; | 31 | 31 | private String renameFrom; | 32 | 32 | private String renameTo; | | 33 | + private String copyFrom; | | 34 | + private String copyTo; | 33 | 35 | private String toTimestamp; | 34 | 36 | private String index; | 35 | 37 | private String newFileMode; | @@ -119,6 +121,22 @@ public void setRenameTo(String renameTo) { | 119 | 121 | this.renameTo = renameTo; | 120 | 122 | } | 121 | 123 |
| | 124 | + public String getCopyFrom() { | | 125 | + return copyFrom; | | 126 | + } | | 127 | + | | 128 | + public void setCopyFrom(String copyFrom) { | | 129 | + this.copyFrom = copyFrom; | | 130 | + } | | 131 | + | | 132 | + public String getCopyTo() { | | 133 | + return copyTo; | | 134 | + } | | 135 | + | | 136 | + public void setCopyTo(String copyTo) { | | 137 | + this.copyTo = copyTo; | | 138 | + } | | 139 | + | 122 | 140 | public static UnifiedDiffFile from(String fromFile, String toFile, Patch<String> patch) { | 123 | 141 | UnifiedDiffFile file = new UnifiedDiffFile(); | 124 | 142 | file.setFromFile(fromFile); | |
Collapse file Copy file name to clipboardExpand all lines: java-diff-utils/src/main/java/com/github/difflib/unifieddiff/UnifiedDiffReader.java +13Lines changed: 13 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -51,6 +51,9 @@ public final class UnifiedDiffReader { | 51 | 51 | private final UnifiedDiffLine TO_FILE = new UnifiedDiffLine(true, "^\\+\\+\\+\\s", this::processToFile); | 52 | 52 | private final UnifiedDiffLine RENAME_FROM = new UnifiedDiffLine(true, "^rename\\sfrom\\s(.+)$", this::processRenameFrom); | 53 | 53 | private final UnifiedDiffLine RENAME_TO = new UnifiedDiffLine(true, "^rename\\sto\\s(.+)$", this::processRenameTo); | | 54 | + | | 55 | + private final UnifiedDiffLine COPY_FROM = new UnifiedDiffLine(true, "^copy\\sfrom\\s(.+)$", this::processCopyFrom); | | 56 | + private final UnifiedDiffLine COPY_TO = new UnifiedDiffLine(true, "^copy\\sto\\s(.+)$", this::processCopyTo); | 54 | 57 |
| 55 | 58 | private final UnifiedDiffLine NEW_FILE_MODE = new UnifiedDiffLine(true, "^new\\sfile\\smode\\s(\\d+)", this::processNewFileMode); | 56 | 59 |
| @@ -103,6 +106,7 @@ private UnifiedDiff parse() throws IOException, UnifiedDiffParserException { | 103 | 106 | if (validLine(line, DIFF_COMMAND, SIMILARITY_INDEX, INDEX, | 104 | 107 | FROM_FILE, TO_FILE, | 105 | 108 | RENAME_FROM, RENAME_TO, | | 109 | + COPY_FROM, COPY_TO, | 106 | 110 | NEW_FILE_MODE, DELETED_FILE_MODE, | 107 | 111 | OLD_MODE, NEW_MODE, | 108 | 112 | BINARY_ADDED, BINARY_DELETED, | @@ -122,6 +126,7 @@ private UnifiedDiff parse() throws IOException, UnifiedDiffParserException { | 122 | 126 | if (!processLine(line, DIFF_COMMAND, SIMILARITY_INDEX, INDEX, | 123 | 127 | FROM_FILE, TO_FILE, | 124 | 128 | RENAME_FROM, RENAME_TO, | | 129 | + COPY_FROM, COPY_TO, | 125 | 130 | NEW_FILE_MODE, DELETED_FILE_MODE, | 126 | 131 | OLD_MODE, NEW_MODE, | 127 | 132 | BINARY_ADDED , BINARY_DELETED, | @@ -344,6 +349,14 @@ private void processRenameFrom(MatchResult match, String line) { | 344 | 349 | private void processRenameTo(MatchResult match, String line) { | 345 | 350 | actualFile.setRenameTo(match.group(1)); | 346 | 351 | } | | 352 | + | | 353 | + private void processCopyFrom(MatchResult match, String line) { | | 354 | + actualFile.setCopyFrom(match.group(1)); | | 355 | + } | | 356 | + | | 357 | + private void processCopyTo(MatchResult match, String line) { | | 358 | + actualFile.setCopyTo(match.group(1)); | | 359 | + } | 347 | 360 |
| 348 | 361 | private void processNewFileMode(MatchResult match, String line) { | 349 | 362 | //initFileIfNecessary(); | |
Collapse file Copy file name to clipboardExpand all lines: java-diff-utils/src/test/java/com/github/difflib/unifieddiff/UnifiedDiffReaderTest.java +11Lines changed: 11 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -435,4 +435,15 @@ public void testParseIssue182mode() throws IOException { | 435 | 435 | assertThat(file1.getOldMode()).isEqualTo("100644"); | 436 | 436 | assertThat(file1.getNewMode()).isEqualTo("100755"); | 437 | 437 | } | | 438 | + | | 439 | + @Test | | 440 | + public void testParseIssue193Copy() throws IOException { | | 441 | + UnifiedDiff diff = UnifiedDiffReader.parseUnifiedDiff( | | 442 | + UnifiedDiffReaderTest.class.getResourceAsStream("problem_diff_parsing_issue193.diff")); | | 443 | + | | 444 | + UnifiedDiffFile file1 = diff.getFiles().get(0); | | 445 | + | | 446 | + assertThat(file1.getCopyFrom()).isEqualTo("modules/configuration/config/web/pcf/account/AccountContactCV.pcf"); | | 447 | + assertThat(file1.getCopyTo()).isEqualTo("modules/configuration/config/web/pcf/account/AccountContactCV.default.pcf"); | | 448 | + } | 438 | 449 | } |
Collapse file Copy file name to clipboard +26Lines changed: 26 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 1 | +diff --git src://modules/configuration/config/web/pcf/account/AccountContactCV.pcf dst://modules/configuration/config/web/pcf/account/AccountContactCV.default.pcf | | 2 | +similarity index 99% | | 3 | +copy from modules/configuration/config/web/pcf/account/AccountContactCV.pcf | | 4 | +copy to modules/configuration/config/web/pcf/account/AccountContactCV.default.pcf | | 5 | +index 13efef5778..1a08b0befc 100644 | | 6 | +--- src://modules/configuration/config/web/pcf/account/AccountContactCV.pcf | | 7 | ++++ dst://modules/configuration/config/web/pcf/account/AccountContactCV.default.pcf | | 8 | +@@ -1,16 +1,17 @@ | | 9 | + <?xml version="1.0"?> | | 10 | + <PCF | | 11 | + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | | 12 | + xsi:noNamespaceSchemaLocation="../../../../../pcf.xsd"> | | 13 | + <CardViewPanel | | 14 | +- id="AccountContactCV"> | | 15 | ++ id="AccountContactCV" | | 16 | ++ mode="default"> | | 17 | + <Require | | 18 | + name="acctContact" | | 19 | + type="AccountContact"/> | | 20 | + <Require | | 21 | + name="showAddressTools" | | 22 | + type="boolean"/> | | 23 | + <Require | | 24 | + name="showRolesTab" | | 25 | + type="boolean"/> | | 26 | + <Variable |
|