removeChild()
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/eb91e10f Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/eb91e10f Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/eb91e10f Branch: refs/heads/develop Commit: eb91e10f4a3d387bcd4d7fc74474b804072ad1f7 Parents: d2b32b8 Author: Harbs <[email protected]> Authored: Sun Feb 7 09:32:54 2016 +0200 Committer: Harbs <[email protected]> Committed: Sun Feb 7 09:32:54 2016 +0200 ---------------------------------------------------------------------- frameworks/projects/XML/as/src/XML.as | 62 +++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/eb91e10f/frameworks/projects/XML/as/src/XML.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/XML/as/src/XML.as b/frameworks/projects/XML/as/src/XML.as index c9da8a7..7736133 100644 --- a/frameworks/projects/XML/as/src/XML.as +++ b/frameworks/projects/XML/as/src/XML.as @@ -1114,14 +1114,73 @@ package 6. Let x.[[Length]] = x.[[Length]] - dp 7. Return true. */ - if(child.nodeKind()) var removed:XML; + if(!child) + return false; + if(!_attributes) + return false; + + if(!(child is XML)) + return removeChildByName(child); + + if(child.nodeKind() == "attribute") + { + for(i=0;i<_attributes.length;i++) + { + if(child.equals(_attributes[i])) + { + removed = _attributes[i]; + removed.setParent(null); + _attributes.splice(i,1); + return true; + } + } + } var idx:int = _children.indexOf(child); + if(idx < 0) + return false; removed = _children.splice(idx,1); child.setParent(null); return removed; } + private function removeChildByName(name:*):Boolean + { + var i:int; + name = toXMLName(name); + child = null; + var removedItem:Boolean = false; + if(name.isAttribute) + { + if(!_attributes) + return false; + for(i=_attributes.length-1;i>=0;i--) + { + if(_attributes[i].name().matches(name)) + { + child = _attributes[i]; + child.setParent(null); + _attributes.splice(i,1); + removedItem = true; + } + } + return removedItem; + } + //QUESTION am I handling non-elements correctly? + if(!_children) + return false; + for(i=_children.length-1;i>=0;i--) + { + if(_children[i].name().matches(name)) + { + child = _children[i]; + child.setParent(null); + _children.splice(i,1); + removedItem = true; + } + } + return removedItem; + } public function removeChildAt(index:int):void { /* @@ -1138,6 +1197,7 @@ package b. Return true 3. Else throw a TypeError exception */ + //Do nothing for XML objects? } /**
