diff options
-rw-r--r-- | changelog.md | 2 | ||||
-rw-r--r-- | lib/js/dom.nim | 19 |
2 files changed, 20 insertions, 1 deletions
diff --git a/changelog.md b/changelog.md index b960f5213..62db91622 100644 --- a/changelog.md +++ b/changelog.md @@ -4,6 +4,8 @@ ## Standard library additions and changes +- Add [DOM Parser](https://developer.mozilla.org/en-US/docs/Web/API/DOMParser) + to the `dom` module for the JavaScript target. ## Language changes diff --git a/lib/js/dom.nim b/lib/js/dom.nim index 92cc038c9..280e47d82 100644 --- a/lib/js/dom.nim +++ b/lib/js/dom.nim @@ -9,7 +9,7 @@ ## Declaration of the Document Object Model for the `JavaScript backend ## <backends.html#backends-the-javascript-target>`_. - +include "system/inclrtl" when not defined(js) and not defined(Nimdoc): {.error: "This module only works on the JavaScript platform".} @@ -985,6 +985,16 @@ type once*: bool passive*: bool +since (1, 3): + type DomParser* = ref object ## \ + ## DOM Parser object (defined on browser only, may not be on NodeJS). + ## * https://developer.mozilla.org/en-US/docs/Web/API/DOMParser + ## + ## .. code-block:: nim + ## let prsr = newDomParser() + ## discard prsr.parseFromString("<html><marquee>Hello World</marquee></html>".cstring, "text/html".cstring) + + proc id*(n: Node): cstring {.importcpp: "#.id", nodecl.} proc `id=`*(n: Node; x: cstring) {.importcpp: "#.id = #", nodecl.} proc class*(n: Node): cstring {.importcpp: "#.className", nodecl.} @@ -1297,3 +1307,10 @@ proc offsetHeight*(e: Node): int {.importcpp: "#.offsetHeight", nodecl.} proc offsetWidth*(e: Node): int {.importcpp: "#.offsetWidth", nodecl.} proc offsetTop*(e: Node): int {.importcpp: "#.offsetTop", nodecl.} proc offsetLeft*(e: Node): int {.importcpp: "#.offsetLeft", nodecl.} + +since (1, 3): + func newDomParser*(): DOMParser {.importcpp: "(new DOMParser())".} + ## DOM Parser constructor. + + func parseFromString*(this: DOMParser; str: cstring; mimeType: cstring): Document {.importcpp.} + ## Parse from string to `Document`. |