htmly

Search:
Group by:
Source   Edit  

htmly consists of macros corresponding to every HTML tag you would normally use, here's how you would usually use it in your program:

from htmly import htmly, h1, p, a

htmly:
  h1 {"class": "cen"}: "Hello world!"
  p:
    "Welcome to my website! "
    "Click "
    a {"href": "#"}: "here"
    " for more."

All of that writes the following string:

<h1 class="cen">Hello world!</h1>
<p>Welcome to my website! Click <a href="#">here</a> for more.</p>

All HTML generation happens at compile-time which saves you from run-time costs, and since the result is a simple string that can be used anywhere, it becomes easy to integrate htmly into any framework or library you desire!

One cautionary word of advice is watch out for what you import, as importing the entire htmly library is possible, but not recommended. It's much safer instead to explicitly import the tags you use, so as to not pollute your local namespace with tags.

Here's an example of how to import htmly with only the h1, p and htmly macros.

from htmly import htmly, h1, p

The htmly macro

The htmly macro just combines multiple HTML macros into a single string, that's all it does. You could instead write the following:

from htmly import h1

h1:
  "Hello World!"

Which would get you the following HTML:

<h1>Hello World!</h1>

But without the htmly macro, you can only nest HTML elements and not create them, here's a couple more examples to demonstrate what exactly this means. Writing the following:

# Legal
from htmly import h1, em
h1:
  p: "Hello World!"

gets you:

<h1><em>Hello World!</em></h1>

Whereas writing the following:

# Legal
from htmly import htmly, h1, p
htmly:
  h1: "Hello!"
  p: "Welcome to my webpage!"

gets you:

<h1>Hello!</h1>
<p>Welcome to my webpage!</p>

As you would expect, and finally, writing the following:

# Legal, but the two elements will be two separate strings
from htmly import h1, p
h1: "Hello!"
p: "Welcome to my webpage!"

gets you:

<h1>Hello!</h1>

and

<p>Welcome to my webpage!</p>

So it's important to use the htmly macro in contexts where you expect a single string composed of multiple HTML elements.

Macros

macro a(mainNodes: varargs[untyped]): untyped

