From 5f1744c5b0f9761db402dfbca9cc85e1542ddb5f Mon Sep 17 00:00:00 2001 From: the lemons Date: Tue, 31 Aug 2021 23:22:36 -0500 Subject: create the --- README.md | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 README.md (limited to 'README.md') diff --git a/README.md b/README.md new file mode 100644 index 0000000..8700e8b --- /dev/null +++ b/README.md @@ -0,0 +1,60 @@ +# simple HTML DSL for lua 5.3 + +this library returns a table which, when indexed with the name of an HTML tag, provides a function which generates a data structure representing an HTML element. when this data structure is converted to a string, the corresponding HTML is generated. + + local h = require "html" + +calling a tag's function with no arguments produces a self-closing tag. + +### source + print(h.hr()) +### output +
+ +calling a tag's function with a single array or value argument produces a tag with the children provided in the array. non-table values may appear in the list of children or in its stead. they are converted to a string an escaped. + +### source + print(h.section{h.h1"foo",h.p"bar"}) +### output +

foo

bar

+ +calling a tag's function with a single set of key/value pairs as the argument produces a self-closing tag with attributes corresponding to the key/value pairs + +### source + print(h.meta{charset = "utf-8"}) +### output + + +calling a tag's function with a set of key/value pairs and then an array or value as the arguments produces a tag with attributes corresponding to the key/value pairs. + +### source + print(h.a({href = "https://example.com"}, "foobar")) +### output + foobar + +a table used in a list of children must either be generated from the HTML functions or have a `tohtml` function or a `render` function, returning HTML structures or HTML source respectively. a table that is not a set of attributes or an array of element children may not be used as arguments to an HTML function. + +### source + local db_record = {name = "foobar", id = 256} + setmetatable(db_record, { + tohtml = function(x) + return h.a( + {href = "https://example.com/" .. x.id}, x.name) + end + }) + + print(h.p{"search result: ", db_record}) +### output +

search result: foobar

+ +the `raw` function will insert text verbatim into the HTML, unescaped. + +### source + local html_source = "hello" + print(h.p{html_source}) + print(h.p{h.raw(html_source)}) +### output +

<marquee>hello</marquee>

+

hello

+ +included with this documentation is `example.lua` which produces this documenation in HTML via the DSL. -- cgit v1.2.3