HTMLGen Update, Add runnableExamples, Add HTML Tags center, details, dialog, marquee, picture, slot, summary (#9252)

This commit is contained in:
Juan Carlos 2018-10-09 08:13:13 -03:00 • committed by Andreas Rumpf
commit bc557e4c6a

View file

@ -32,7 +32,7 @@ import
const const
coreAttr* = " accesskey class contenteditable dir hidden id lang " & coreAttr* = " accesskey class contenteditable dir hidden id lang " &
"spellcheck style tabindex title translate " "spellcheck style tabindex title translate " ## HTML DOM Core Attributes
eventAttr* = "onabort onblur oncancel oncanplay oncanplaythrough onchange " & eventAttr* = "onabort onblur oncancel oncanplay oncanplaythrough onchange " &
"onclick oncuechange ondblclick ondurationchange onemptied onended " & "onclick oncuechange ondblclick ondurationchange onemptied onended " &
"onerror onfocus oninput oninvalid onkeydown onkeypress onkeyup onload " & "onerror onfocus oninput oninvalid onkeydown onkeypress onkeyup onload " &
@ -40,9 +40,9 @@ const
"onmouseleave onmousemove onmouseout onmouseover onmouseup onmousewheel " & "onmouseleave onmousemove onmouseout onmouseover onmouseup onmousewheel " &
"onpause onplay onplaying onprogress onratechange onreset onresize " & "onpause onplay onplaying onprogress onratechange onreset onresize " &
"onscroll onseeked onseeking onselect onshow onstalled onsubmit " & "onscroll onseeked onseeking onselect onshow onstalled onsubmit " &
"onsuspend ontimeupdate ontoggle onvolumechange onwaiting " "onsuspend ontimeupdate ontoggle onvolumechange onwaiting " ## HTML DOM Event Attributes
ariaAttr* = " role " ariaAttr* = " role " ## HTML DOM Aria Attributes
commonAttr* = coreAttr & eventAttr & ariaAttr commonAttr* = coreAttr & eventAttr & ariaAttr ## HTML DOM Common Attributes
proc getIdent(e: NimNode): string {.compileTime.} = proc getIdent(e: NimNode): string {.compileTime.} =
case e.kind case e.kind
@ -203,6 +203,11 @@ macro caption*(e: varargs[untyped]): untyped =
let e = callsite() let e = callsite()
result = xmlCheckedTag(e, "caption", commonAttr) result = xmlCheckedTag(e, "caption", commonAttr)
macro center*(e: varargs[untyped]): untyped =
## Generates the HTML ``center`` element.
let e = callsite()
result = xmlCheckedTag(e, "center", commonAttr)
macro cite*(e: varargs[untyped]): untyped = macro cite*(e: varargs[untyped]): untyped =
## generates the HTML ``cite`` element. ## generates the HTML ``cite`` element.
let e = callsite() let e = callsite()
@ -243,11 +248,21 @@ macro del*(e: varargs[untyped]): untyped =
let e = callsite() let e = callsite()
result = xmlCheckedTag(e, "del", "cite datetime" & commonAttr) result = xmlCheckedTag(e, "del", "cite datetime" & commonAttr)
macro details*(e: varargs[untyped]): untyped =
## Generates the HTML ``details`` element.
let e = callsite()
result = xmlCheckedTag(e, "details", commonAttr & "open")
macro dfn*(e: varargs[untyped]): untyped = macro dfn*(e: varargs[untyped]): untyped =
## generates the HTML ``dfn`` element. ## generates the HTML ``dfn`` element.
let e = callsite() let e = callsite()
result = xmlCheckedTag(e, "dfn", commonAttr) result = xmlCheckedTag(e, "dfn", commonAttr)
macro dialog*(e: varargs[untyped]): untyped =
## Generates the HTML ``dialog`` element.
let e = callsite()
result = xmlCheckedTag(e, "dialog", commonAttr & "open")
macro `div`*(e: varargs[untyped]): untyped = macro `div`*(e: varargs[untyped]): untyped =
## generates the HTML ``div`` element. ## generates the HTML ``div`` element.
let e = callsite() let e = callsite()
@ -428,6 +443,13 @@ macro mark*(e: varargs[untyped]): untyped =
let e = callsite() let e = callsite()
result = xmlCheckedTag(e, "mark", commonAttr) result = xmlCheckedTag(e, "mark", commonAttr)
macro marquee*(e: varargs[untyped]): untyped =
## Generates the HTML ``marquee`` element.
let e = callsite()
result = xmlCheckedTag(e, "marquee", coreAttr &
"behavior bgcolor direction height hspace loop scrollamount " &
"scrolldelay truespeed vspace width onbounce onfinish onstart")
macro meta*(e: varargs[untyped]): untyped = macro meta*(e: varargs[untyped]): untyped =
## generates the HTML ``meta`` element. ## generates the HTML ``meta`` element.
let e = callsite() let e = callsite()
@ -487,6 +509,11 @@ macro param*(e: varargs[untyped]): untyped =
let e = callsite() let e = callsite()
result = xmlCheckedTag(e, "param", commonAttr, "name value", true) result = xmlCheckedTag(e, "param", commonAttr, "name value", true)
macro picture*(e: varargs[untyped]): untyped =
## Generates the HTML ``picture`` element.
let e = callsite()
result = xmlCheckedTag(e, "picture", commonAttr)
macro pre*(e: varargs[untyped]): untyped = macro pre*(e: varargs[untyped]): untyped =
## generates the HTML ``pre`` element. ## generates the HTML ``pre`` element.
let e = callsite() let e = callsite()
@ -554,6 +581,11 @@ macro select*(e: varargs[untyped]): untyped =
result = xmlCheckedTag(e, "select", "autofocus disabled form multiple " & result = xmlCheckedTag(e, "select", "autofocus disabled form multiple " &
"name required size" & commonAttr) "name required size" & commonAttr)
macro slot*(e: varargs[untyped]): untyped =
## Generates the HTML ``slot`` element.
let e = callsite()
result = xmlCheckedTag(e, "slot", commonAttr)
macro small*(e: varargs[untyped]): untyped = macro small*(e: varargs[untyped]): untyped =
## generates the HTML ``small`` element. ## generates the HTML ``small`` element.
let e = callsite() let e = callsite()
@ -584,6 +616,11 @@ macro sub*(e: varargs[untyped]): untyped =
let e = callsite() let e = callsite()
result = xmlCheckedTag(e, "sub", commonAttr) result = xmlCheckedTag(e, "sub", commonAttr)
macro summary*(e: varargs[untyped]): untyped =
## Generates the HTML ``summary`` element.
let e = callsite()
result = xmlCheckedTag(e, "summary", commonAttr)
macro sup*(e: varargs[untyped]): untyped = macro sup*(e: varargs[untyped]): untyped =
## generates the HTML ``sup`` element. ## generates the HTML ``sup`` element.
let e = callsite() let e = callsite()
@ -684,7 +721,7 @@ macro wbr*(e: varargs[untyped]): untyped =
let e = callsite() let e = callsite()
result = xmlCheckedTag(e, "wbr", commonAttr, "", true) result = xmlCheckedTag(e, "wbr", commonAttr, "", true)
when isMainModule: runnableExamples:
let nim = "Nim" let nim = "Nim"
assert h1(a(href="http://nim-lang.org", nim)) == assert h1(a(href="http://nim-lang.org", nim)) ==
"""<h1><a href="http://nim-lang.org">Nim</a></h1>""" """<h1><a href="http://nim-lang.org">Nim</a></h1>"""