Repository: flex-asjs Updated Branches: refs/heads/e4x 33d0c00b2 -> d4bce998c
XML Fixes More tests Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/d4bce998 Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/d4bce998 Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/d4bce998 Branch: refs/heads/e4x Commit: d4bce998c9ab32eccd8ea0e76ec2e8d593655f46 Parents: 33d0c00 Author: Harbs <[email protected]> Authored: Mon Apr 11 01:46:58 2016 +0300 Committer: Harbs <[email protected]> Committed: Mon Apr 11 01:46:58 2016 +0300 ---------------------------------------------------------------------- frameworks/projects/XML/src/main/flex/XML.as | 19 +++++- .../projects/XML/src/main/flex/XMLList.as | 65 ++++++++++++-------- manualtests/XMLTest/src/MyInitialView.mxml | 4 ++ 3 files changed, 63 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d4bce998/frameworks/projects/XML/src/main/flex/XML.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/XML/src/main/flex/XML.as b/frameworks/projects/XML/src/main/flex/XML.as index c3f212c..288fa35 100644 --- a/frameworks/projects/XML/src/main/flex/XML.as +++ b/frameworks/projects/XML/src/main/flex/XML.as @@ -1635,7 +1635,7 @@ package } COMPILE::JS - private function replaceChild(idx:int,v:*):void + public function replaceChildAt(idx:int,v:*):void { /* When the [[Replace]] method of an XML object x is called with property name P and value V, the following steps are taken: @@ -1681,6 +1681,19 @@ package if(_children[idx]) _children[idx].setParent(null); + var len:int = v.length(); + v[0].setParent(this); + _children[idx] = v[0]; + var listIdx:int = 1; + var chld:XML = v[0]; + while(listIdx < len) + { + chld = v[listIdx]; + insertChildAt(chld,idx+listIdx); + listIdx++; + + } + } else { @@ -2258,6 +2271,10 @@ package ns.prefix = ""; declarations.push(ns); } + if(XML.prettyPrinting) + { + strArr.push(new Array(indentLevel).join(' ')); + } strArr.push("<"); if(ns.prefix) strArr.push(ns.prefix+":"); http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d4bce998/frameworks/projects/XML/src/main/flex/XMLList.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/XML/src/main/flex/XMLList.as b/frameworks/projects/XML/src/main/flex/XMLList.as index ef16906..0f4b2ab 100644 --- a/frameworks/projects/XML/src/main/flex/XMLList.as +++ b/frameworks/projects/XML/src/main/flex/XMLList.as @@ -116,29 +116,10 @@ package { "get": function():* { return _xmlArray[idx]; }, "set": function(newValue:*):void { - var i:int; - if(newValue is XML) - { - _xmlArray[idx] = newValue; - } - else if(newValue is XMLList) - { - var len:int = newValue.length(); - for(i=0;i<len;i++) - { - // replace the first one and add each additonal one. - if(i==0) - _xmlArray[idx] = newValue[i]; - else - _xmlArray.splice(idx+i,0,newValue[i]); - } - } - // add indexes as necessary - while(idx++ < _xmlArray.length) - { - if(!this.hasOwnProperty(idx)) - addIndex(idx); - } + if(idx >= _xmlArray.length) + appendChild(newValue); + else + replaceChildAt(idx,newValue); }, enumerable: true, configurable: true @@ -149,8 +130,12 @@ package COMPILE::JS public function appendChild(child:XML):void { - addIndex(_xmlArray.length); _xmlArray[_xmlArray.length] = child; + addIndex(_xmlArray.length); + if(_targetObject) + { + _targetObject.appendChild(child); + } } /** @@ -565,6 +550,38 @@ package if(idx >= 0 && idx < _xmlArray.length) _xmlArray.splice(idx,1); } + COMPILE::JS + private function replaceChildAt(idx:int,child:*):void + { + var i:int; + var childToReplace:XML = _xmlArray[idx]; + if(childToReplace && _targetObject) + { + _targetObject.replaceChildAt(childToReplace.childIndex,child); + } + if(child is XML) + { + _xmlArray.splice(idx+i,0,child); + } + else if(child is XMLList) + { + var len:int = child.length(); + for(i=0;i<len;i++) + { + // replace the first one and add each additonal one. + if(i==0) + _xmlArray[idx] = child[i]; + else + _xmlArray.splice(idx+i,0,child[i]); + } + } + // add indexes as necessary + while(idx++ < _xmlArray.length) + { + if(!this.hasOwnProperty(idx)) + addIndex(idx); + } + } private var _targetObject:*; /** http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d4bce998/manualtests/XMLTest/src/MyInitialView.mxml ---------------------------------------------------------------------- diff --git a/manualtests/XMLTest/src/MyInitialView.mxml b/manualtests/XMLTest/src/MyInitialView.mxml index 34de79a..6451996 100644 --- a/manualtests/XMLTest/src/MyInitialView.mxml +++ b/manualtests/XMLTest/src/MyInitialView.mxml @@ -56,6 +56,10 @@ limitations under the License. xml1.appendChild(child); trace(xml1.pop[0].toString()); trace(xml1.pop[1].toString()); + var pop:XMLList = xml1.pop; + pop[pop.length()] = new XML('<pop><child name="Fred"/></pop>'); + trace(pop.toString()); + trace(xml1.toString()); } ]]> </fx:Script>
