Repository: flex-asjs
Updated Branches:
  refs/heads/e4x 09c5c4fd2 -> dc52078ee


Added some more XML methods


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

Branch: refs/heads/e4x
Commit: dc52078ee510a2cb3e1fc1e15d9835ad5cb4b176
Parents: 09c5c4f
Author: Harbs <[email protected]>
Authored: Wed Feb 3 17:56:22 2016 +0200
Committer: Harbs <[email protected]>
Committed: Wed Feb 3 17:56:22 2016 +0200

----------------------------------------------------------------------
 frameworks/projects/XML/as/src/QName.as |  10 ++
 frameworks/projects/XML/as/src/XML.as   | 147 ++++++++++++++++++++-------
 2 files changed, 120 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dc52078e/frameworks/projects/XML/as/src/QName.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/XML/as/src/QName.as 
b/frameworks/projects/XML/as/src/QName.as
index a3a1244..d24b7a7 100644
--- a/frameworks/projects/XML/as/src/QName.as
+++ b/frameworks/projects/XML/as/src/QName.as
@@ -104,6 +104,16 @@ package
                {
                        return this.uri == name.uri && this.prefix == 
name.prefix && this.localName == name.localName;
                }
+               public function matches(name:QName):Boolean
+               {
+                       if(this.uri == "*" || name.uri == "*")
+                               return this.localName == "*" || name.localName 
== "*" || this.localName == name.localName;
+
+                       if(this.localName == "*" || name.localName == "*")
+                               return this.uri == name.uri;
+
+                       return this.uri == name.uri && this.localName == 
name.localName;
+               }
                private var _isAttribute:Boolean;
                public function get isAttribute():Boolean
                {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/dc52078e/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 f1aa656..aad27ce 100644
--- a/frameworks/projects/XML/as/src/XML.as
+++ b/frameworks/projects/XML/as/src/XML.as
@@ -230,6 +230,57 @@ package
                        return value.replace(/^\s+|\s+$/gm,'');
                }
 
