Search in sources :

Example 6 with Delta

use of org.suigeneris.jrcs.diff.delta.Delta in project xwiki-platform by xwiki.

the class DiffTest method testSimpleLineDiff2.

@Test
public void testSimpleLineDiff2() throws XWikiException {
    String text1 = "A\nB\nC";
    String text2 = "A\nB B\nC";
    List diffs = this.plugin.getDifferencesAsList(text1, text2);
    assertEquals("There should be one difference", 1, diffs.size());
    Delta delta = (Delta) diffs.get(0);
    Chunk orig = delta.getOriginal();
    Chunk revised = delta.getRevised();
    assertEquals("Original should be", "B", orig.toString());
    assertEquals("Revised should be", "B B", revised.toString());
}
Also used : Delta(org.suigeneris.jrcs.diff.delta.Delta) List(java.util.List) Chunk(org.suigeneris.jrcs.diff.delta.Chunk) Test(org.junit.Test)

Example 7 with Delta

use of org.suigeneris.jrcs.diff.delta.Delta in project jspwiki by apache.

the class SpamFilter method getChange.

/**
 *  Creates a simple text string describing the added content.
 *
 *  @param context
 *  @param newText
 *  @return Empty string, if there is no change.
 */
private static Change getChange(WikiContext context, String newText) {
    WikiPage page = context.getPage();
    StringBuffer change = new StringBuffer();
    WikiEngine engine = context.getEngine();
    // Get current page version
    Change ch = new Change();
    try {
        String oldText = engine.getPureText(page.getName(), WikiProvider.LATEST_VERSION);
        String[] first = Diff.stringToArray(oldText);
        String[] second = Diff.stringToArray(newText);
        Revision rev = Diff.diff(first, second, new MyersDiff());
        if (rev == null || rev.size() == 0) {
            return ch;
        }
        for (int i = 0; i < rev.size(); i++) {
            Delta d = rev.getDelta(i);
            if (d instanceof AddDelta) {
                d.getRevised().toString(change, "", "\r\n");
                ch.m_adds++;
            } else if (d instanceof ChangeDelta) {
                d.getRevised().toString(change, "", "\r\n");
                ch.m_adds++;
            } else if (d instanceof DeleteDelta) {
                ch.m_removals++;
            }
        }
    } catch (DifferentiationFailedException e) {
        log.error("Diff failed", e);
    }
    // 
    // Don't forget to include the change note, too
    // 
    String changeNote = (String) page.getAttribute(WikiPage.CHANGENOTE);
    if (changeNote != null) {
        change.append("\r\n");
        change.append(changeNote);
    }
    // 
    if (page.getAuthor() != null) {
        change.append("\r\n" + page.getAuthor());
    }
    ch.m_change = change.toString();
    return ch;
}
Also used : ChangeDelta(org.suigeneris.jrcs.diff.delta.ChangeDelta) DifferentiationFailedException(org.suigeneris.jrcs.diff.DifferentiationFailedException) DeleteDelta(org.suigeneris.jrcs.diff.delta.DeleteDelta) WikiPage(org.apache.wiki.WikiPage) MyersDiff(org.suigeneris.jrcs.diff.myers.MyersDiff) Revision(org.suigeneris.jrcs.diff.Revision) DeleteDelta(org.suigeneris.jrcs.diff.delta.DeleteDelta) Delta(org.suigeneris.jrcs.diff.delta.Delta) AddDelta(org.suigeneris.jrcs.diff.delta.AddDelta) ChangeDelta(org.suigeneris.jrcs.diff.delta.ChangeDelta) AddDelta(org.suigeneris.jrcs.diff.delta.AddDelta) WikiEngine(org.apache.wiki.WikiEngine)

Example 8 with Delta

use of org.suigeneris.jrcs.diff.delta.Delta in project xwiki-platform by xwiki.

the class DiffTest method testSimpleLineDiff.

@Test
public void testSimpleLineDiff() throws XWikiException {
    String text1 = "A";
    String text2 = "A B";
    List diffs = this.plugin.getDifferencesAsList(text1, text2);
    assertEquals("There should be one difference", 1, diffs.size());
    Delta delta = (Delta) diffs.get(0);
    Chunk orig = delta.getOriginal();
    Chunk revised = delta.getRevised();
    assertEquals("Original should be", "A", orig.toString());
    assertEquals("Revised should be", "A B", revised.toString());
}
Also used : Delta(org.suigeneris.jrcs.diff.delta.Delta) List(java.util.List) Chunk(org.suigeneris.jrcs.diff.delta.Chunk) Test(org.junit.Test)

Example 9 with Delta

use of org.suigeneris.jrcs.diff.delta.Delta in project xwiki-platform by xwiki.

the class DiffTest method testSimpleWordDiff4.

@Test
public void testSimpleWordDiff4() throws XWikiException {
    String text1 = "I love Paris and I like London";
    String text2 = "I love London and I like Paris";
    List diffs = this.plugin.getWordDifferencesAsList(text1, text2);
    assertEquals("There should be two differences", 2, diffs.size());
    Delta delta1 = (Delta) diffs.get(0);
    Chunk orig1 = delta1.getOriginal();
    Chunk revised1 = delta1.getRevised();
    Delta delta2 = (Delta) diffs.get(1);
    Chunk orig2 = delta2.getOriginal();
    Chunk revised2 = delta2.getRevised();
    assertEquals("Original 1 should be", "Paris", orig1.toString());
    assertEquals("Revised 1 should be", "London", revised1.toString());
    assertEquals("Original 2 should be", "London", orig2.toString());
    assertEquals("Revised 2 should be", "Paris", revised2.toString());
}
Also used : Delta(org.suigeneris.jrcs.diff.delta.Delta) List(java.util.List) Chunk(org.suigeneris.jrcs.diff.delta.Chunk) Test(org.junit.Test)

Aggregations

Delta (org.suigeneris.jrcs.diff.delta.Delta)9 List (java.util.List)8 Chunk (org.suigeneris.jrcs.diff.delta.Chunk)8 Test (org.junit.Test)6 ArrayList (java.util.ArrayList)2 ToString (org.suigeneris.jrcs.util.ToString)2 WikiEngine (org.apache.wiki.WikiEngine)1 WikiPage (org.apache.wiki.WikiPage)1 DifferentiationFailedException (org.suigeneris.jrcs.diff.DifferentiationFailedException)1 Revision (org.suigeneris.jrcs.diff.Revision)1 AddDelta (org.suigeneris.jrcs.diff.delta.AddDelta)1 ChangeDelta (org.suigeneris.jrcs.diff.delta.ChangeDelta)1 DeleteDelta (org.suigeneris.jrcs.diff.delta.DeleteDelta)1 MyersDiff (org.suigeneris.jrcs.diff.myers.MyersDiff)1