Repository: flex-asjs
Updated Branches:
  refs/heads/e4x dc52078ee -> 3c3a16181


descendents and cleanup


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/3c3a1618
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/3c3a1618
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/3c3a1618

Branch: refs/heads/e4x
Commit: 3c3a1618192d4e74ecee9a4b7e5733f5e8523962
Parents: dc52078
Author: Harbs <[email protected]>
Authored: Wed Feb 3 22:35:36 2016 +0200
Committer: Harbs <[email protected]>
Committed: Wed Feb 3 22:35:36 2016 +0200

----------------------------------------------------------------------
 frameworks/projects/XML/as/src/XML.as     | 27 +++++++-
 frameworks/projects/XML/as/src/XMLList.as | 86 +++++++++++++-------------
 2 files changed, 67 insertions(+), 46 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3c3a1618/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 aad27ce..a59fcf8 100644
--- a/frameworks/projects/XML/as/src/XML.as
+++ b/frameworks/projects/XML/as/src/XML.as
@@ -640,7 +640,7 @@ package
                 * @return 
                 * 
                 */
-               public function descendants(name:Object = *):XMLList
+               public function descendants(name:Object = "*"):XMLList
                {
                        /*
                                When the [[Descendants]] method of an XML 
object x is called with property name P, the following steps are taken:
@@ -657,7 +657,28 @@ package
                                  c. If dq.[[Length]] > 0, call the [[Append]] 
method of list with argument dq
                                5. Return list
                        */
-                       return null;
+                       var i:int;
+                       name = toXMLName(name);
+                       var list:XMLList = new XMLList();
+                       if(name.isAttribute)
+                       {
+                               for(i=0;i<_attributes.length;i++)
+                               {
+                                       if(name.matches(_attributes[i].name()))
+                                               
list.appendChild(_attributes[i]);
+                               }
+                               for(i=0;i<_children.length;i++)
+                               {
+                                       if(_children[i].nodeKind() == "element")
+                                       {
+                                               
if(name.matches(_children[i].name()))
+                                                       
list.appendChild(_children[i]);
+
+                                               list = 
list.concat(_children[i].descendants());
+                                       } 
+                               }
+                       }
+                       return list;
                }
                
                /**
@@ -667,7 +688,7 @@ package
                 * @return 
                 * 
                 */
-               public function elements(name:Object = *):XMLList
+               public function elements(name:Object = "*"):XMLList
                {
                        return null;
                }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3c3a1618/frameworks/projects/XML/as/src/XMLList.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/XML/as/src/XMLList.as 
