Search in sources :

Example 6 with Chunk

use of difflib.Chunk in project Gargoyle by callakrsos.

the class DiffPathText method diffPathTest.

@Test
public void diffPathTest() throws IOException, URISyntaxException, PatchFailedException {
    URL test1 = ClassLoader.getSystemClassLoader().getResource("compare/Test1");
    URL test2 = ClassLoader.getSystemClassLoader().getResource("compare/Test2");
    List<String> test1List = Files.readAllLines(new File(test1.toURI()).toPath());
    List<String> test2List = Files.readAllLines(new File(test2.toURI()).toPath());
    Patch diff = DiffUtils.diff(test1List, test2List);
    List<Delta> deltas = diff.getDeltas();
    deltas.stream().forEach(d -> {
        Chunk original = d.getOriginal();
        List<?> lines = original.getLines();
        lines.stream().forEach(System.out::println);
    });
// List<?> patch = DiffUtils.patch(test1List, diff);
// patch.stream().forEach(System.out::println);
//
// List<?> unpatch = DiffUtils.unpatch(test2List, diff);
// unpatch.stream().forEach(System.out::println);
}
Also used : Delta(difflib.Delta) Chunk(difflib.Chunk) File(java.io.File) Patch(difflib.Patch) URL(java.net.URL) Test(org.junit.Test)

Example 7 with Chunk

use of difflib.Chunk in project Gargoyle by callakrsos.

the class DiffPathText method patchTest.

@Test
public void patchTest() throws IOException, URISyntaxException, PatchFailedException {
    URL test1 = ClassLoader.getSystemClassLoader().getResource("compare/Test1");
    URL test2 = ClassLoader.getSystemClassLoader().getResource("compare/Test2");
    // 원본데이터 리스트
    List<String> test1List = Files.readAllLines(new File(test1.toURI()).toPath());
    List<String> test2List = Files.readAllLines(new File(test2.toURI()).toPath());
    List<String> tmpOrigin = new LinkedList<String>();
    test1List.forEach(str -> {
        tmpOrigin.add(str);
    });
    List<String> tmpRevice = new LinkedList<String>();
    test2List.forEach(str -> {
        tmpRevice.add(str);
    });
    Patch diff = DiffUtils.diff(test1List, test2List);
    System.out.println(diff.getDeltas());
    List<Delta> deltas = diff.getDeltas();
    Collections.reverse(deltas);
    System.out.println("before");
    System.out.println(tmpOrigin);
    // 공백 작업pos
    deltas.forEach(d -> {
        Chunk original = d.getOriginal();
        Chunk revised = d.getRevised();
        int position = original.getPosition();
        switch(d.getType()) {
            case INSERT:
                {
                    List<String> lines = (List<String>) original.getLines();
                    List<String> lines2 = (List<String>) revised.getLines();
                    tmpOrigin.addAll(position, lines2);
                    tmpRevice.addAll(position, lines);
                }
                break;
        }
    });
    System.out.println("origin");
    System.out.println(tmpOrigin);
    System.out.println("revice");
    System.out.println(tmpRevice);
// tmpOrigin.forEach(System.out::println);
}
Also used : Delta(difflib.Delta) List(java.util.List) LinkedList(java.util.LinkedList) Chunk(difflib.Chunk) File(java.io.File) Patch(difflib.Patch) URL(java.net.URL) LinkedList(java.util.LinkedList) Test(org.junit.Test)

Example 8 with Chunk

use of difflib.Chunk in project disconf by knightliao.

the class DiffUtils method getDiff.

/**
     * 专门为disconf打造的对照工具
     *
     * @param old
     * @param newData
     * @param identify
     *
     * @return
     */
