private List<Point<Node>> splitTextNodes(IndexedDocument<Node, Element, Text> doc) { List<Point<Node>> splitPoints = new ArrayList<Point<Node>>(); final List<Text> toSplit = new ArrayList<Text>(); DocHelper.traverse(doc, doc.getDocumentElement(), new NodeAction<Node>() { public void apply(Node node) { if (node instanceof Text) { Text t = (Text) node; if (t.getData().contains("^")) { toSplit.add(t); } } } }); for (Text t : toSplit) { while (t != null && t.getData().contains("^")) { t = doc.splitText(t, t.getData().indexOf("^") + 1); splitPoints.add(Point.before(doc, t)); } } return splitPoints; }
private List<Point<Node>> splitTextNodes(IndexedDocument<Node, Element, Text> doc) { List<Point<Node>> splitPoints = new ArrayList<Point<Node>>(); final List<Text> toSplit = new ArrayList<Text>(); DocHelper.traverse(doc, doc.getDocumentElement(), new NodeAction<Node>() { public void apply(Node node) { if (node instanceof Text) { Text t = (Text) node; if (t.getData().contains("^")) { toSplit.add(t); } } } }); for (Text t : toSplit) { while (t != null && t.getData().contains("^")) { t = doc.splitText(t, t.getData().indexOf("^") + 1); splitPoints.add(Point.before(doc, t)); } } return splitPoints; }
public void testSplitTextNeverReturnsSibling() { TestDocumentContext<Node, Element, Text> cxt = ContextProviders.createTestPojoContext( DocProviders.POJO.parse("ab").asOperation(), null, null, null, DocumentSchema.NO_SCHEMA_CONSTRAINTS); TextNodeOrganiser<Text> organiser = cxt.textNodeOrganiser(); MutableDocument<Node, Element, Text> doc = cxt.document(); Text first = (Text) doc.getFirstChild(doc.getDocumentElement()); Text text = organiser.splitText(first, 1); LocalDocument<Node, Element, Text> local = cxt.annotatableContent(); Element tr = local.transparentCreate("l", Attributes.EMPTY_MAP, doc.getDocumentElement(), text); local.transparentMove(tr, text, null, null); assertNull(cxt.getIndexedDoc().splitText(first, 1)); assertNull(organiser.splitText(first, 1)); assertSame(first, organiser.splitText(first, 0)); assertSame(first, organiser.splitText(first, 0)); assertEquals("a<l>b</l>", XmlStringBuilder.innerXml(local).toString()); assertEquals("ab", XmlStringBuilder.innerXml(doc).toString()); }
public void testSplitTextNeverReturnsSibling() { TestDocumentContext<Node, Element, Text> cxt = ContextProviders.createTestPojoContext( DocProviders.POJO.parse("ab").asOperation(), null, null, null, DocumentSchema.NO_SCHEMA_CONSTRAINTS); TextNodeOrganiser<Text> organiser = cxt.textNodeOrganiser(); MutableDocument<Node, Element, Text> doc = cxt.document(); Text first = (Text) doc.getFirstChild(doc.getDocumentElement()); Text text = organiser.splitText(first, 1); LocalDocument<Node, Element, Text> local = cxt.annotatableContent(); Element tr = local.transparentCreate("l", Attributes.EMPTY_MAP, doc.getDocumentElement(), text); local.transparentMove(tr, text, null, null); assertNull(cxt.getIndexedDoc().splitText(first, 1)); assertNull(organiser.splitText(first, 1)); assertSame(first, organiser.splitText(first, 0)); assertSame(first, organiser.splitText(first, 0)); assertEquals("a<l>b</l>", XmlStringBuilder.innerXml(local).toString()); assertEquals("ab", XmlStringBuilder.innerXml(doc).toString()); }