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:19 UTC
[08/49] git commit: [flex-asjs] [refs/heads/develop] - copy(),
equals() and some fixes
copy(), equals() and some fixes
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/a2d921d0
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/a2d921d0
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/a2d921d0
Branch: refs/heads/develop
Commit: a2d921d019e164efb6607949defdb1bcc2536784
Parents: 988296e
Author: Harbs <ha...@in-tools.com>
Authored: Sun Feb 7 00:02:13 2016 +0200
Committer: Harbs <ha...@in-tools.com>
Committed: Sun Feb 7 00:02:13 2016 +0200
----------------------------------------------------------------------
frameworks/projects/XML/as/src/QName.as | 3 +-
frameworks/projects/XML/as/src/XML.as | 98 ++++++++++++++++++++++++++--
2 files changed, 96 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a2d921d0/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 d24b7a7..2ceb487 100644
--- a/frameworks/projects/XML/as/src/QName.as
+++ b/frameworks/projects/XML/as/src/QName.as
@@ -49,6 +49,7 @@ package
{
_uri = qNameOrUri.uri;
_localName = qNameOrUri.localName;
+ _prefix = qNameOrUri.prefix;
}
else if(qNameOrUri is Namespace)
{
@@ -102,7 +103,7 @@ package
public function equals(name:QName):Boolean
{
- return this.uri == name.uri && this.prefix == name.prefix && this.localName == name.localName;
+ return this.uri == name.uri && this.localName == name.localName; // this.prefix == name.prefix &&
}
public function matches(name:QName):Boolean
{
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a2d921d0/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 8be71e2..d077ae8 100644
--- a/frameworks/projects/XML/as/src/XML.as
+++ b/frameworks/projects/XML/as/src/XML.as
@@ -150,7 +150,7 @@ package
xml.setNodeKind("attribute");
xml.setName(att.name);
xml.setValue(att.value);
- parent.
+ parent.addChild(xml);
return xml;
}
static private function iterateElement(node:Element,xml:XML):void
@@ -283,7 +283,7 @@ package
public function XML(xml:String = null)
{
- if(xml != "")
+ if(xml)
{
var parser:DOMParser = new DOMParser();
// get error namespace. It's different in different browsers.
@@ -627,7 +627,23 @@ package
c. Let c.[[Parent]] = y
6. Return y
*/
- return null;
+ var i:int;
+ var xml:XML = new XML();
+ xml.setNodeKind(_nodeKind);
+ xml.setName(name());
+ xml.setValue(_value);
+ for(i-0;i<_namespaces.length;i++)
+ {
+ xml.addNamespace(new Namespace(_namespaces[i]));
+ }
+ //parent should be null by default
+ for(i=0;i<_attributes.length;i++)
+ xml.addChild(_attributes[i].copy());
+
+ for(i=0;i<_children.length;i++)
+ xml.addChild(_children[i].copy());
+
+ return xml;
}
/**
@@ -702,7 +718,7 @@ package
return null;
}
- public function equals(xml:XML):Boolean
+ public function equals(xml:*):Boolean
{
/*
When the [[Equals]] method of an XML object x is called with value V, the following steps are taken:
@@ -723,6 +739,66 @@ package
b. If r == false, return false
10. Return true
*/
+ var i:int;
+ if(!(xml is XML))
+ return false;
+
+ if(xml.nodeKind() != _nodeKind)
+ return false;
+
+ if(!name().equals(xml.name()))
+ return false;
+ var selfAttrs:Array = getAttributeArray();
+ var xmlAttrs:Array = xml.getAttributeArray();
+ if(selfAttrs.length != xmlAttrs.length)
+ return false;
+ //length comparison should not be necessary because xml always has a length of 1
+ if(getValue() != xml.getValue())
+ return false;
+
+ for(i=0;i<selfAttrs.length;i++)
+ {
+ if(!xml.hasAttribute(selfAttrs[i]))
+ return false;
+ }
+ var selfChldrn:Array = getChildrenArray();
+ var xmlChildren:Array = xml.getChildrenArray();
+ if(selfChldrn.length != xmlChildren.length)
+ return false;
+
+ for(i=0;i<selfChldrn.length;i++)
+ {
+ if(!selfChldrn[i].equals(xmlChildren[i]))
+ return false;
+ }
+ return true;
+ }
+
+ public function hasAttribute(nameOrXML:*,value:String=null):Boolean
+ {
+ if(!_attributes)
+ return false;
+ var name:QName;
+ if(nameOrXML is XML)
+ {
+ name = nameOrXML.name();
+ value = nameOrXML.getValue();
+ }
+ else
+ {
+ name = new QName(nameOrXML);
+ }
+ var i:int;
+ for(i=0;i<_attributes.length;i++)
+ {
+ if(name.matches(_attributes[i].name()))
+ {
+ if(!value)
+ return true;
+ return value == _attributes[i].getValue();
+ }
+ }
+ return false;
}
private function getAncestorNamespaces(namespaces:Array):Array
@@ -756,6 +832,15 @@ package
return namespaces;
}
+ public function getAttributeArray():Array
+ {
+ return _attributes ? _attributes.slice() : [];
+ }
+ public function getChildrenArray():Array
+ {
+ return _children ? _children.slice() : [];
+ }
+
public function getIndexOf(elem:XML):int
{
return _children.indexOf(elem);
@@ -772,6 +857,11 @@ package
}
return "";
}
+
+ public function getValue():String
+ {
+ return _value;
+ }
/**
* Checks to see whether the XML object contains complex content.
*