diff options
author | bptato <nincsnevem662@gmail.com> | 2023-01-02 02:45:24 +0100 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2023-01-02 02:45:24 +0100 |
commit | f2bf1572456412f109d06c6a49e34cfbe924bbfa (patch) | |
tree | d929d57783dec8a6d40a0c320a52ffc25f1bddf4 /src/html | |
parent | d9edcbddae8da8c9cfad0c3bbe47eac35b55af99 (diff) | |
download | chawan-f2bf1572456412f109d06c6a49e34cfbe924bbfa.tar.gz |
dom: support a few more getters/setters
Diffstat (limited to 'src/html')
-rw-r--r-- | src/html/dom.nim | 55 |
1 files changed, 47 insertions, 8 deletions
diff --git a/src/html/dom.nim b/src/html/dom.nim index d6820d50..1a831a5e 100644 --- a/src/html/dom.nim +++ b/src/html/dom.nim @@ -1152,6 +1152,13 @@ func target0*(element: Element): string = return base.attr("target") return "" +# HTMLHyperlinkElementUtils (for <a> and <area>) +func href0[T: HTMLAnchorElement|HTMLAreaElement](element: T): string = + if element.attrb("href"): + let url = parseUrl(element.attr("href"), some(element.document.url)) + if url.issome: + return $url.get + # <base> func target(base: HTMLBaseElement): string {.jsfget.} = base.attr("target") @@ -1159,13 +1166,52 @@ func target(base: HTMLBaseElement): string {.jsfget.} = proc target(base: HTMLBaseElement, target: string) {.jsfset.} = base.attr("target", target) -# <anchor> +func href(base: HTMLBaseElement): string {.jsfget.} = + if base.attrb("href"): + #TODO with fallback base url + let url = parseUrl(base.attr("href")) + if url.isSome: + return $url.get + +# <a> func target(anchor: HTMLAnchorElement): string {.jsfget.} = anchor.attr("target") proc target(anchor: HTMLAnchorElement, target: string) {.jsfset.} = anchor.attr("target", target) +func href*(anchor: HTMLAnchorElement): string {.jsfget.} = + anchor.href0 + +proc href(anchor: HTMLAnchorElement, href: string) {.jsfset.} = + anchor.attr("href", href) + +func `$`(anchor: HTMLAnchorElement): string {.jsfunc.} = + anchor.href + +# <area> +func href(area: HTMLAreaElement): string {.jsfget.} = + area.href0 + +proc href(area: HTMLAreaElement, href: string) {.jsfset.} = + area.attr("href", href) + +func `$`(area: HTMLAreaElement): string {.jsfunc.} = + area.href + +# <link> +func href*(link: HTMLLinkElement): string {.jsfget.} = + link.attr("href") + +proc href*(link: HTMLLinkElement, href: string) {.jsfset.} = + link.attr("href", href) + +func target(link: HTMLLinkElement): string {.jsfget.} = + link.attr("target") + +proc target(link: HTMLLinkElement, target: string) {.jsfset.} = + link.attr("target", target) + # <label> func htmlFor(label: HTMLLabelElement): string {.jsfget.} = label.attr("for") @@ -1361,13 +1407,6 @@ func parseURL*(document: Document, s: string): Option[URL] = #TODO encodings return parseURL(s, some(document.baseURL)) -func href*[T: HTMLAnchorElement|HTMLLinkElement|HTMLBaseElement](element: T): string = - if element.attrb("href"): - let url = parseUrl(element.attr("href"), some(element.document.url)) - if url.issome: - return $url.get - return "" - func rel*[T: HTMLAnchorElement|HTMLLinkElement|HTMLAreaElement](element: T): string = return element.attr("rel") |