You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ha...@apache.org on 2016/04/11 00:48:23 UTC

[12/49] git commit: [flex-asjs] [refs/heads/develop] - hasComplexContent(), hasOwnProperty(), hasSimpleContent()

hasComplexContent(),hasOwnProperty(),hasSimpleContent()


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

Branch: refs/heads/develop
Commit: cf9de31cff3124407239f832f3913142680d7439
Parents: f6aee89
Author: Harbs <ha...@in-tools.com>
Authored: Sun Feb 7 17:01:19 2016 +0200
Committer: Harbs <ha...@in-tools.com>
Committed: Sun Feb 7 17:01:19 2016 +0200

----------------------------------------------------------------------
 frameworks/projects/XML/as/src/XML.as | 53 ++++++++++++++++++++++++++++--
 1 file changed, 50 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/cf9de31c/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 e14f8f0..c2dfbe8 100644
--- a/frameworks/projects/XML/as/src/XML.as
+++ b/frameworks/projects/XML/as/src/XML.as
@@ -870,10 +870,25 @@ package
 		 */
 		public function hasComplexContent():Boolean
 		{
-			return false
+			/*
+				When the hasComplexContent method is called on an XML object x, the following steps are taken:
+				1. If x.[[Class]] ∈ {"attribute", "comment", "processing-instruction", "text"}, return false
+				2. For each property p in x
+				a. If p.[[Class]] == "element", return true
+				3. Return false
+			*/
+			if(_nodeKind == "attribute" || _nodeKind == "comment" || _nodeKind == "processing-instruction" || _nodeKind == "text")
+				return false;
+			var i:int;
+			for(i=0i<_children.length;i++)
+			{
+				if(_children[i].nodeKind() == "element")
+					return true;
+			}
+			return false;
 		}
 
-		public function hasOwnProperty():Boolean
+		public function hasOwnProperty(p:*):Boolean
 		{
 			/*
 				When the [[HasProperty]] method of an XML object x is called with property name P, the following steps are taken:
@@ -890,6 +905,23 @@ package
 				    i. Return true
 				5. Return false
 			*/
+			if(parseInt(p,10).toString() == p)
+				return p == "0";
+			var name:QName = toXMLName(p);
+			var i:int;
+			for(i=0;i<_attributes.length;i++)
+			{
+				if(_attributes[i].name().matches(name))
+					return true;
+			}
+			for(i=0;i<_children.length;i++)
+			{
+				if(_children[i].nodeKind() != "element")
+					continue;
+				if(_children[i].name().matches(name))
+					return true;
+			}
+			return false;
 		}
 				
 		/**
@@ -900,7 +932,22 @@ package
 		 */
 		public function hasSimpleContent():Boolean
 		{
-			return false;
+			/*
+				When the hasSimpleContent method is called on an XML object x, the following steps are taken:
+				1. If x.[[Class]] ∈ {"comment", "processing-instruction"}, return false
+				2. For each property p in x
+				a. If p.[[Class]] == "element", return false
+				3. Return true
+			*/
+			if(_nodeKind == "comment" || _nodeKind == "processing-instruction")
+				return false;
+			var i:int;
+			for(i=0i<_children.length;i++)
+			{
+				if(_children[i].nodeKind() == "element")
+					return false;
+			}
+			return true;
 		}
 		
 		/**