be more benelovent with dissociated nodes
Signed-off-by: Florian Thienel <florian@thienel.org>
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Element.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Element.java
index 1cca42d..3a02dc8 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Element.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Element.java
@@ -228,9 +228,13 @@
}
sb.append("> (");
- sb.append(getStartOffset());
- sb.append(",");
- sb.append(getEndOffset());
+ if (isAssociated()) {
+ sb.append(getStartOffset());
+ sb.append(",");
+ sb.append(getEndOffset());
+ } else {
+ sb.append("n/a");
+ }
sb.append(")");
return sb.toString();
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Parent.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Parent.java
index 909bfec..3eedc39 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Parent.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Parent.java
@@ -85,6 +85,10 @@
* @return all child nodes including Text nodes
*/
public List<Node> getChildNodes() {
+ if (!isAssociated()) {
+ return Collections.unmodifiableList(children);
+ }
+
return getChildNodes(getRange());
}
@@ -100,9 +104,10 @@
* @return all child nodes which are completely within the given range plus the textual content
*/
public List<Node> getChildNodes(final Range range) {
+ final List<Node> result = new ArrayList<Node>();
+
final Range trimmedRange = range.trimTo(getRange());
int textStart = trimmedRange.getStartOffset();
- final List<Node> result = new ArrayList<Node>();
for (final Node child : children) {
if (!child.isAssociated()) {
result.add(child);