All Downloads are FREE. Search and download functionalities are using the official Maven repository.

dom.Mutations.kt Maven / Gradle / Ivy

There is a newer version: 1.0.7
Show newest version
package kotlin.dom

import org.w3c.dom.*

/** Removes all the children from this node */
fun Node.clear() {
    while (hasChildNodes()) {
        removeChild(firstChild!!)
    }
}

/**
 * Removes this node from parent node. Does nothing if no parent node
 */
fun Node.removeFromParent() {
    parentNode?.removeChild(this)
}

operator fun Node.plus(child: Node): Node {
    appendChild(child)
    return this
}

operator fun Element.plus(text: String): Element = appendText(text)
operator fun Element.plusAssign(text: String): Unit {
    appendText(text)
}

/** Returns the owner document of the element or uses the provided document */
fun Node.ownerDocument(doc: Document? = null): Document = when {
    nodeType == Node.DOCUMENT_NODE -> this as Document
    else -> doc ?: ownerDocument ?: throw IllegalArgumentException("Neither node contains nor parameter doc provides an owner document for $this")
}

/**
 * Adds a newly created text node to an element which either already has an owner Document or one must be provided as a parameter
 */
@Deprecated("Use appendText() instead", ReplaceWith("appendText(text, doc)"))
fun Element.addText(text: String, doc: Document? = null): Element = appendText(text, doc)

/**
 * Adds a newly created text node to an element which either already has an owner Document or one must be provided as a parameter
 */
@Deprecated("Use appendText() instead", ReplaceWith("appendText(text)"))
fun Element.addText(text: String): Element = appendText(text)


/**
 * Creates text node and append it to the element
 */
fun Element.appendText(text: String, doc : Document? = null): Element {
    appendChild(ownerDocument(doc).createTextNode(text))
    return this
}

/**
 * Appends the node to the specified parent element
 */
fun Node.appendTo(parent: Element) {
    parent.appendChild(this)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy