diff --git a/libraries/stdlib/js/idl/org.w3c.css.masking.idl b/libraries/stdlib/js/idl/org.w3c.css.masking.idl new file mode 100644 index 00000000000..2849bd7aeb4 --- /dev/null +++ b/libraries/stdlib/js/idl/org.w3c.css.masking.idl @@ -0,0 +1,21 @@ +namespace org.w3c.css.masking; + + +// Downloaded from https://www.w3.org/TR/css-masking-1/ +interface SVGClipPathElement : SVGElement { +readonly attribute SVGAnimatedEnumeration clipPathUnits; +readonly attribute SVGAnimatedTransformList transform; +}; + +SVGClipPathElement implements SVGUnitTypes; +interface SVGMaskElement : SVGElement { +readonly attribute SVGAnimatedEnumeration maskUnits; +readonly attribute SVGAnimatedEnumeration maskContentUnits; +readonly attribute SVGAnimatedLength x; +readonly attribute SVGAnimatedLength y; +readonly attribute SVGAnimatedLength width; +readonly attribute SVGAnimatedLength height; +}; + +SVGMaskElement implements SVGUnitTypes; + diff --git a/libraries/stdlib/js/src/org.w3c/org.khronos.webgl.kt b/libraries/stdlib/js/src/org.w3c/org.khronos.webgl.kt index dd44dca6613..d7133ab7348 100644 --- a/libraries/stdlib/js/src/org.w3c/org.khronos.webgl.kt +++ b/libraries/stdlib/js/src/org.w3c/org.khronos.webgl.kt @@ -10,6 +10,7 @@ package org.khronos.webgl import kotlin.js.* +import org.w3c.css.masking.* import org.w3c.dom.* import org.w3c.dom.css.* import org.w3c.dom.events.* diff --git a/libraries/stdlib/js/src/org.w3c/org.w3c.css.masking.kt b/libraries/stdlib/js/src/org.w3c/org.w3c.css.masking.kt new file mode 100644 index 00000000000..c462d627ee5 --- /dev/null +++ b/libraries/stdlib/js/src/org.w3c/org.w3c.css.masking.kt @@ -0,0 +1,59 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT! +// See libraries/tools/idl2k for details + +@file:Suppress("NESTED_CLASS_IN_EXTERNAL_INTERFACE") +package org.w3c.css.masking + +import kotlin.js.* +import org.khronos.webgl.* +import org.w3c.dom.* +import org.w3c.dom.css.* +import org.w3c.dom.events.* +import org.w3c.dom.parsing.* +import org.w3c.dom.pointerevents.* +import org.w3c.dom.svg.* +import org.w3c.dom.url.* +import org.w3c.fetch.* +import org.w3c.files.* +import org.w3c.notifications.* +import org.w3c.performance.* +import org.w3c.workers.* +import org.w3c.xhr.* + +/** + * Exposes the JavaScript [SVGClipPathElement](https://developer.mozilla.org/en/docs/Web/API/SVGClipPathElement) to Kotlin + */ +public external abstract class SVGClipPathElement : SVGElement, SVGUnitTypes { + open val clipPathUnits: SVGAnimatedEnumeration + open val transform: SVGAnimatedTransformList + + companion object { + val SVG_UNIT_TYPE_UNKNOWN: Short + val SVG_UNIT_TYPE_USERSPACEONUSE: Short + val SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: Short + } +} + +/** + * Exposes the JavaScript [SVGMaskElement](https://developer.mozilla.org/en/docs/Web/API/SVGMaskElement) to Kotlin + */ +public external abstract class SVGMaskElement : SVGElement, SVGUnitTypes { + open val maskUnits: SVGAnimatedEnumeration + open val maskContentUnits: SVGAnimatedEnumeration + open val x: SVGAnimatedLength + open val y: SVGAnimatedLength + open val width: SVGAnimatedLength + open val height: SVGAnimatedLength + + companion object { + val SVG_UNIT_TYPE_UNKNOWN: Short + val SVG_UNIT_TYPE_USERSPACEONUSE: Short + val SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: Short + } +} + diff --git a/libraries/stdlib/js/src/org.w3c/org.w3c.dom.css.kt b/libraries/stdlib/js/src/org.w3c/org.w3c.dom.css.kt index 556b5d4c362..4dea0f510a8 100644 --- a/libraries/stdlib/js/src/org.w3c/org.w3c.dom.css.kt +++ b/libraries/stdlib/js/src/org.w3c/org.w3c.dom.css.kt @@ -11,6 +11,7 @@ package org.w3c.dom.css import kotlin.js.* import org.khronos.webgl.* +import org.w3c.css.masking.* import org.w3c.dom.* import org.w3c.dom.events.* import org.w3c.dom.parsing.* diff --git a/libraries/stdlib/js/src/org.w3c/org.w3c.dom.events.kt b/libraries/stdlib/js/src/org.w3c/org.w3c.dom.events.kt index a76c57ad41b..28814b80b4c 100644 --- a/libraries/stdlib/js/src/org.w3c/org.w3c.dom.events.kt +++ b/libraries/stdlib/js/src/org.w3c/org.w3c.dom.events.kt @@ -11,6 +11,7 @@ package org.w3c.dom.events import kotlin.js.* import org.khronos.webgl.* +import org.w3c.css.masking.* import org.w3c.dom.* import org.w3c.dom.css.* import org.w3c.dom.parsing.* diff --git a/libraries/stdlib/js/src/org.w3c/org.w3c.dom.kt b/libraries/stdlib/js/src/org.w3c/org.w3c.dom.kt index bbc06b1c36e..7e42b61faeb 100644 --- a/libraries/stdlib/js/src/org.w3c/org.w3c.dom.kt +++ b/libraries/stdlib/js/src/org.w3c/org.w3c.dom.kt @@ -11,6 +11,7 @@ package org.w3c.dom import kotlin.js.* import org.khronos.webgl.* +import org.w3c.css.masking.* import org.w3c.dom.css.* import org.w3c.dom.events.* import org.w3c.dom.parsing.* diff --git a/libraries/stdlib/js/src/org.w3c/org.w3c.dom.parsing.kt b/libraries/stdlib/js/src/org.w3c/org.w3c.dom.parsing.kt index 1292991eac4..fa7de098789 100644 --- a/libraries/stdlib/js/src/org.w3c/org.w3c.dom.parsing.kt +++ b/libraries/stdlib/js/src/org.w3c/org.w3c.dom.parsing.kt @@ -11,6 +11,7 @@ package org.w3c.dom.parsing import kotlin.js.* import org.khronos.webgl.* +import org.w3c.css.masking.* import org.w3c.dom.* import org.w3c.dom.css.* import org.w3c.dom.events.* diff --git a/libraries/stdlib/js/src/org.w3c/org.w3c.dom.pointerevents.kt b/libraries/stdlib/js/src/org.w3c/org.w3c.dom.pointerevents.kt index 0bab04de6b2..c7a38f69dfb 100644 --- a/libraries/stdlib/js/src/org.w3c/org.w3c.dom.pointerevents.kt +++ b/libraries/stdlib/js/src/org.w3c/org.w3c.dom.pointerevents.kt @@ -11,6 +11,7 @@ package org.w3c.dom.pointerevents import kotlin.js.* import org.khronos.webgl.* +import org.w3c.css.masking.* import org.w3c.dom.* import org.w3c.dom.css.* import org.w3c.dom.events.* diff --git a/libraries/stdlib/js/src/org.w3c/org.w3c.dom.svg.kt b/libraries/stdlib/js/src/org.w3c/org.w3c.dom.svg.kt index ee81f1de685..565cd709eb0 100644 --- a/libraries/stdlib/js/src/org.w3c/org.w3c.dom.svg.kt +++ b/libraries/stdlib/js/src/org.w3c/org.w3c.dom.svg.kt @@ -11,6 +11,7 @@ package org.w3c.dom.svg import kotlin.js.* import org.khronos.webgl.* +import org.w3c.css.masking.* import org.w3c.dom.* import org.w3c.dom.css.* import org.w3c.dom.events.* diff --git a/libraries/stdlib/js/src/org.w3c/org.w3c.dom.url.kt b/libraries/stdlib/js/src/org.w3c/org.w3c.dom.url.kt index 865e341a054..63bd88baf2c 100644 --- a/libraries/stdlib/js/src/org.w3c/org.w3c.dom.url.kt +++ b/libraries/stdlib/js/src/org.w3c/org.w3c.dom.url.kt @@ -11,6 +11,7 @@ package org.w3c.dom.url import kotlin.js.* import org.khronos.webgl.* +import org.w3c.css.masking.* import org.w3c.dom.* import org.w3c.dom.css.* import org.w3c.dom.events.* diff --git a/libraries/stdlib/js/src/org.w3c/org.w3c.fetch.kt b/libraries/stdlib/js/src/org.w3c/org.w3c.fetch.kt index c4bbb5871b5..6eb72ee188e 100644 --- a/libraries/stdlib/js/src/org.w3c/org.w3c.fetch.kt +++ b/libraries/stdlib/js/src/org.w3c/org.w3c.fetch.kt @@ -11,6 +11,7 @@ package org.w3c.fetch import kotlin.js.* import org.khronos.webgl.* +import org.w3c.css.masking.* import org.w3c.dom.* import org.w3c.dom.css.* import org.w3c.dom.events.* diff --git a/libraries/stdlib/js/src/org.w3c/org.w3c.files.kt b/libraries/stdlib/js/src/org.w3c/org.w3c.files.kt index 22ee1a0e015..48988fbaa2e 100644 --- a/libraries/stdlib/js/src/org.w3c/org.w3c.files.kt +++ b/libraries/stdlib/js/src/org.w3c/org.w3c.files.kt @@ -11,6 +11,7 @@ package org.w3c.files import kotlin.js.* import org.khronos.webgl.* +import org.w3c.css.masking.* import org.w3c.dom.* import org.w3c.dom.css.* import org.w3c.dom.events.* diff --git a/libraries/stdlib/js/src/org.w3c/org.w3c.notifications.kt b/libraries/stdlib/js/src/org.w3c/org.w3c.notifications.kt index a04ba6e4a7e..eb3a92cf17b 100644 --- a/libraries/stdlib/js/src/org.w3c/org.w3c.notifications.kt +++ b/libraries/stdlib/js/src/org.w3c/org.w3c.notifications.kt @@ -11,6 +11,7 @@ package org.w3c.notifications import kotlin.js.* import org.khronos.webgl.* +import org.w3c.css.masking.* import org.w3c.dom.* import org.w3c.dom.css.* import org.w3c.dom.events.* diff --git a/libraries/stdlib/js/src/org.w3c/org.w3c.performance.kt b/libraries/stdlib/js/src/org.w3c/org.w3c.performance.kt index f87a172ba78..6b2ad6f5ff1 100644 --- a/libraries/stdlib/js/src/org.w3c/org.w3c.performance.kt +++ b/libraries/stdlib/js/src/org.w3c/org.w3c.performance.kt @@ -11,6 +11,7 @@ package org.w3c.performance import kotlin.js.* import org.khronos.webgl.* +import org.w3c.css.masking.* import org.w3c.dom.* import org.w3c.dom.css.* import org.w3c.dom.events.* diff --git a/libraries/stdlib/js/src/org.w3c/org.w3c.workers.kt b/libraries/stdlib/js/src/org.w3c/org.w3c.workers.kt index 7b11396a0fe..e97dec0a463 100644 --- a/libraries/stdlib/js/src/org.w3c/org.w3c.workers.kt +++ b/libraries/stdlib/js/src/org.w3c/org.w3c.workers.kt @@ -11,6 +11,7 @@ package org.w3c.workers import kotlin.js.* import org.khronos.webgl.* +import org.w3c.css.masking.* import org.w3c.dom.* import org.w3c.dom.css.* import org.w3c.dom.events.* diff --git a/libraries/stdlib/js/src/org.w3c/org.w3c.xhr.kt b/libraries/stdlib/js/src/org.w3c/org.w3c.xhr.kt index 7602cb6cc7a..a8b76ee5672 100644 --- a/libraries/stdlib/js/src/org.w3c/org.w3c.xhr.kt +++ b/libraries/stdlib/js/src/org.w3c/org.w3c.xhr.kt @@ -11,6 +11,7 @@ package org.w3c.xhr import kotlin.js.* import org.khronos.webgl.* +import org.w3c.css.masking.* import org.w3c.dom.* import org.w3c.dom.css.* import org.w3c.dom.events.* diff --git a/libraries/tools/idl2k/build.gradle b/libraries/tools/idl2k/build.gradle index 0aa153dfb90..531a885d9d3 100644 --- a/libraries/tools/idl2k/build.gradle +++ b/libraries/tools/idl2k/build.gradle @@ -34,7 +34,7 @@ generateGrammarSource { compileKotlin.dependsOn generateGrammarSource compileTestKotlin.dependsOn generateTestGrammarSource -task downloadAllIdls(type: JavaExec) { +task downloadIDL(type: JavaExec) { main = "org.jetbrains.idl2k.dl.DownloadKt" classpath = sourceSets.main.runtimeClasspath } @@ -42,4 +42,4 @@ task downloadAllIdls(type: JavaExec) { task idl2k(type: JavaExec) { main = "org.jetbrains.idl2k.MainKt" classpath = sourceSets.main.runtimeClasspath -} +} \ No newline at end of file diff --git a/libraries/tools/idl2k/src/main/kotlin/config.kt b/libraries/tools/idl2k/src/main/kotlin/config.kt index f3115143a7b..c9d79118228 100644 --- a/libraries/tools/idl2k/src/main/kotlin/config.kt +++ b/libraries/tools/idl2k/src/main/kotlin/config.kt @@ -27,6 +27,8 @@ val urls = listOf( "http://www.w3.org/TR/pointerevents/" to "org.w3c.dom.pointerevents", "https://drafts.csswg.org/cssom/" to "org.w3c.dom.css", + "https://www.w3.org/TR/css-masking-1/" to "org.w3c.css.masking", + "http://www.w3.org/TR/DOM-Parsing/" to "org.w3c.dom.parsing", "https://raw.githubusercontent.com/whatwg/url/master/url.html" to "org.w3c.dom.url", diff --git a/libraries/tools/idl2k/src/main/kotlin/dl/download.kt b/libraries/tools/idl2k/src/main/kotlin/dl/download.kt index 1bb58a690a6..9425614f67c 100644 --- a/libraries/tools/idl2k/src/main/kotlin/dl/download.kt +++ b/libraries/tools/idl2k/src/main/kotlin/dl/download.kt @@ -33,7 +33,7 @@ fun main(args: Array) { val arg = argsIterator.next() when (arg) { - "-package", "-pkg", "--package" -> if (argsIterator.hasNext()) packageFilter = argsIterator.next() else throw IllegalArgumentException("argument $arg requires argument") + "--pkg" -> if (argsIterator.hasNext()) packageFilter = argsIterator.next() else throw IllegalArgumentException("argument $arg requires argument") else -> throw IllegalArgumentException("Argument $arg is unknown") } } @@ -79,23 +79,28 @@ private fun fetch(url: String): String? { } } +private fun Appendable.append(element: Element) { + val text = element.text() + appendln(text) + if (!text.trimEnd().endsWith(";")) { + appendln(";") + } +} + + +private fun List.attachTo(out: Appendable) = map { element -> + if (!element.tag().preserveWhitespace()) { + Element(Tag.valueOf("pre"), element.baseUri()).appendChild(element) + } else element +}.forEach { out.append(it) } + + private fun extractIDLText(rawContent: String, out: Appendable) { val soup = Jsoup.parse(rawContent) - fun append(it : Element) { - if (!it.tag().preserveWhitespace()) { - return append(Element(Tag.valueOf("pre"), it.baseUri()).appendChild(it)) - } - - val text = it.text() - out.appendln(text) - if (!text.trimEnd().endsWith(";")) { - out.appendln(";") - } - } soup.select(".dfn-panel").remove() - soup.select("pre.idl").filter {!it.hasClass("extract")}.forEach(::append) - soup.select("code.idl-code").forEach(::append) - soup.select("spec-idl").forEach(::append) + soup.select("pre.idl").filter {!it.hasClass("extract")}.attachTo(out) + soup.select("code.idl-code").attachTo(out) + soup.select("spec-idl").attachTo(out) }