public static String getDiff(String old, String newData, String identify, String htmlClick) {
    StringComparator stringComparator = new StringComparator(old, newData);
    String contentString = StringEscapeUtils.escapeHtml4(identify) + "<br/><br/>" + htmlClick + "<br/> ";
    try {
        if (stringComparator.getChangesFromOriginal().size() == 0 && stringComparator.getDeletesFromOriginal().size() == 0 && stringComparator.getInsertsFromOriginal().size() == 0) {
            return "<span style='color:#FF0000'>OK, NO MODIFICATOIN!</span>";
        } else {
            String oldValue = "<br/><br/><br/><span style='color:#FF0000'>Old value:</span><br/>" + StringEscapeUtils.escapeHtml4(old).replaceAll("\n", "<br/>");
            String newValue = "<br/><br/><br/><span style='color:#FF0000'>New value:</span><br/>" + StringEscapeUtils.escapeHtml4(newData).replaceAll("\n", "<br/>");
            String diff = "";
            if (stringComparator.getChangesFromOriginal().size() != 0) {
                diff = "<span style='color:#FF0000'>Change info: </span><br/>";
                for (Chunk chunk : stringComparator.getChangesFromOriginal()) {
                    diff += StringEscapeUtils.escapeHtml4(chunk.toString()) + "<br/>";
                }
            }
            if (stringComparator.getInsertsFromOriginal().size() != 0) {
                diff += "<br/><span style='color:#FF0000'>Insert info: </span><br/>";
                for (Chunk chunk : stringComparator.getInsertsFromOriginal()) {
                    diff += StringEscapeUtils.escapeHtml4(chunk.toString()) + "<br/>";
                }
            }
            if (stringComparator.getDeletesFromOriginal().size() != 0) {
                diff += "<br/><span style='color:#FF0000'>Delete info: </span><br/>";
                for (Chunk chunk : stringComparator.getDeletesFromOriginal()) {
                    diff += StringEscapeUtils.escapeHtml4(chunk.toString()) + "<br/>";
                }
            }
            return contentString + diff + oldValue + newValue;
        }
    } catch (IOException e) {
        LOG.error("compare error", e);
        return "comparator error" + e.toString();
    }
}
Also used : IOException(java.io.IOException) Chunk(difflib.Chunk) StringComparator(com.baidu.disconf.web.common.comparator.StringComparator)

Example 9 with Chunk

use of difflib.Chunk in project disconf by knightliao.

the class FileComparator method getChunksByType.

private List<Chunk> getChunksByType(Delta.TYPE type) throws IOException {
    final List<Chunk> listOfChanges = new ArrayList<Chunk>();
    final List<Delta> deltas = getDeltas();
    for (Delta delta : deltas) {
        if (delta.getType() == type) {
            listOfChanges.add(delta.getRevised());
        }
    }
    return listOfChanges;
}
Also used : Delta(difflib.Delta) ArrayList(java.util.ArrayList) Chunk(difflib.Chunk)

Example 10 with Chunk

use of difflib.Chunk in project disconf by knightliao.

the class FileComparatorTestCase method shouldGetDeletesBetweenFiles.

@Test
public void shouldGetDeletesBetweenFiles() {
    final FileComparator comparator = new FileComparator(original, revised);
    try {
        final List<Chunk> deletesFromOriginal = comparator.getDeletesFromOriginal();
        assertEquals(1, deletesFromOriginal.size());
        final Chunk firstDelete = deletesFromOriginal.get(0);
        final int firstLineOfFirstDelete = firstDelete.getPosition() + 1;
        assertEquals(1, firstLineOfFirstDelete);
    } catch (IOException ioe) {
        fail("Error running test shouldGetDeletesBetweenFiles " + ioe.toString());
    }
}
Also used : IOException(java.io.IOException) Chunk(difflib.Chunk) Test(org.junit.Test)

Aggregations

Chunk (difflib.Chunk)17 Delta (difflib.Delta)13 IOException (java.io.IOException)11 ChunkWrapper (com.kyj.fx.voeditor.visual.diff.ChunkWrapper)7 CompareResult (com.kyj.fx.voeditor.visual.diff.CompareResult)7 TYPE (difflib.Delta.TYPE)7 ArrayList (java.util.ArrayList)7 List (java.util.List)7 FXML (javafx.fxml.FXML)7 ImageView (javafx.scene.image.ImageView)7 SimpleIntegerProperty (javafx.beans.property.SimpleIntegerProperty)6 SimpleStringProperty (javafx.beans.property.SimpleStringProperty)6 StringProperty (javafx.beans.property.StringProperty)6 ObservableValue (javafx.beans.value.ObservableValue)6 File (java.io.File)5 CellDataFeatures (javafx.scene.control.TableColumn.CellDataFeatures)5 DiffComparable (com.kyj.fx.voeditor.visual.diff.DiffComparable)4 Patch (difflib.Patch)4 ObjectProperty (javafx.beans.property.ObjectProperty)4 SimpleObjectProperty (javafx.beans.property.SimpleObjectProperty)4