package org.xpect.text; import java.util.List; import org.xpect.util.IDifferencer.ISimilarityFunction; import org.xpect.util.IDifferencer.MatchKind; public interface ITextDifferencer { public interface ILineDiff { MatchKind getKind(); List<ISegmentDiff> getSegmentDiffs(); } public interface ISegment { ISegment getNext(); ISegment getPrevious(); int getTokenIndex(); boolean isHidden(); boolean isWrap(); String toString(); } public interface ISegmentDiff { MatchKind getKind(); ISegment getLeft(); ISegment getRight(); float getSimilarity(); } public interface ITextDiff { List<ILineDiff> getLines(); } public interface ITextDiffConfig<T> extends ISimilarityFunction<ISegment> { boolean isHidden(T token, String segment); Iterable<String> toSegments(T token); } <T> ITextDiff diff(List<T> leftTokens, List<T> rightTokens, ITextDiffConfig<T> config); }