Repository: flex-asjs
Updated Branches:
  refs/heads/e4x 94281aefe -> 988296e56


children() and elements()


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

Branch: refs/heads/e4x
Commit: 988296e56876807c75b4950b364519f6cff3070f
Parents: 94281ae
Author: Harbs <[email protected]>
Authored: Wed Feb 3 23:06:53 2016 +0200
Committer: Harbs <[email protected]>
Committed: Wed Feb 3 23:06:53 2016 +0200

----------------------------------------------------------------------
 frameworks/projects/XML/as/src/XML.as     | 21 ++++++++++++++------
 frameworks/projects/XML/as/src/XMLList.as | 27 ++++++++++++++++++++++++++
 2 files changed, 42 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/988296e5/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 dc99ff9..8be71e2 100644
--- a/frameworks/projects/XML/as/src/XML.as
+++ b/frameworks/projects/XML/as/src/XML.as
@@ -566,11 +566,8 @@ package
                {
                        var list:XMLList = new XMLList();
                        for(i=0;i<_children.length;i++)
-                       {
-                               //TODO filter out non-elements
-                               if(propertyName.matches(_children[i].name()))
-                                       list.append(_children[i]);
-                       }
+                               list.append(_children[i]);
+
                        list.targetObject = this;
                        return list;
                }
@@ -682,7 +679,7 @@ package
                }
                
                /**
-                * Lists the elements of an XML object.
+                * Lists the elements of an XML object. (handles E4X dot 
notation)
                 * 
                 * @param name
                 * @return 
@@ -690,6 +687,18 @@ package
                 */
                public function elements(name:Object = "*"):XMLList
                {
+                       name = toXMLName(name);
+                       var list:XMLList = new XMLList();
+                       for(i=0;i<_children.length;i++)
+                       {
+                               if(_children[i].nodeKind() == "element" && 
name.matches(_children[i].name()))
+                                       list.append(_children[i]);
+                       }
+
+                       list.targetObject = this;
+                       list.targetProperty = name;
+                       return list;
+
                        return null;
                }
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/988296e5/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 9e0d2fb..264ef3c 100644
--- a/frameworks/projects/XML/as/src/XMLList.as
+++ b/frameworks/projects/XML/as/src/XMLList.as
@@ -338,6 +338,33 @@ package
                        }
                        return retVal;
                }
+
+               public function equals(list:*):Boolean
+               {
+                       /*
+                               Overview
+                               The XMLList type adds the internal [[Equals]] 
method to the internal properties defined by the Object type.
+                               The XMLList [[Equals]] method is used to 
compare this XMLList object for content equality 
+                               with another XMLList object V or determine 
whether this XMLList object contains a single XML object that compares equal to 
V. 
+                               The [[Equals]] operator returns true if this 
XMLList object is considered equal to V 
+                               or contains only one XML object that is 
considered equal to V. Otherwise, it returns false. 
+                               Empty XMLList objects are considered equal to 
undefined. 
+                               The input argument V may be a value of type 
XMLList, XML, undefined or any value that can be converted to a String with 
ToString().
+                               
+                               Semantics
+                               When the [[Equals]] method of an XML object x 
is called with value V, the following steps are taken:
+                               1. If V == undefined and x.[[Length]] == 0, 
return true
+                               2. If Type(V) is XMLList
+                                 a. If x.[[Length]] is not equal to 
V.[[Length]], return false
+                                 b. For i = 0 to x.[[Length]]
+                                   i. If the result of the comparison x[i] == 
V[i] is false, return false
+                                 c. Return true
+                               3. Else if x.[[Length]] == 1
+                                 a. Return the result of the comparison x[0] 
== V
+                               4. Return false
+                       */
+                       return false;
+               }
                
                public function hasComplexContent():Boolean
                {

Reply via email to