Java源码示例:name.fraser.neil.plaintext.DiffMatchPatch
示例1
private String generatePatchDescription(
DocumentEvent documentEvent, List<DiffMatchPatch.Patch> patches) {
logger.info("Creating JSON from patches.");
String source = documentEvent.getSource().toString();
if (documentEvent.getSource().toString().length() <= 20) {
return null;
}
source = source.substring(20, source.length() - 1);
return JsonMaker.create()
.add("file", new PathResolver().getPathRelativeToProject(source))
.add("patches", diff.patch_toText(patches))
.add(
"full_document",
documentEvent.getNewLength() == documentEvent.getDocument().getTextLength())
.toString();
}
示例2
private void createPatches(Exercise exercise, DocumentEvent documentEvent) {
List<DiffMatchPatch.Patch> patches;
patches = diff.patch_make(previous, modified);
if (isRemoveEvent(documentEvent)) {
addEventToManager(
exercise, "text_remove", generatePatchDescription(documentEvent, patches));
} else if (isPasteEvent(documentEvent)) {
addEventToManager(
exercise, "text_paste", generatePatchDescription(documentEvent, patches));
} else {
addEventToManager(
exercise, "text_insert", generatePatchDescription(documentEvent, patches));
}
}
示例3
@SuppressWarnings("serial")
public DiffTextPanel(final String id, final IModel<String> newText, final IModel<String> oldText, final Behavior... behaviors)
{
super(id);
this.newText = newText;
this.oldText = oldText;
label = new Label(WICKET_ID, new Model<String>() {
@Override
public String getObject()
{
if (prettyHtml == null) {
final DiffMatchPatch diffMatchPatch = new DiffMatchPatch();
String newValue = newText.getObject();
if (newValue == null || "null".equals(newValue) == true) {
newValue = getString("label.null");
}
String oldValue = oldText.getObject();
if (oldValue == null || "null".equals(oldValue) == true) {
oldValue = getString("label.null");
}
final LinkedList<Diff> diffs = diffMatchPatch.diff_main(oldValue, newValue);
diffMatchPatch.diff_cleanupSemantic(diffs);
prettyHtml = getPrettyHtml(diffs);
}
return prettyHtml;
}
});
label.add(behaviors).setEscapeModelStrings(false);
add(label);
}