From 3e6c0c0f4eadf04bcd2bec1be03de56d151db5e4 Mon Sep 17 00:00:00 2001 From: James Strachan Date: Wed, 12 Sep 2012 14:58:30 +0100 Subject: [PATCH] fixed bad description on the elements() helper methods (which are descendants not children) and added some helper methods for immediate child elements and text --- libraries/stdlib/src/kotlin/dom/Dom.kt | 35 +++++++++++++------------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/libraries/stdlib/src/kotlin/dom/Dom.kt b/libraries/stdlib/src/kotlin/dom/Dom.kt index cb2474960f1..783688646af 100644 --- a/libraries/stdlib/src/kotlin/dom/Dom.kt +++ b/libraries/stdlib/src/kotlin/dom/Dom.kt @@ -17,8 +17,13 @@ private fun emptyNodeList(): List = Collections.emptyList()!! var Node.text : String get() { return textContent -/* - if (this.nodeType == Node.ELEMENT_NODE) { +} +set(value) { + textContent = value +} + +var Element.childrenText: String + get() { val buffer = StringBuilder() val nodeList = this.childNodes if (nodeList != null) { @@ -35,15 +40,8 @@ get() { } } return buffer.toString().sure() - } else { - return this.nodeValue } -*/ -} -set(value) { - textContent = value - /* - if (nodeType == Node.ELEMENT_NODE) { + set(value) { val element = this as Element // lets remove all the previous text nodes first for (node in element.children()) { @@ -52,11 +50,7 @@ set(value) { } } element.addText(value) - } else { - nodeValue = value } - */ -} var Element.id : String get() = this.getAttribute("id")?: "" @@ -91,21 +85,26 @@ inline fun Element?.children(): List { return this?.childNodes.toList() } -/** The child elements of this document */ +/** Returns the child elements of this element */ +inline fun Element?.childElements(): List { + return children().filter{ it.nodeType == Node.ELEMENT_NODE }.map { it as Element } +} + +/** The descendent elements of this document */ val Document?.elements : List get() = this?.getElementsByTagName("*").toElementList() -/** The child elements of this elements */ +/** The descendant elements of this elements */ val Element?.elements : List get() = this?.getElementsByTagName("*").toElementList() -/** Returns all the child elements given the local element name */ +/** Returns all the descendant elements given the local element name */ inline fun Element?.elements(localName: String): List { return this?.getElementsByTagName(localName).toElementList() } -/** Returns all the elements given the local element name */ +/** Returns all the descendant elements given the local element name */ inline fun Document?.elements(localName: String): List { return this?.getElementsByTagName(localName).toElementList() }