@Override public void annotationBoundary(AnnotationBoundaryMap map) { target.annotationBoundary(map); }
@Override boolean build(DocInitializationCursor d, DocOpCursor m) { m.elementStart("body", Attributes.EMPTY_MAP); m.characters("a"); m.elementStart("line", Attributes.EMPTY_MAP); m.elementEnd(); m.elementEnd(); return false; }}); // different element before required element
@Override boolean build(DocInitializationCursor d, DocOpCursor m) { m.retain(1); m.deleteCharacters("ab"); return false; }}); }
@Override public boolean build(DocInitializationCursor d, DocOpCursor m) { m.elementStart("p", Attributes.EMPTY_MAP); m.elementEnd(); return false; } @Override
@Override public boolean build(DocInitializationCursor d, DocOpCursor m) { d.characters("a"); d.characters("b"); m.retain(1); m.annotationBoundary( AnnotationBoundaryMapImpl.builder().initializationValues("a", null).build()); m.deleteCharacters("b"); m.annotationBoundary( AnnotationBoundaryMapImpl.builder().initializationEnd("a").build()); return true; } });
@Override public boolean build(DocInitializationCursor d, DocOpCursor m) { d.characters("ab"); m.annotationBoundary( AnnotationBoundaryMapImpl.builder() .updateValues("a", null, "1") .build()); m.retain(1); m.annotationBoundary(new DumbAnnotationBoundaryMap( new String[] { "a" }, new String[] { "a", null, "2" })); m.retain(1); m.annotationBoundary( AnnotationBoundaryMapImpl.builder() .initializationEnd("a") .build()); return false; } });
@Override public boolean build(DocInitializationCursor d, DocOpCursor m) { d.annotationBoundary( AnnotationBoundaryMapImpl.builder().initializationValues("a", "1").build()); d.characters("ab"); d.annotationBoundary( AnnotationBoundaryMapImpl.builder().initializationEnd("a").build()); m.annotationBoundary( AnnotationBoundaryMapImpl.builder().updateValues("a", "1", null).build()); m.deleteCharacters("a"); m.deleteCharacters("b"); m.annotationBoundary( AnnotationBoundaryMapImpl.builder().initializationEnd("a").build()); return true; } });
@Override boolean build(DocInitializationCursor d, DocOpCursor m) { d.elementStart("body", Attributes.EMPTY_MAP); d.elementStart("line", Attributes.EMPTY_MAP); d.elementEnd(); d.elementEnd(); m.retain(1); m.deleteElementStart("line", Attributes.EMPTY_MAP); m.deleteElementEnd(); m.retain(1); return false; }}); }
@Override boolean build(DocInitializationCursor d, DocOpCursor m) { d.elementStart("body", Attributes.EMPTY_MAP); d.elementStart("line", Attributes.EMPTY_MAP); d.elementEnd(); d.elementEnd(); m.retain(3); m.elementStart("line", Attributes.EMPTY_MAP); m.elementEnd(); m.retain(1); return true; }}); // not ok to insert before
@Override boolean build(DocInitializationCursor d, DocOpCursor m) { d.elementStart("body", Attributes.EMPTY_MAP); d.elementStart("line", Attributes.EMPTY_MAP); d.elementEnd(); d.elementEnd(); m.retain(1); m.characters("a"); m.retain(3); return false; }}); }
@Override boolean build(DocInitializationCursor d, DocOpCursor m) { d.elementStart("body", Attributes.EMPTY_MAP); d.elementStart("line", Attributes.EMPTY_MAP); d.elementEnd(); d.elementEnd(); m.deleteElementStart("body", Attributes.EMPTY_MAP); m.deleteElementStart("line", Attributes.EMPTY_MAP); m.deleteElementEnd(); m.deleteElementEnd(); return true; }}); // missing required element
@Override void apply(DocOpCursor c) { c.deleteCharacters(string); } }
@Override void apply(DocOpCursor c) { c.retain(itemCount); } }
@Override void apply(DocOpCursor c) { c.deleteElementStart(type, attrs); } }
@Override public void deleteElementEnd() { target.deleteElementEnd(); }
@Override public void characters(String chars) { target.characters(chars); }
@Override public void elementStart(String type, Attributes attrs) { target.elementStart(type, attrs); } });
@Override void apply(DocOpCursor c) { c.replaceAttributes(oldAttrs, newAttrs); } }
@Override void apply(DocOpCursor c) { c.updateAttributes(update); } }
@Override void output(DocOpCursor c) { c.elementEnd(); } }