b/frameworks/projects/XML/as/src/XMLList.as
index 8eae698..9e0d2fb 100644
--- a/frameworks/projects/XML/as/src/XMLList.as
+++ b/frameworks/projects/XML/as/src/XMLList.as
@@ -171,10 +171,10 @@ package
                public function attribute(attributeName:*):XMLList
                {
                        var retVal:XMLList = new XMLList();
-                       var len:int = this.length();
+                       var len:int = _xmlArray.length;
                        for (var i:int=0;i<len;i++)
                        {
-                               var list:XMLList = 
this[i].attribute(attributeName);
+                               var list:XMLList = 
_xmlArray[i].attribute(attributeName);
                                if(list.length())
                                        retVal = retVal.concat(list);
                        }
@@ -189,10 +189,10 @@ package
                public function attributes():XMLList
                {
                        var retVal:XMLList = new XMLList();
-                       var len:int = this.length();
+                       var len:int = _xmlArray.length;
                        for (var i:int=0;i<len;i++)
                        {
-                               var list:XMLList = this[i].attributes();
+                               var list:XMLList = _xmlArray[i].attributes();
                                if(list.length())
                                        retVal = retVal.concat(list);
                        }
@@ -208,10 +208,10 @@ package
                public function child(propertyName:Object):XMLList
                {
                        var retVal:XMLList = new XMLList();
-                       var len:int = this.length();
+                       var len:int = _xmlArray.length;
                        for (var i:int=0;i<len;i++)
                        {
-                               var list:XMLList = this[i].child(propertyName);
+                               var list:XMLList = 
_xmlArray[i].child(propertyName);
                                if(list.length())
                                        retVal = retVal.concat(list);
                        }
@@ -226,10 +226,10 @@ package
                public function children():XMLList
                {
                        var retVal:XMLList = new XMLList();
-                       var len:int = this.length();
+                       var len:int = _xmlArray.length;
                        for (var i:int=0;i<len;i++)
                        {
-                               var list:XMLList = this[i].children();
+                               var list:XMLList = _xmlArray[i].children();
                                if(list.length)
                                        retVal = retVal.concat(list);
                        }
@@ -244,10 +244,10 @@ package
                public function comments():XMLList
                {
                        var retVal:XMLList = new XMLList();
-                       var len:int = this.length();
+                       var len:int = _xmlArray.length;
                        for (var i:int=0;i<len;i++)
                        {
-                               var list:XMLList = this[i].comments();
+                               var list:XMLList = _xmlArray[i].comments();
                                if(list.length)
                                        retVal = retVal.concat(list);
                        }
@@ -274,10 +274,10 @@ package
                public function contains(value:XML):Boolean
                {
                        
-                       var len:int = this.length();
+                       var len:int = _xmlArray.length;
                        for (var i:int=0;i<len;i++)
                        {
-                               if(this[i].contains(value))
+                               if(_xmlArray[i].contains(value))
                                        return true;
                        }
                        return false;
@@ -292,9 +292,9 @@ package
                public function copy():XMLList
                {
                        var retVal:XMLList = new XMLList();
-                       var len:int = this.length();
+                       var len:int = _xmlArray.length;
                        for (var i:int=0;i<len;i++)
-                               retVal[i] = this[i].copy();
+                               retVal[i] = _xmlArray[i].copy();
                        
                        return retVal;
                }
@@ -309,10 +309,10 @@ package
                public function descendants(name:Object = *):XMLList
                {
                        var retVal:XMLList = new XMLList();
-                       var len:int = this.length();
+                       var len:int = _xmlArray.length;
                        for (var i:int=0;i<len;i++)
                        {
-                               var list:XMLList = this[i].descendants(name);
+                               var list:XMLList = 
_xmlArray[i].descendants(name);
                                if(list.length())
                                        retVal = retVal.concat(list);
                        }
@@ -329,10 +329,10 @@ package
                public function elements(name:Object = *):XMLList
                {
                        var retVal:XMLList = new XMLList();
-                       var len:int = this.length();
+                       var len:int = _xmlArray.length;
                        for (var i:int=0;i<len;i++)
                        {
-                               var list:XMLList = this[i].elements(name);
+                               var list:XMLList = _xmlArray[i].elements(name);
                                if(list.length())
                                        retVal = retVal.concat(list);
                        }
@@ -342,12 +342,12 @@ package
                public function hasComplexContent():Boolean
                {
                        //what to do with multiple nodes? If anything is 
complex, we return true.
-                       if(this.length() == 0)
+                       if(_xmlArray.length == 0)
                                return false;
-                       var len:int = this.length();
+                       var len:int = _xmlArray.length;
                        for (var i:int=1;i<len;i++)
                        {
-                               if(this[i].hasComplexContent())
+                               if(_xmlArray[i].hasComplexContent())
                                        return true;
                        }
                        return false;
@@ -368,12 +368,12 @@ package
                        */
                        if(parseInt(propertyName,10).toString() == propertyName)
                        {
-                               return parseInt(propertyName,10) < 
this.length();
+                               return parseInt(propertyName,10) < 
_xmlArray.length;
                        }
-                       var len:int = this.length();
+                       var len:int = _xmlArray.length;
                        for (var i:int=1;i<len;i++)
                        {
-                               if(this[i].hasOwnProperty(propertyName))
+                               if(_xmlArray[i].hasOwnProperty(propertyName))
                                        return true;
                        }
                        return false;
@@ -388,12 +388,12 @@ package
                public function hasSimpleContent():Boolean
                {
                        //what to do with multiple nodes? If anything is 
complex, we return false.
-                       if(this.length() == 0)
+                       if(_xmlArray.length == 0)
                                return true;
-                       var len:int = this.length();
+                       var len:int = _xmlArray.length;
                        for (var i:int=1;i<len;i++)
                        {
-                               if(this[i].hasComplexContent())
+                               if(_xmlArray[i].hasComplexContent())
                                        return false;
                        }
                        return true;
@@ -430,13 +430,13 @@ package
                 */
                public function parent():Object
                {
-                       if(this.length() == 0)
+                       if(_xmlArray.length == 0)
                                return undefined;
                        var retVal = this[0].parent;
-                       var len:int = this.length();
+                       var len:int = _xmlArray.length;
                        for (var i:int=1;i<len;i++)
                        {
-                               if(this[i].parent != retVal)
+                               if(_xmlArray[i].parent != retVal)
                                        return undefined;
                        }
                        return retVal;
@@ -454,17 +454,17 @@ package
                        var retVal:XMLList = new XMLList();
                        if(!name)
                                return retVal;
-                       var len:int = this.length();
+                       var len:int = _xmlArray.length;
                        for (var i:int=0;i<len;i++)
                        {
-                               if(this[i].nodeKind() != 
"processing-instruction")
+                               if(_xmlArray[i].nodeKind() != 
"processing-instruction")
                                        continue;
                                if(name == "*")
                                {
-                                       retVal.appendChild(this[i]);
+                                       retVal.appendChild(_xmlArray[i]);
                                }
-                               else if(name == this[i].localName)
-                                       retVal.appendChild(this[i]);
+                               else if(name == _xmlArray[i].localName)
+                                       retVal.appendChild(_xmlArray[i]);
                        }
                        return retVal;
                }
@@ -539,10 +539,10 @@ package
                public function text():XMLList
                {
                        var retVal:XMLList = new XMLList();
-                       var len:int = this.length();
+                       var len:int = _xmlArray.length;
                        for (var i:int=0;i<len;i++)
                        {
-                               var list:XMLList = this[i].text();
+                               var list:XMLList = _xmlArray[i].text();
                                if(list.length())
                                        retVal.concat(list);
                        }
@@ -558,10 +558,10 @@ package
                public function toLocaleString():String
                {
                        var retVal:Array = [];
-                       var len:int = this.length();
+                       var len:int = _xmlArray.length;
                        for (var i:int=0;i<len;i++)
                        {
-                               var str:String = this[i].toLocaleString();
+                               var str:String = _xmlArray[i].toLocaleString();
                                if(str)
                                        retVal.push(str);
                        }
@@ -577,10 +577,10 @@ package
                public function toString():String
                {
                        var retVal:Array = [];
-                       var len:int = this.length();
+                       var len:int = _xmlArray.length;
                        for (var i:int=0;i<len;i++)
                        {
-                               var str:String = this[i].toString();
+                               var str:String = _xmlArray[i].toString();
                                if(str)
                                        retVal.push(str);
                        }
@@ -596,10 +596,10 @@ package
                public function toXMLString():String
                {
                        var retVal:Array = [];
-                       var len:int = this.length();
+                       var len:int = _xmlArray.length;
                        for (var i:int=0;i<len;i++)
                        {
-                               var str:String = this[i].toXMLString();
+                               var str:String = _xmlArray[i].toXMLString();
                                if(str)
                                        retVal.push(str);
                        }

Reply via email to