+               /**
+                * [static] Returns an object with the following properties set 
to the default values: ignoreComments, ignoreProcessingInstructions, 
ignoreWhitespace, prettyIndent, and prettyPrinting.
+                * @return 
+                * 
+                */
+               static public function defaultSettings():Object
+               {
+                       return {
+                           ignoreComments : true,
+                           ignoreProcessingInstructions : true,
+                           ignoreWhitespace : true,
+                           prettyIndent : 2,
+                           prettyPrinting : true
+                       }
+               }
+               
+               /**
+                * [static] Sets values for the following XML properties: 
ignoreComments, ignoreProcessingInstructions, ignoreWhitespace, prettyIndent, 
and prettyPrinting.
+                * @param rest
+                * 
+                */
+               static public function setSettings(value:Object):void
+               {
+                       if(!value)
+                               return;
+                               
+                   ignoreComments = value.ignoreComments === undefined ? 
ignoreComments : value.ignoreComments;
+                   ignoreProcessingInstructions = 
value.ignoreProcessingInstructions === undefined ? ignoreProcessingInstructions 
: value.ignoreProcessingInstructions;
+                   ignoreWhitespace = value.ignoreWhitespace === undefined ? 
ignoreWhitespace : value.ignoreWhitespace;
+                   prettyIndent = value.prettyIndent === undefined ? 
prettyIndent : value.prettyIndent;
+                   prettyPrinting = value.prettyPrinting === undefined ? 
prettyPrinting : value.prettyPrinting;
+               }
+               
+               /**
+                * [static] Retrieves the following properties: ignoreComments, 
ignoreProcessingInstructions, ignoreWhitespace, prettyIndent, and 
prettyPrinting.
+                * 
+                * @return 
+                * 
+                */
+               static public function settings():Object
+               {
+                       return {
+                           ignoreComments : ignoreComments,
+                           ignoreProcessingInstructions : 
ignoreProcessingInstructions,
+                           ignoreWhitespace : ignoreWhitespace,
+                           prettyIndent : prettyIndent,
+                           prettyPrinting : prettyPrinting
+                       }
+               }
+
+
                public function XML(xml:String = null)
                {
                        if(xml != "")
@@ -401,11 +452,14 @@ package
                public function attribute(attributeName:*):XMLList
                {
                        var i:int;
+                       if(attributeName == "*")
+                               return attributes();
+
                        attributeName = toAttributeName(attributeName);
                        var list:XMLList = new XMLList();
                        for(i=0;i<_attributes.length;i++)
                        {
-                               if(_atributes[i].name().equals(attributeName))
+                               if(_atributes[i].name().matches(attributeName))
                                        list.appendChild(_atributes[i]);
                        }
                        list.targetObject = this;
@@ -421,7 +475,12 @@ package
                 */
                public function attributes():XMLList
                {
-                       return null;
+                       var list:XMLList = new XMLList();
+                       for(i=0;i<_attributes.length;i++)
+                               list.appendChild(_atributes[i]);
+
+                       list.targetObject = this;
+                       return list;
                }
                
                /**
@@ -435,6 +494,7 @@ package
                {
                        /*
                         * 
+                       When the [[Get]] method of an XML object x is called 
with property name P, the following steps are taken:
                        1. If ToString(ToUint32(P)) == P
                          a. Let list = ToXMLList(x)
                          b. Return the result of calling the [[Get]] method of 
list with argument P
@@ -450,7 +510,36 @@ package
                            i. Call the [[Append]] method of list with argument 
x[k]
                        6. Return list
                        */
-                       return null;
+                       var i:int;
+                       var list:XMLList = new XMLList();
+                       if(parseInt(name,10).toString() == propertyName)
+                       {
+                               if(propertyName != "0")
+                                       return undefined;
+                               list.appendChild(this);
+                               list.targetObject = this;
+                               return list;
+                       }
+                       propertyName = toXMLName(propertyName);
+                       if(propertyName.isAttribute)
+                       {
+                               for(i=0;i<_attributes.length;i++)
+                               {
+                                       
if(propertyName.matches(_attributes[i].name()))
+                                               list.append(_attributes[i]);
+                               }
+                       }
+                       else
+                       {
+                               for(i=0;i<_children.length;i++)
+                               {
+                                       
if(propertyName.matches(_children[i].name()))
+                                               list.append(_children[i]);
+                               }
+                       }
+                       list.targetObject = this;
+                       list.targetProperty = propertyName;
+                       return list;
                }
                
                /**
@@ -475,7 +564,15 @@ package
                 */
                public function children():XMLList
                {
-                       return null;
+                       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.targetObject = this;
+                       return list;
                }
                
                /**
@@ -486,7 +583,14 @@ package
                 */
                public function comments():XMLList
                {
-                       return null;
+                       var list:XMLList = new XMLList();
+                       for(i=0;i<_children.length;i++)
+                       {
+                               if(_children[i].nodeKind() == "comment" && 
propertyName.matches(_children[i].name()))
+                                       list.append(_children[i]);
+                       }
+                       list.targetObject = this;
+                       return list;
                }
                
                /**
@@ -498,7 +602,7 @@ package
                 */
                public function contains(value:XML):Boolean
                {
-                       return null;
+                       return this.equals(value);
                }
                
                /**
@@ -530,16 +634,6 @@ package
                }
                
                /**
-                * [static] Returns an object with the following properties set 
to the default values: ignoreComments, ignoreProcessingInstructions, 
ignoreWhitespace, prettyIndent, and prettyPrinting.
-                * @return 
-                * 
-                */
-               static public function defaultSettings():Object
-               {
-                       return null;
-               }
-               
-               /**
                 * Returns all descendants (children, grandchildren, 
great-grandchildren, and so on) of the XML object that have the given name 
parameter.
                 * 
                 * @param name
@@ -1246,27 +1340,6 @@ package
                }
                
                /**
-                * [static] Sets values for the following XML properties: 
ignoreComments, ignoreProcessingInstructions, ignoreWhitespace, prettyIndent, 
and prettyPrinting.
-                * @param rest
-                * 
-                */
-               static public function setSettings(... rest):void
-               {
-
-               }
-               
-               /**
-                * [static] Retrieves the following properties: ignoreComments, 
ignoreProcessingInstructions, ignoreWhitespace, prettyIndent, and 
prettyPrinting.
-                * 
-                * @return 
-                * 
-                */
-               static public function settings():Object
-               {
-                       return null;
-               }
-               
-               /**
                 * Returns an XMLList object of all XML properties of the XML 
object that represent XML text nodes.
                 * 
                 * @return 

Reply via email to