Generates the "a" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard a {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro abbr(mainNodes: varargs[untyped]): untyped

Generates the "abbr" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard abbr {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro address(mainNodes: varargs[untyped]): untyped

Generates the "address" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard address {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro area(mainNodes: varargs[untyped]): untyped

Generates the "area" HTML tag, you can read more about this HTML tag here.

This tag is a "leaf" tag, which means it can't have any nested children.

Example:

discard body:
  h1: "Hello World!"
  area {"class": "item"}
Source   Edit  
macro article(mainNodes: varargs[untyped]): untyped

Generates the "article" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard article {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro aside(mainNodes: varargs[untyped]): untyped

Generates the "aside" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard aside {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro audio(mainNodes: varargs[untyped]): untyped

Generates the "audio" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard audio {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro b(mainNodes: varargs[untyped]): untyped

Generates the "b" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard b {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro base(mainNodes: varargs[untyped]): untyped

Generates the "base" HTML tag, you can read more about this HTML tag here.

This tag is a "leaf" tag, which means it can't have any nested children.

Example:

discard body:
  h1: "Hello World!"
  base {"class": "item"}
Source   Edit  
macro bdi(mainNodes: varargs[untyped]): untyped

Generates the "bdi" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard bdi {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro bdo(mainNodes: varargs[untyped]): untyped

Generates the "bdo" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard bdo {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro big(mainNodes: varargs[untyped]): untyped

Generates the "big" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard big {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro blockquote(mainNodes: varargs[untyped]): untyped

Generates the "blockquote" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard blockquote {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro body(mainNodes: varargs[untyped]): untyped

Generates the "body" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard body {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro br(mainNodes: varargs[untyped]): untyped

Generates the "br" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard br {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro button(mainNodes: varargs[untyped]): untyped

Generates the "button" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard button {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro canvas(mainNodes: varargs[untyped]): untyped

Generates the "canvas" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard canvas {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro caption(mainNodes: varargs[untyped]): untyped

Generates the "caption" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard caption {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro center(mainNodes: varargs[untyped]): untyped

Generates the "center" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard center {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro cite(mainNodes: varargs[untyped]): untyped

Generates the "cite" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard cite {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro code(mainNodes: varargs[untyped]): untyped

Generates the "code" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard code {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro col(mainNodes: varargs[untyped]): untyped

Generates the "col" HTML tag, you can read more about this HTML tag here.

This tag is a "leaf" tag, which means it can't have any nested children.

Example:

discard body:
  h1: "Hello World!"
  col {"class": "item"}
Source   Edit  
macro colgroup(mainNodes: varargs[untyped]): untyped

Generates the "colgroup" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard colgroup {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro data(mainNodes: varargs[untyped]): untyped

Generates the "data" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard data {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro datalist(mainNodes: varargs[untyped]): untyped

Generates the "datalist" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard datalist {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro dd(mainNodes: varargs[untyped]): untyped

Generates the "dd" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard dd {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro del(mainNodes: varargs[untyped]): untyped

Generates the "del" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard del {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro details(mainNodes: varargs[untyped]): untyped

Generates the "details" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard details {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro dfn(mainNodes: varargs[untyped]): untyped

Generates the "dfn" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard dfn {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro dialog(mainNodes: varargs[untyped]): untyped

Generates the "dialog" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard dialog {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro `div`(mainNodes: varargs[untyped]): untyped

Generates the "div" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard `div` {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro dl(mainNodes: varargs[untyped]): untyped

Generates the "dl" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard dl {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro dt(mainNodes: varargs[untyped]): untyped

Generates the "dt" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard dt {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro em(mainNodes: varargs[untyped]): untyped

Generates the "em" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard em {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro embed(mainNodes: varargs[untyped]): untyped

Generates the "embed" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard embed {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro fieldset(mainNodes: varargs[untyped]): untyped

Generates the "fieldset" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard fieldset {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro figcaption(mainNodes: varargs[untyped]): untyped

Generates the "figcaption" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard figcaption {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro figure(mainNodes: varargs[untyped]): untyped

Generates the "figure" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard figure {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro form(mainNodes: varargs[untyped]): untyped

Generates the "form" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard form {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro h1(mainNodes: varargs[untyped]): untyped

Generates the "h1" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard h1 {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro h2(mainNodes: varargs[untyped]): untyped

Generates the "h2" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard h2 {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro h3(mainNodes: varargs[untyped]): untyped

Generates the "h3" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard h3 {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro h4(mainNodes: varargs[untyped]): untyped

Generates the "h4" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard h4 {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro h5(mainNodes: varargs[untyped]): untyped

Generates the "h5" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard h5 {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro h6(mainNodes: varargs[untyped]): untyped

Generates the "h6" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard h6 {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro head(mainNodes: varargs[untyped]): untyped

Generates the "head" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard head {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro header(mainNodes: varargs[untyped]): untyped

Generates the "header" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard header {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro hr(mainNodes: varargs[untyped]): untyped

Generates the "hr" HTML tag, you can read more about this HTML tag here.

This tag is a "leaf" tag, which means it can't have any nested children.

Example:

discard body:
  h1: "Hello World!"
  hr {"class": "item"}
Source   Edit  
macro html(mainNodes: varargs[untyped]): untyped

Generates the "html" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard html {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro htmly(mainNodes: varargs[untyped]): untyped
Combines multiple htmly macros into a single string node.

Example:

let html = htmly:
  h1: "My Page!"
  p: "Hello World!"

assert html == "<h1>My Page!</h1><p>Hello World!</p>"
Source   Edit  
macro i(mainNodes: varargs[untyped]): untyped

Generates the "i" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard i {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro iframe(mainNodes: varargs[untyped]): untyped

Generates the "iframe" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard iframe {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro img(mainNodes: varargs[untyped]): untyped

Generates the "img" HTML tag, you can read more about this HTML tag here.

This tag is a "leaf" tag, which means it can't have any nested children.

Example:

discard body:
  h1: "Hello World!"
  img {"class": "item"}
Source   Edit  
macro input(mainNodes: varargs[untyped]): untyped

Generates the "input" HTML tag, you can read more about this HTML tag here.

This tag is a "leaf" tag, which means it can't have any nested children.

Example:

discard body:
  h1: "Hello World!"
  input {"class": "item"}
Source   Edit  
macro ins(mainNodes: varargs[untyped]): untyped

Generates the "ins" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard ins {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro kbd(mainNodes: varargs[untyped]): untyped

Generates the "kbd" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard kbd {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro keygen(mainNodes: varargs[untyped]): untyped

Generates the "keygen" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard keygen {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro label(mainNodes: varargs[untyped]): untyped

Generates the "label" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard label {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro legend(mainNodes: varargs[untyped]): untyped

Generates the "legend" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard legend {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro li(mainNodes: varargs[untyped]): untyped

Generates the "li" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard li {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro main(mainNodes: varargs[untyped]): untyped

Generates the "main" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard main {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro map(mainNodes: varargs[untyped]): untyped

Generates the "map" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard map {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro mark(mainNodes: varargs[untyped]): untyped

Generates the "mark" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard mark {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro marquee(mainNodes: varargs[untyped]): untyped

Generates the "marquee" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard marquee {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro meta(mainNodes: varargs[untyped]): untyped

Generates the "meta" HTML tag, you can read more about this HTML tag here.

This tag is a "leaf" tag, which means it can't have any nested children.

Example:

discard body:
  h1: "Hello World!"
  meta {"class": "item"}
Source   Edit  
macro meter(mainNodes: varargs[untyped]): untyped

Generates the "meter" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard meter {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro noscript(mainNodes: varargs[untyped]): untyped

Generates the "noscript" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard noscript {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro `object`(mainNodes: varargs[untyped]): untyped

Generates the "object" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard `object` {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro ol(mainNodes: varargs[untyped]): untyped

Generates the "ol" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard ol {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro optgroup(mainNodes: varargs[untyped]): untyped

Generates the "optgroup" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard optgroup {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro output(mainNodes: varargs[untyped]): untyped

Generates the "output" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard output {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro p(mainNodes: varargs[untyped]): untyped

Generates the "p" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard p {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro param(mainNodes: varargs[untyped]): untyped

Generates the "param" HTML tag, you can read more about this HTML tag here.

This tag is a "leaf" tag, which means it can't have any nested children.

Example:

discard body:
  h1: "Hello World!"
  param {"class": "item"}
Source   Edit  
macro picture(mainNodes: varargs[untyped]): untyped

Generates the "picture" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard picture {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro portal(mainNodes: varargs[untyped]): untyped

Generates the "portal" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard portal {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro pre(mainNodes: varargs[untyped]): untyped

Generates the "pre" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard pre {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro progress(mainNodes: varargs[untyped]): untyped

Generates the "progress" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard progress {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro q(mainNodes: varargs[untyped]): untyped

Generates the "q" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard q {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro rb(mainNodes: varargs[untyped]): untyped

Generates the "rb" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard rb {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro rp(mainNodes: varargs[untyped]): untyped

Generates the "rp" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard rp {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro rt(mainNodes: varargs[untyped]): untyped

Generates the "rt" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard rt {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro rtc(mainNodes: varargs[untyped]): untyped

Generates the "rtc" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard rtc {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro ruby(mainNodes: varargs[untyped]): untyped

Generates the "ruby" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard ruby {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro s(mainNodes: varargs[untyped]): untyped

Generates the "s" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard s {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro samp(mainNodes: varargs[untyped]): untyped

Generates the "samp" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard samp {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro script(mainNodes: varargs[untyped]): untyped

Generates the "script" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard script {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro section(mainNodes: varargs[untyped]): untyped

Generates the "section" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard section {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro select(mainNodes: varargs[untyped]): untyped

Generates the "select" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard select {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro slot(mainNodes: varargs[untyped]): untyped

Generates the "slot" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard slot {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro small(mainNodes: varargs[untyped]): untyped

Generates the "small" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard small {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro source(mainNodes: varargs[untyped]): untyped

Generates the "source" HTML tag, you can read more about this HTML tag here.

This tag is a "leaf" tag, which means it can't have any nested children.

Example:

discard body:
  h1: "Hello World!"
  source {"class": "item"}
Source   Edit  
macro span(mainNodes: varargs[untyped]): untyped

Generates the "span" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard span {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro strong(mainNodes: varargs[untyped]): untyped

Generates the "strong" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard strong {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro style(mainNodes: varargs[untyped]): untyped

Generates the "style" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard style {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro sub(mainNodes: varargs[untyped]): untyped

Generates the "sub" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard sub {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro summary(mainNodes: varargs[untyped]): untyped

Generates the "summary" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard summary {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro sup(mainNodes: varargs[untyped]): untyped

Generates the "sup" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard sup {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro table(mainNodes: varargs[untyped]): untyped

Generates the "table" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard table {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro tbody(mainNodes: varargs[untyped]): untyped

Generates the "tbody" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard tbody {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro td(mainNodes: varargs[untyped]): untyped

Generates the "td" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard td {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro `template`(mainNodes: varargs[untyped]): untyped

Generates the "template" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard `template` {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro textarea(mainNodes: varargs[untyped]): untyped

Generates the "textarea" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard textarea {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro tfoot(mainNodes: varargs[untyped]): untyped

Generates the "tfoot" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard tfoot {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro th(mainNodes: varargs[untyped]): untyped

Generates the "th" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard th {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro thead(mainNodes: varargs[untyped]): untyped

Generates the "thead" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard thead {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro time(mainNodes: varargs[untyped]): untyped

Generates the "time" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard time {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro title(mainNodes: varargs[untyped]): untyped

Generates the "title" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard title {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro tr(mainNodes: varargs[untyped]): untyped

Generates the "tr" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard tr {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro track(mainNodes: varargs[untyped]): untyped

Generates the "track" HTML tag, you can read more about this HTML tag here.

This tag is a "leaf" tag, which means it can't have any nested children.

Example:

discard body:
  h1: "Hello World!"
  track {"class": "item"}
Source   Edit  
macro tt(mainNodes: varargs[untyped]): untyped

Generates the "tt" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard tt {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro u(mainNodes: varargs[untyped]): untyped

Generates the "u" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard u {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro ul(mainNodes: varargs[untyped]): untyped

Generates the "ul" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard ul {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro `var`(mainNodes: varargs[untyped]): untyped

Generates the "var" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard `var` {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro video(mainNodes: varargs[untyped]): untyped

Generates the "video" HTML tag, you can read more about this HTML tag here.

This tag can have nested children.

Example:

discard video {"class": "item"}:
  p: "Hello World!"
Source   Edit  
macro wbr(mainNodes: varargs[untyped]): untyped

Generates the "wbr" HTML tag, you can read more about this HTML tag here.

This tag is a "leaf" tag, which means it can't have any nested children.

Example:

discard body:
  h1: "Hello World!"
  wbr {"class": "item"}
Source   Edit