Преглед изворни кода

more checks, added parent.

Nicolas Cannasse пре 19 година
родитељ
комит
fbc33cbb7f
1 измењених фајлова са 17 додато и 0 уклоњено
  1. 17 0
      std/flash/FlashXml__.hx

+ 17 - 0
std/flash/FlashXml__.hx

@@ -30,6 +30,7 @@ class FlashXml__ {
 	public var nodeName(getNodeName,setNodeName) : String;
 	public var nodeName(getNodeName,setNodeName) : String;
 	public var nodeValue(getNodeValue,setNodeValue) : String;
 	public var nodeValue(getNodeValue,setNodeValue) : String;
 	public var nodeType(default,null) : XmlType;
 	public var nodeType(default,null) : XmlType;
+	public var parent(getParent,null) : Xml;
 
 
 	private var __x : Dynamic;
 	private var __x : Dynamic;
 
 
@@ -144,7 +145,13 @@ class FlashXml__ {
 		return __x[untyped "nodeValue"];
 		return __x[untyped "nodeValue"];
 	}
 	}
 
 
+	private function getParent() : Xml {
+		return __x[untyped "parentNode"];
+	}
+
 	public function iterator() : Iterator<Xml> {
 	public function iterator() : Iterator<Xml> {
+		if( nodeType != Xml.Document && nodeType != Xml.Element )
+			throw "bad nodeType";
 		return untyped {
 		return untyped {
 			cur: this.__x[untyped "firstChild"],
 			cur: this.__x[untyped "firstChild"],
 			hasNext : function(){
 			hasNext : function(){
@@ -159,6 +166,8 @@ class FlashXml__ {
 	}
 	}
 
 
 	public function elements() : Iterator<Xml> {
 	public function elements() : Iterator<Xml> {
+		if( nodeType != Xml.Document && nodeType != Xml.Element )
+			throw "bad nodeType";
 		return untyped {
 		return untyped {
 			cur: this.__x[untyped "firstChild"],
 			cur: this.__x[untyped "firstChild"],
 			hasNext : function() {
 			hasNext : function() {
@@ -183,6 +192,8 @@ class FlashXml__ {
 	}
 	}
 
 
 	public function elementsNamed( nodeName : String ){
 	public function elementsNamed( nodeName : String ){
+		if( nodeType != Xml.Document && nodeType != Xml.Element )
+			throw "bad nodeType";
 		return untyped {
 		return untyped {
 			cur: this.__x[untyped "firstChild"],
 			cur: this.__x[untyped "firstChild"],
 			hasNext : function() {
 			hasNext : function() {
@@ -237,10 +248,14 @@ class FlashXml__ {
 	}
 	}
 
 
 	public function addChild( child : Xml ) {
 	public function addChild( child : Xml ) {
+		if( nodeType != Xml.Document && nodeType != Xml.Element )
+			throw "bad nodeType";
 		untyped __x[untyped "appendChild"](child.__x);
 		untyped __x[untyped "appendChild"](child.__x);
 	}
 	}
 
 
 	public function removeChild( child : Xml ) : Bool {
 	public function removeChild( child : Xml ) : Bool {
+		if( nodeType != Xml.Document && nodeType != Xml.Element )
+			throw "bad nodeType";
 		untyped if( child.__x["parentNode"] != __x )
 		untyped if( child.__x["parentNode"] != __x )
 			return false;
 			return false;
 		untyped child.__x["removeNode"]();
 		untyped child.__x["removeNode"]();
@@ -248,6 +263,8 @@ class FlashXml__ {
 	}
 	}
 
 
 	public function insertChild( x : Xml, pos : Int ) : Void {
 	public function insertChild( x : Xml, pos : Int ) : Void {
+		if( nodeType != Xml.Document && nodeType != Xml.Element )
+			throw "bad nodeType";
 		var c : Array<Dynamic> = __x[untyped "childNodes"];
 		var c : Array<Dynamic> = __x[untyped "childNodes"];
 		if( pos <= c.length )
 		if( pos <= c.length )
 			__x[untyped "insertBefore"](untyped x.__x,c[pos]);
 			__x[untyped "insertBefore"](untyped x.__x,c[pos]);