From ee0cdeb7b57740b98a8cc33ac216e7d589e45ab5 Mon Sep 17 00:00:00 2001 From: Pim Brouwers Date: Thu, 16 Nov 2023 20:51:01 -0500 Subject: [PATCH 1/7] html module --- src/Falco.Markup/Falco.Markup.fsproj | 1 + src/Falco.Markup/Html.fs | 446 +++++++++++++++++++++++++++ test/Falco.Markup.Tests/Tests.fs | 4 +- 3 files changed, 449 insertions(+), 2 deletions(-) create mode 100644 src/Falco.Markup/Html.fs diff --git a/src/Falco.Markup/Falco.Markup.fsproj b/src/Falco.Markup/Falco.Markup.fsproj index 105497b..99c7ae8 100644 --- a/src/Falco.Markup/Falco.Markup.fsproj +++ b/src/Falco.Markup/Falco.Markup.fsproj @@ -46,6 +46,7 @@ + diff --git a/src/Falco.Markup/Html.fs b/src/Falco.Markup/Html.fs new file mode 100644 index 0000000..8472e9f --- /dev/null +++ b/src/Falco.Markup/Html.fs @@ -0,0 +1,446 @@ +module Falco.Markup.Html + +[] +module Text = + let _empty = Text.empty + let _enc = Text.enc + let _raw = Text.raw + let _rawf = Text.rawf + let _comment = Text.comment + +[] +module Elem = + let _html = Elem.html + let _base = Elem.base' + let _head = Elem.head + let _link = Elem.link + let _meta = Elem.meta + let _style = Elem.style + let _title = Elem.title + let _body = Elem.body + let _address = Elem.address + let _article = Elem.article + let _aside = Elem.aside + let _footer = Elem.footer + let _header = Elem.header + let _h1 = Elem.h1 + let _h2 = Elem.h2 + let _h3 = Elem.h3 + let _h4 = Elem.h4 + let _h5 = Elem.h5 + let _h6 = Elem.h6 + let _main = Elem.main + let _nav = Elem.nav + let _section = Elem.section + let _blockquote = Elem.blockquote + let _dd = Elem.dd + let _div = Elem.div + let _dl = Elem.dl + let _dt = Elem.dt + let _figcaption = Elem.figcaption + let _figure = Elem.figure + let _hr = Elem.hr + let _li = Elem.li + let _menu = Elem.menu + let _ol = Elem.ol + let _p = Elem.p + let _pre = Elem.pre + let _ul = Elem.ul + let _a = Elem.a + let _abbr = Elem.abbr + let _b = Elem.b + let _bdi = Elem.bdi + let _bdo = Elem.bdo + let _br = Elem.br + let _cite = Elem.cite + let _code = Elem.code + let _data = Elem.data + let _dfn = Elem.dfn + let _em = Elem.em + let _i = Elem.i + let _kbd = Elem.kbd + let _mark = Elem.mark + let _q = Elem.q + let _rp = Elem.rp + let _rt = Elem.rt + let _ruby = Elem.ruby + let _s = Elem.s + let _samp = Elem.samp + let _small = Elem.small + let _span = Elem.span + let _strong = Elem.strong + let _sub = Elem.sub + let _sup = Elem.sup + let _time = Elem.time + let _u = Elem.u + let _var = Elem.var + let _wbr = Elem.wbr + let _area = Elem.area + let _audio = Elem.audio + let _img = Elem.img + let _map = Elem.map + let _track = Elem.track + let _video = Elem.video + let _embed = Elem.embed + let _iframe = Elem.iframe + let _object = Elem.object + let _picture = Elem.picture + let _portal = Elem.portal + let _source = Elem.source + let _canvas = Elem.canvas + let _noscript = Elem.noscript + let _script = Elem.script + let _del = Elem.del + let _ins = Elem.ins + let _caption = Elem.caption + let _col = Elem.col + let _colgroup = Elem.colgroup + let _table = Elem.table + let _tbody = Elem.tbody + let _td = Elem.td + let _tfoot = Elem.tfoot + let _th = Elem.th + let _thead = Elem.thead + let _tr = Elem.tr + let _button = Elem.button + let _datalist = Elem.datalist + let _fieldset = Elem.fieldset + let _form = Elem.form + let _input = Elem.input + let _label = Elem.label + let _legend = Elem.legend + let _meter = Elem.meter + let _optgroup = Elem.optgroup + let _option = Elem.option + let _output = Elem.output + let _progress = Elem.progress + let _select = Elem.select + let _textarea = Elem.textarea + let _details = Elem.details + let _dialog = Elem.dialog + let _summary = Elem.summary + let _slot = Elem.slot + let _template = Elem.template + let _math = Elem.math + let _svg = Elem.svg + + let _html' : XmlNode list -> XmlNode = Elem.html [] + let _head' : XmlNode list -> XmlNode = Elem.head [] + let _style' : XmlNode list -> XmlNode = Elem.style [] + let _title' : XmlNode list -> XmlNode = Elem.title [] + let _body' : XmlNode list -> XmlNode = Elem.body [] + let _address' : XmlNode list -> XmlNode = Elem.address [] + let _article' : XmlNode list -> XmlNode = Elem.article [] + let _aside' : XmlNode list -> XmlNode = Elem.aside [] + let _footer' : XmlNode list -> XmlNode = Elem.footer [] + let _header' : XmlNode list -> XmlNode = Elem.header [] + let _h1' : XmlNode list -> XmlNode = Elem.h1 [] + let _h2' : XmlNode list -> XmlNode = Elem.h2 [] + let _h3' : XmlNode list -> XmlNode = Elem.h3 [] + let _h4' : XmlNode list -> XmlNode = Elem.h4 [] + let _h5' : XmlNode list -> XmlNode = Elem.h5 [] + let _h6' : XmlNode list -> XmlNode = Elem.h6 [] + let _main' : XmlNode list -> XmlNode = Elem.main [] + let _nav' : XmlNode list -> XmlNode = Elem.nav [] + let _section' : XmlNode list -> XmlNode = Elem.section [] + let _blockquote' : XmlNode list -> XmlNode = Elem.blockquote [] + let _dd' : XmlNode list -> XmlNode = Elem.dd [] + let _div' : XmlNode list -> XmlNode = Elem.div [] + let _dl' : XmlNode list -> XmlNode = Elem.dl [] + let _dt' : XmlNode list -> XmlNode = Elem.dt [] + let _figcaption' : XmlNode list -> XmlNode = Elem.figcaption [] + let _figure' : XmlNode list -> XmlNode = Elem.figure [] + let _li' : XmlNode list -> XmlNode = Elem.li [] + let _menu' : XmlNode list -> XmlNode = Elem.menu [] + let _ol' : XmlNode list -> XmlNode = Elem.ol [] + let _p' : XmlNode list -> XmlNode = Elem.p [] + let _pre' : XmlNode list -> XmlNode = Elem.pre [] + let _ul' : XmlNode list -> XmlNode = Elem.ul [] + let _a' : XmlNode list -> XmlNode = Elem.a [] + let _abbr' : XmlNode list -> XmlNode = Elem.abbr [] + let _b' : XmlNode list -> XmlNode = Elem.b [] + let _bdi' : XmlNode list -> XmlNode = Elem.bdi [] + let _bdo' : XmlNode list -> XmlNode = Elem.bdo [] + let _cite' : XmlNode list -> XmlNode = Elem.cite [] + let _code' : XmlNode list -> XmlNode = Elem.code [] + let _data' : XmlNode list -> XmlNode = Elem.data [] + let _dfn' : XmlNode list -> XmlNode = Elem.dfn [] + let _em' : XmlNode list -> XmlNode = Elem.em [] + let _i' : XmlNode list -> XmlNode = Elem.i [] + let _kbd' : XmlNode list -> XmlNode = Elem.kbd [] + let _mark' : XmlNode list -> XmlNode = Elem.mark [] + let _q' : XmlNode list -> XmlNode = Elem.q [] + let _rp' : XmlNode list -> XmlNode = Elem.rp [] + let _rt' : XmlNode list -> XmlNode = Elem.rt [] + let _ruby' : XmlNode list -> XmlNode = Elem.ruby [] + let _s' : XmlNode list -> XmlNode = Elem.s [] + let _samp' : XmlNode list -> XmlNode = Elem.samp [] + let _small' : XmlNode list -> XmlNode = Elem.small [] + let _span' : XmlNode list -> XmlNode = Elem.span [] + let _strong' : XmlNode list -> XmlNode = Elem.strong [] + let _sub' : XmlNode list -> XmlNode = Elem.sub [] + let _sup' : XmlNode list -> XmlNode = Elem.sup [] + let _time' : XmlNode list -> XmlNode = Elem.time [] + let _u' : XmlNode list -> XmlNode = Elem.u [] + let _var' : XmlNode list -> XmlNode = Elem.var [] + let _area' : XmlNode list -> XmlNode = Elem.area [] + let _audio' : XmlNode list -> XmlNode = Elem.audio [] + let _map' : XmlNode list -> XmlNode = Elem.map [] + let _video' : XmlNode list -> XmlNode = Elem.video [] + let _iframe' : XmlNode list -> XmlNode = Elem.iframe [] + let _object' : XmlNode list -> XmlNode = Elem.object [] + let _picture' : XmlNode list -> XmlNode = Elem.picture [] + let _portal' : XmlNode list -> XmlNode = Elem.portal [] + let _canvas' : XmlNode list -> XmlNode = Elem.canvas [] + let _noscript' : XmlNode list -> XmlNode = Elem.noscript [] + let _script' : XmlNode list -> XmlNode = Elem.script [] + let _del' : XmlNode list -> XmlNode = Elem.del [] + let _ins' : XmlNode list -> XmlNode = Elem.ins [] + let _caption' : XmlNode list -> XmlNode = Elem.caption [] + let _colgroup' : XmlNode list -> XmlNode = Elem.colgroup [] + let _table' : XmlNode list -> XmlNode = Elem.table [] + let _tbody' : XmlNode list -> XmlNode = Elem.tbody [] + let _td' : XmlNode list -> XmlNode = Elem.td [] + let _tfoot' : XmlNode list -> XmlNode = Elem.tfoot [] + let _th' : XmlNode list -> XmlNode = Elem.th [] + let _thead' : XmlNode list -> XmlNode = Elem.thead [] + let _tr' : XmlNode list -> XmlNode = Elem.tr [] + let _button' : XmlNode list -> XmlNode = Elem.button [] + let _datalist' : XmlNode list -> XmlNode = Elem.datalist [] + let _fieldset' : XmlNode list -> XmlNode = Elem.fieldset [] + let _form' : XmlNode list -> XmlNode = Elem.form [] + let _label' : XmlNode list -> XmlNode = Elem.label [] + let _legend' : XmlNode list -> XmlNode = Elem.legend [] + let _meter' : XmlNode list -> XmlNode = Elem.meter [] + let _optgroup' : XmlNode list -> XmlNode = Elem.optgroup [] + let _option' : XmlNode list -> XmlNode = Elem.option [] + let _output' : XmlNode list -> XmlNode = Elem.output [] + let _progress' : XmlNode list -> XmlNode = Elem.progress [] + let _select' : XmlNode list -> XmlNode = Elem.select [] + let _textarea' : XmlNode list -> XmlNode = Elem.textarea [] + let _details' : XmlNode list -> XmlNode = Elem.details [] + let _dialog' : XmlNode list -> XmlNode = Elem.dialog [] + let _summary' : XmlNode list -> XmlNode = Elem.summary [] + let _slot' : XmlNode list -> XmlNode = Elem.slot [] + let _template' : XmlNode list -> XmlNode = Elem.template [] + let _math' : XmlNode list -> XmlNode = Elem.math [] + let _svg' : XmlNode list -> XmlNode = Elem.svg [] + +module a = + let _accept = Attr.accept + let _acceptCharset = Attr.acceptCharset + let _accesskey = Attr.accesskey + let _action = Attr.action + let _align = Attr.align + let _allow = Attr.allow + let _alt = Attr.alt + let _async = Attr.async + let _autocapitalize = Attr.autocapitalize + let _autocomplete = Attr.autocomplete + let _autofocus = Attr.autofocus + let _autoplay = Attr.autoplay + let _background = Attr.background + let _bgcolor = Attr.bgcolor + let _border = Attr.border + let _buffered = Attr.buffered + let _capture = Attr.capture + let _challenge = Attr.challenge + let _charset = Attr.charset + let _checked = Attr.checked' + let _cite = Attr.cite + let _class = Attr.class' + let _code = Attr.code + let _codebase = Attr.codebase + let _color = Attr.color + let _cols = Attr.cols + let _colspan = Attr.colspan + let _content = Attr.content + let _contenteditable = Attr.contenteditable + let _contextmenu = Attr.contextmenu + let _controls = Attr.controls + let _coords = Attr.coords + let _crossorigin = Attr.crossorigin + let _csp = Attr.csp + let _data = Attr.data + let _dataAttr = Attr.dataAttr + let _datetime = Attr.datetime + let _decoding = Attr.decoding + let _default = Attr.default' + let _defer = Attr.defer + let _dir = Attr.dir + let _dirname = Attr.dirname + let _disabled = Attr.disabled + let _download = Attr.download + let _draggable = Attr.draggable + let _enctype = Attr.enctype + let _enterkeyhint = Attr.enterkeyhint + let _for = Attr.for' + let _form = Attr.form + let _formaction = Attr.formaction + let _formenctype = Attr.formenctype + let _formmethod = Attr.formmethod + let _formnovalidate = Attr.formnovalidate + let _formtarget = Attr.formtarget + let _headers = Attr.headers + let _height = Attr.height + let _hidden = Attr.hidden + let _high = Attr.high + let _href = Attr.href + let _hreflang = Attr.hreflang + let _httpEquiv = Attr.httpEquiv + let _icon = Attr.icon + let _id = Attr.id + let _importance = Attr.importance + let _integrity = Attr.integrity + let _inputmode = Attr.inputmode + let _ismap = Attr.ismap + let _itemprop = Attr.itemprop + let _keytype = Attr.keytype + let _kind = Attr.kind + let _label = Attr.label + let _lang = Attr.lang + let _loading = Attr.loading + let _list = Attr.list + let _loop = Attr.loop + let _low = Attr.low + let _max = Attr.max + let _maxlength = Attr.maxlength + let _minlength = Attr.minlength + let _media = Attr.media + let _method = Attr.method + let _min = Attr.min + let _multiple = Attr.multiple + let _muted = Attr.muted + let _name = Attr.name + let _novalidate = Attr.novalidate + let _open = Attr.open' + let _optimum = Attr.optimum + let _pattern = Attr.pattern + let _ping = Attr.ping + let _placeholder = Attr.placeholder + let _poster = Attr.poster + let _preload = Attr.preload + let _radiogroup = Attr.radiogroup + let _readonly = Attr.readonly + let _referrerpolicy = Attr.referrerpolicy + let _rel = Attr.rel + let _required = Attr.required + let _reversed = Attr.reversed + let _role = Attr.role + let _rows = Attr.rows + let _rowspan = Attr.rowspan + let _sandbox = Attr.sandbox + let _scope = Attr.scope + let _selected = Attr.selected + let _shape = Attr.shape + let _size = Attr.size + let _sizes = Attr.sizes + let _slot = Attr.slot + let _span = Attr.span + let _spellcheck = Attr.spellcheck + let _src = Attr.src + let _srcdoc = Attr.srcdoc + let _srclang = Attr.srclang + let _srcset = Attr.srcset + let _start = Attr.start + let _step = Attr.step + let _style = Attr.style + let _tabindex = Attr.tabindex + let _target = Attr.target + let _title = Attr.title + let _translate = Attr.translate + let _type = Attr.type' + let _usemap = Attr.usemap + let _value = Attr.value + let _width = Attr.width + let _wrap = Attr.wrap + + // Events + let _onabort = Attr.onabort + let _onafterprint = Attr.onafterprint + let _onanimationend = Attr.onanimationend + let _onanimationiteration = Attr.onanimationiteration + let _onanimationstart = Attr.onanimationstart + let _onbeforeprint = Attr.onbeforeprint + let _onbeforeunload = Attr.onbeforeunload + let _onblur = Attr.onblur + let _oncanplay = Attr.oncanplay + let _oncanplaythrough = Attr.oncanplaythrough + let _onchange = Attr.onchange + let _onclick = Attr.onclick + let _oncontextmenu = Attr.oncontextmenu + let _oncopy = Attr.oncopy + let _oncut = Attr.oncut + let _ondblclick = Attr.ondblclick + let _ondrag = Attr.ondrag + let _ondragend = Attr.ondragend + let _ondragenter = Attr.ondragenter + let _ondragleave = Attr.ondragleave + let _ondragover = Attr.ondragover + let _ondragstart = Attr.ondragstart + let _ondrop = Attr.ondrop + let _ondurationchange = Attr.ondurationchange + let _onemptied = Attr.onemptied + let _onended = Attr.onended + let _onerror = Attr.onerror + let _onfocus = Attr.onfocus + let _onformchange = Attr.onformchange + let _onforminput = Attr.onforminput + let _onfocusin = Attr.onfocusin + let _onfocusout = Attr.onfocusout + let _onfullscreenchange = Attr.onfullscreenchange + let _onfullscreenerror = Attr.onfullscreenerror + let _onhashchange = Attr.onhashchange + let _oninput = Attr.oninput + let _oninvalid = Attr.oninvalid + let _onkeydown = Attr.onkeydown + let _onkeypress = Attr.onkeypress + let _onkeyup = Attr.onkeyup + let _onload = Attr.onload + let _onloadeddata = Attr.onloadeddata + let _onloadedmetadata = Attr.onloadedmetadata + let _onloadstart = Attr.onloadstart + let _onmessage = Attr.onmessage + let _onmousedown = Attr.onmousedown + let _onmouseenter = Attr.onmouseenter + let _onmouseleave = Attr.onmouseleave + let _onmousemove = Attr.onmousemove + let _onmouseover = Attr.onmouseover + let _onmouseout = Attr.onmouseout + let _onmouseup = Attr.onmouseup + let _onmousewheel = Attr.onmousewheel + let _onoffline = Attr.onoffline + let _ononline = Attr.ononline + let _onopen = Attr.onopen + let _onpagehide = Attr.onpagehide + let _onpageshow = Attr.onpageshow + let _onpaste = Attr.onpaste + let _onpause = Attr.onpause + let _onplay = Attr.onplay + let _onplaying = Attr.onplaying + let _onpopstate = Attr.onpopstate + let _onprogress = Attr.onprogress + let _onratechange = Attr.onratechange + let _onresize = Attr.onresize + let _onreset = Attr.onreset + let _onscroll = Attr.onscroll + let _onsearch = Attr.onsearch + let _onseeked = Attr.onseeked + let _onseeking = Attr.onseeking + let _onselect = Attr.onselect + let _onshow = Attr.onshow + let _onstalled = Attr.onstalled + let _onstorage = Attr.onstorage + let _onsubmit = Attr.onsubmit + let _onsuspend = Attr.onsuspend + let _ontimeupdate = Attr.ontimeupdate + let _ontoggle = Attr.ontoggle + let _ontouchcancel = Attr.ontouchcancel + let _ontouchend = Attr.ontouchend + let _ontouchmove = Attr.ontouchmove + let _ontouchstart = Attr.ontouchstart + let _ontransitionend = Attr.ontransitionend + let _onunload = Attr.onunload + let _onvolumechange = Attr.onvolumechange + let _onwaiting = Attr.onwaiting + let _onwheel = Attr.onwheel diff --git a/test/Falco.Markup.Tests/Tests.fs b/test/Falco.Markup.Tests/Tests.fs index 6ca8591..f95009a 100644 --- a/test/Falco.Markup.Tests/Tests.fs +++ b/test/Falco.Markup.Tests/Tests.fs @@ -1,4 +1,4 @@ -module Falco.Tests.Markup +module Falco.Tests.Markup open System open Falco.Markup @@ -351,4 +351,4 @@ module TestHelpersTests = let nameValues = renderNameValues xml nameValues - |> should equal "first_name=first_name_value&long_text=long_text_value&radio=value1&checkbox=value1&checkbox=value2&select=option2&multiselect=option2&multiselect=option3" + |> should equal "first_name=first_name_value&long_text=long_text_value&radio=value1&checkbox=value1&checkbox=value2&select=option2&multiselect=option2&multiselect=option3" \ No newline at end of file From 16b83efdcc5b945fcefe115fdd5a8b2ce72ad470 Mon Sep 17 00:00:00 2001 From: Pim Brouwers Date: Fri, 24 Nov 2023 16:22:25 -0500 Subject: [PATCH 2/7] html module using type synxtax --- src/Falco.Markup/Falco.Markup.fsproj | 2 +- src/Falco.Markup/Html.fs | 1289 +++++++++++++++++--------- 2 files changed, 849 insertions(+), 442 deletions(-) diff --git a/src/Falco.Markup/Falco.Markup.fsproj b/src/Falco.Markup/Falco.Markup.fsproj index 99c7ae8..c8eba53 100644 --- a/src/Falco.Markup/Falco.Markup.fsproj +++ b/src/Falco.Markup/Falco.Markup.fsproj @@ -46,8 +46,8 @@ - + diff --git a/src/Falco.Markup/Html.fs b/src/Falco.Markup/Html.fs index 8472e9f..6680418 100644 --- a/src/Falco.Markup/Html.fs +++ b/src/Falco.Markup/Html.fs @@ -1,446 +1,853 @@ module Falco.Markup.Html -[] -module Text = - let _empty = Text.empty - let _enc = Text.enc - let _raw = Text.raw - let _rawf = Text.rawf - let _comment = Text.comment +open System +open System.Collections.Generic + +type a(key : string, ?value : string ) = + member internal _.attribute = + match value with + | Some v -> KeyValueAttr (key, v) + | None -> NonValueAttr key + +type type'(value : string) = + inherit a("type", value) + +type attr([]attrs : a array) = + static member empty = attr() + member internal _.attributes = + attrs |> Array.map _.attribute |> List.ofArray + +let private selfClosingTags : HashSet = HashSet(seq { "base";"link";"meta";"hr";"br";"wbr";"img";"track";"embed";"source";"col";"input" }) + +[] +type x = + val value: XmlNode + new (node) = { value = node } + +type text = + inherit x + new (str : string) = { inherit x(TextNode str) } + +type elem = + inherit x + new (tag : string, attr : attr, []children : x array) = + let a = attr.attributes + let c = children |> Array.map _.value |> List.ofArray + let node = + match selfClosingTags.Contains tag with + | false -> ParentNode ((tag, a), c) + | true -> SelfClosingNode (tag, a) + { inherit x(node) } + new (tag : string) = elem(tag, attr(), [||]) + new (tag : string, attr : attr) = elem(tag, attr, [||]) + new (tag : string, [] c : x array) = elem(tag, attr(), c) [] module Elem = - let _html = Elem.html - let _base = Elem.base' - let _head = Elem.head - let _link = Elem.link - let _meta = Elem.meta - let _style = Elem.style - let _title = Elem.title - let _body = Elem.body - let _address = Elem.address - let _article = Elem.article - let _aside = Elem.aside - let _footer = Elem.footer - let _header = Elem.header - let _h1 = Elem.h1 - let _h2 = Elem.h2 - let _h3 = Elem.h3 - let _h4 = Elem.h4 - let _h5 = Elem.h5 - let _h6 = Elem.h6 - let _main = Elem.main - let _nav = Elem.nav - let _section = Elem.section - let _blockquote = Elem.blockquote - let _dd = Elem.dd - let _div = Elem.div - let _dl = Elem.dl - let _dt = Elem.dt - let _figcaption = Elem.figcaption - let _figure = Elem.figure - let _hr = Elem.hr - let _li = Elem.li - let _menu = Elem.menu - let _ol = Elem.ol - let _p = Elem.p - let _pre = Elem.pre - let _ul = Elem.ul - let _a = Elem.a - let _abbr = Elem.abbr - let _b = Elem.b - let _bdi = Elem.bdi - let _bdo = Elem.bdo - let _br = Elem.br - let _cite = Elem.cite - let _code = Elem.code - let _data = Elem.data - let _dfn = Elem.dfn - let _em = Elem.em - let _i = Elem.i - let _kbd = Elem.kbd - let _mark = Elem.mark - let _q = Elem.q - let _rp = Elem.rp - let _rt = Elem.rt - let _ruby = Elem.ruby - let _s = Elem.s - let _samp = Elem.samp - let _small = Elem.small - let _span = Elem.span - let _strong = Elem.strong - let _sub = Elem.sub - let _sup = Elem.sup - let _time = Elem.time - let _u = Elem.u - let _var = Elem.var - let _wbr = Elem.wbr - let _area = Elem.area - let _audio = Elem.audio - let _img = Elem.img - let _map = Elem.map - let _track = Elem.track - let _video = Elem.video - let _embed = Elem.embed - let _iframe = Elem.iframe - let _object = Elem.object - let _picture = Elem.picture - let _portal = Elem.portal - let _source = Elem.source - let _canvas = Elem.canvas - let _noscript = Elem.noscript - let _script = Elem.script - let _del = Elem.del - let _ins = Elem.ins - let _caption = Elem.caption - let _col = Elem.col - let _colgroup = Elem.colgroup - let _table = Elem.table - let _tbody = Elem.tbody - let _td = Elem.td - let _tfoot = Elem.tfoot - let _th = Elem.th - let _thead = Elem.thead - let _tr = Elem.tr - let _button = Elem.button - let _datalist = Elem.datalist - let _fieldset = Elem.fieldset - let _form = Elem.form - let _input = Elem.input - let _label = Elem.label - let _legend = Elem.legend - let _meter = Elem.meter - let _optgroup = Elem.optgroup - let _option = Elem.option - let _output = Elem.output - let _progress = Elem.progress - let _select = Elem.select - let _textarea = Elem.textarea - let _details = Elem.details - let _dialog = Elem.dialog - let _summary = Elem.summary - let _slot = Elem.slot - let _template = Elem.template - let _math = Elem.math - let _svg = Elem.svg - - let _html' : XmlNode list -> XmlNode = Elem.html [] - let _head' : XmlNode list -> XmlNode = Elem.head [] - let _style' : XmlNode list -> XmlNode = Elem.style [] - let _title' : XmlNode list -> XmlNode = Elem.title [] - let _body' : XmlNode list -> XmlNode = Elem.body [] - let _address' : XmlNode list -> XmlNode = Elem.address [] - let _article' : XmlNode list -> XmlNode = Elem.article [] - let _aside' : XmlNode list -> XmlNode = Elem.aside [] - let _footer' : XmlNode list -> XmlNode = Elem.footer [] - let _header' : XmlNode list -> XmlNode = Elem.header [] - let _h1' : XmlNode list -> XmlNode = Elem.h1 [] - let _h2' : XmlNode list -> XmlNode = Elem.h2 [] - let _h3' : XmlNode list -> XmlNode = Elem.h3 [] - let _h4' : XmlNode list -> XmlNode = Elem.h4 [] - let _h5' : XmlNode list -> XmlNode = Elem.h5 [] - let _h6' : XmlNode list -> XmlNode = Elem.h6 [] - let _main' : XmlNode list -> XmlNode = Elem.main [] - let _nav' : XmlNode list -> XmlNode = Elem.nav [] - let _section' : XmlNode list -> XmlNode = Elem.section [] - let _blockquote' : XmlNode list -> XmlNode = Elem.blockquote [] - let _dd' : XmlNode list -> XmlNode = Elem.dd [] - let _div' : XmlNode list -> XmlNode = Elem.div [] - let _dl' : XmlNode list -> XmlNode = Elem.dl [] - let _dt' : XmlNode list -> XmlNode = Elem.dt [] - let _figcaption' : XmlNode list -> XmlNode = Elem.figcaption [] - let _figure' : XmlNode list -> XmlNode = Elem.figure [] - let _li' : XmlNode list -> XmlNode = Elem.li [] - let _menu' : XmlNode list -> XmlNode = Elem.menu [] - let _ol' : XmlNode list -> XmlNode = Elem.ol [] - let _p' : XmlNode list -> XmlNode = Elem.p [] - let _pre' : XmlNode list -> XmlNode = Elem.pre [] - let _ul' : XmlNode list -> XmlNode = Elem.ul [] - let _a' : XmlNode list -> XmlNode = Elem.a [] - let _abbr' : XmlNode list -> XmlNode = Elem.abbr [] - let _b' : XmlNode list -> XmlNode = Elem.b [] - let _bdi' : XmlNode list -> XmlNode = Elem.bdi [] - let _bdo' : XmlNode list -> XmlNode = Elem.bdo [] - let _cite' : XmlNode list -> XmlNode = Elem.cite [] - let _code' : XmlNode list -> XmlNode = Elem.code [] - let _data' : XmlNode list -> XmlNode = Elem.data [] - let _dfn' : XmlNode list -> XmlNode = Elem.dfn [] - let _em' : XmlNode list -> XmlNode = Elem.em [] - let _i' : XmlNode list -> XmlNode = Elem.i [] - let _kbd' : XmlNode list -> XmlNode = Elem.kbd [] - let _mark' : XmlNode list -> XmlNode = Elem.mark [] - let _q' : XmlNode list -> XmlNode = Elem.q [] - let _rp' : XmlNode list -> XmlNode = Elem.rp [] - let _rt' : XmlNode list -> XmlNode = Elem.rt [] - let _ruby' : XmlNode list -> XmlNode = Elem.ruby [] - let _s' : XmlNode list -> XmlNode = Elem.s [] - let _samp' : XmlNode list -> XmlNode = Elem.samp [] - let _small' : XmlNode list -> XmlNode = Elem.small [] - let _span' : XmlNode list -> XmlNode = Elem.span [] - let _strong' : XmlNode list -> XmlNode = Elem.strong [] - let _sub' : XmlNode list -> XmlNode = Elem.sub [] - let _sup' : XmlNode list -> XmlNode = Elem.sup [] - let _time' : XmlNode list -> XmlNode = Elem.time [] - let _u' : XmlNode list -> XmlNode = Elem.u [] - let _var' : XmlNode list -> XmlNode = Elem.var [] - let _area' : XmlNode list -> XmlNode = Elem.area [] - let _audio' : XmlNode list -> XmlNode = Elem.audio [] - let _map' : XmlNode list -> XmlNode = Elem.map [] - let _video' : XmlNode list -> XmlNode = Elem.video [] - let _iframe' : XmlNode list -> XmlNode = Elem.iframe [] - let _object' : XmlNode list -> XmlNode = Elem.object [] - let _picture' : XmlNode list -> XmlNode = Elem.picture [] - let _portal' : XmlNode list -> XmlNode = Elem.portal [] - let _canvas' : XmlNode list -> XmlNode = Elem.canvas [] - let _noscript' : XmlNode list -> XmlNode = Elem.noscript [] - let _script' : XmlNode list -> XmlNode = Elem.script [] - let _del' : XmlNode list -> XmlNode = Elem.del [] - let _ins' : XmlNode list -> XmlNode = Elem.ins [] - let _caption' : XmlNode list -> XmlNode = Elem.caption [] - let _colgroup' : XmlNode list -> XmlNode = Elem.colgroup [] - let _table' : XmlNode list -> XmlNode = Elem.table [] - let _tbody' : XmlNode list -> XmlNode = Elem.tbody [] - let _td' : XmlNode list -> XmlNode = Elem.td [] - let _tfoot' : XmlNode list -> XmlNode = Elem.tfoot [] - let _th' : XmlNode list -> XmlNode = Elem.th [] - let _thead' : XmlNode list -> XmlNode = Elem.thead [] - let _tr' : XmlNode list -> XmlNode = Elem.tr [] - let _button' : XmlNode list -> XmlNode = Elem.button [] - let _datalist' : XmlNode list -> XmlNode = Elem.datalist [] - let _fieldset' : XmlNode list -> XmlNode = Elem.fieldset [] - let _form' : XmlNode list -> XmlNode = Elem.form [] - let _label' : XmlNode list -> XmlNode = Elem.label [] - let _legend' : XmlNode list -> XmlNode = Elem.legend [] - let _meter' : XmlNode list -> XmlNode = Elem.meter [] - let _optgroup' : XmlNode list -> XmlNode = Elem.optgroup [] - let _option' : XmlNode list -> XmlNode = Elem.option [] - let _output' : XmlNode list -> XmlNode = Elem.output [] - let _progress' : XmlNode list -> XmlNode = Elem.progress [] - let _select' : XmlNode list -> XmlNode = Elem.select [] - let _textarea' : XmlNode list -> XmlNode = Elem.textarea [] - let _details' : XmlNode list -> XmlNode = Elem.details [] - let _dialog' : XmlNode list -> XmlNode = Elem.dialog [] - let _summary' : XmlNode list -> XmlNode = Elem.summary [] - let _slot' : XmlNode list -> XmlNode = Elem.slot [] - let _template' : XmlNode list -> XmlNode = Elem.template [] - let _math' : XmlNode list -> XmlNode = Elem.math [] - let _svg' : XmlNode list -> XmlNode = Elem.svg [] - -module a = - let _accept = Attr.accept - let _acceptCharset = Attr.acceptCharset - let _accesskey = Attr.accesskey - let _action = Attr.action - let _align = Attr.align - let _allow = Attr.allow - let _alt = Attr.alt - let _async = Attr.async - let _autocapitalize = Attr.autocapitalize - let _autocomplete = Attr.autocomplete - let _autofocus = Attr.autofocus - let _autoplay = Attr.autoplay - let _background = Attr.background - let _bgcolor = Attr.bgcolor - let _border = Attr.border - let _buffered = Attr.buffered - let _capture = Attr.capture - let _challenge = Attr.challenge - let _charset = Attr.charset - let _checked = Attr.checked' - let _cite = Attr.cite - let _class = Attr.class' - let _code = Attr.code - let _codebase = Attr.codebase - let _color = Attr.color - let _cols = Attr.cols - let _colspan = Attr.colspan - let _content = Attr.content - let _contenteditable = Attr.contenteditable - let _contextmenu = Attr.contextmenu - let _controls = Attr.controls - let _coords = Attr.coords - let _crossorigin = Attr.crossorigin - let _csp = Attr.csp - let _data = Attr.data - let _dataAttr = Attr.dataAttr - let _datetime = Attr.datetime - let _decoding = Attr.decoding - let _default = Attr.default' - let _defer = Attr.defer - let _dir = Attr.dir - let _dirname = Attr.dirname - let _disabled = Attr.disabled - let _download = Attr.download - let _draggable = Attr.draggable - let _enctype = Attr.enctype - let _enterkeyhint = Attr.enterkeyhint - let _for = Attr.for' - let _form = Attr.form - let _formaction = Attr.formaction - let _formenctype = Attr.formenctype - let _formmethod = Attr.formmethod - let _formnovalidate = Attr.formnovalidate - let _formtarget = Attr.formtarget - let _headers = Attr.headers - let _height = Attr.height - let _hidden = Attr.hidden - let _high = Attr.high - let _href = Attr.href - let _hreflang = Attr.hreflang - let _httpEquiv = Attr.httpEquiv - let _icon = Attr.icon - let _id = Attr.id - let _importance = Attr.importance - let _integrity = Attr.integrity - let _inputmode = Attr.inputmode - let _ismap = Attr.ismap - let _itemprop = Attr.itemprop - let _keytype = Attr.keytype - let _kind = Attr.kind - let _label = Attr.label - let _lang = Attr.lang - let _loading = Attr.loading - let _list = Attr.list - let _loop = Attr.loop - let _low = Attr.low - let _max = Attr.max - let _maxlength = Attr.maxlength - let _minlength = Attr.minlength - let _media = Attr.media - let _method = Attr.method - let _min = Attr.min - let _multiple = Attr.multiple - let _muted = Attr.muted - let _name = Attr.name - let _novalidate = Attr.novalidate - let _open = Attr.open' - let _optimum = Attr.optimum - let _pattern = Attr.pattern - let _ping = Attr.ping - let _placeholder = Attr.placeholder - let _poster = Attr.poster - let _preload = Attr.preload - let _radiogroup = Attr.radiogroup - let _readonly = Attr.readonly - let _referrerpolicy = Attr.referrerpolicy - let _rel = Attr.rel - let _required = Attr.required - let _reversed = Attr.reversed - let _role = Attr.role - let _rows = Attr.rows - let _rowspan = Attr.rowspan - let _sandbox = Attr.sandbox - let _scope = Attr.scope - let _selected = Attr.selected - let _shape = Attr.shape - let _size = Attr.size - let _sizes = Attr.sizes - let _slot = Attr.slot - let _span = Attr.span - let _spellcheck = Attr.spellcheck - let _src = Attr.src - let _srcdoc = Attr.srcdoc - let _srclang = Attr.srclang - let _srcset = Attr.srcset - let _start = Attr.start - let _step = Attr.step - let _style = Attr.style - let _tabindex = Attr.tabindex - let _target = Attr.target - let _title = Attr.title - let _translate = Attr.translate - let _type = Attr.type' - let _usemap = Attr.usemap - let _value = Attr.value - let _width = Attr.width - let _wrap = Attr.wrap - - // Events - let _onabort = Attr.onabort - let _onafterprint = Attr.onafterprint - let _onanimationend = Attr.onanimationend - let _onanimationiteration = Attr.onanimationiteration - let _onanimationstart = Attr.onanimationstart - let _onbeforeprint = Attr.onbeforeprint - let _onbeforeunload = Attr.onbeforeunload - let _onblur = Attr.onblur - let _oncanplay = Attr.oncanplay - let _oncanplaythrough = Attr.oncanplaythrough - let _onchange = Attr.onchange - let _onclick = Attr.onclick - let _oncontextmenu = Attr.oncontextmenu - let _oncopy = Attr.oncopy - let _oncut = Attr.oncut - let _ondblclick = Attr.ondblclick - let _ondrag = Attr.ondrag - let _ondragend = Attr.ondragend - let _ondragenter = Attr.ondragenter - let _ondragleave = Attr.ondragleave - let _ondragover = Attr.ondragover - let _ondragstart = Attr.ondragstart - let _ondrop = Attr.ondrop - let _ondurationchange = Attr.ondurationchange - let _onemptied = Attr.onemptied - let _onended = Attr.onended - let _onerror = Attr.onerror - let _onfocus = Attr.onfocus - let _onformchange = Attr.onformchange - let _onforminput = Attr.onforminput - let _onfocusin = Attr.onfocusin - let _onfocusout = Attr.onfocusout - let _onfullscreenchange = Attr.onfullscreenchange - let _onfullscreenerror = Attr.onfullscreenerror - let _onhashchange = Attr.onhashchange - let _oninput = Attr.oninput - let _oninvalid = Attr.oninvalid - let _onkeydown = Attr.onkeydown - let _onkeypress = Attr.onkeypress - let _onkeyup = Attr.onkeyup - let _onload = Attr.onload - let _onloadeddata = Attr.onloadeddata - let _onloadedmetadata = Attr.onloadedmetadata - let _onloadstart = Attr.onloadstart - let _onmessage = Attr.onmessage - let _onmousedown = Attr.onmousedown - let _onmouseenter = Attr.onmouseenter - let _onmouseleave = Attr.onmouseleave - let _onmousemove = Attr.onmousemove - let _onmouseover = Attr.onmouseover - let _onmouseout = Attr.onmouseout - let _onmouseup = Attr.onmouseup - let _onmousewheel = Attr.onmousewheel - let _onoffline = Attr.onoffline - let _ononline = Attr.ononline - let _onopen = Attr.onopen - let _onpagehide = Attr.onpagehide - let _onpageshow = Attr.onpageshow - let _onpaste = Attr.onpaste - let _onpause = Attr.onpause - let _onplay = Attr.onplay - let _onplaying = Attr.onplaying - let _onpopstate = Attr.onpopstate - let _onprogress = Attr.onprogress - let _onratechange = Attr.onratechange - let _onresize = Attr.onresize - let _onreset = Attr.onreset - let _onscroll = Attr.onscroll - let _onsearch = Attr.onsearch - let _onseeked = Attr.onseeked - let _onseeking = Attr.onseeking - let _onselect = Attr.onselect - let _onshow = Attr.onshow - let _onstalled = Attr.onstalled - let _onstorage = Attr.onstorage - let _onsubmit = Attr.onsubmit - let _onsuspend = Attr.onsuspend - let _ontimeupdate = Attr.ontimeupdate - let _ontoggle = Attr.ontoggle - let _ontouchcancel = Attr.ontouchcancel - let _ontouchend = Attr.ontouchend - let _ontouchmove = Attr.ontouchmove - let _ontouchstart = Attr.ontouchstart - let _ontransitionend = Attr.ontransitionend - let _onunload = Attr.onunload - let _onvolumechange = Attr.onvolumechange - let _onwaiting = Attr.onwaiting - let _onwheel = Attr.onwheel + type html = + inherit elem + new (attr, [] children) = { inherit elem("html", attr, children) } + new (attr) = html(attr, Array.empty) + new ([] children) = html(attr.empty, children) + + type base' = + inherit elem + new (attr, [] children) = { inherit elem("base", attr, children) } + new (attr) = base'(attr, Array.empty) + new ([] children) = base'(attr.empty, children) + + type head = + inherit elem + new (attr, [] children) = { inherit elem("head", attr, children) } + new (attr) = head(attr, Array.empty) + new ([] children) = head(attr.empty, children) + + type link = + inherit elem + new (attr, [] children) = { inherit elem("link", attr, children) } + new (attr) = link(attr, Array.empty) + new ([] children) = link(attr.empty, children) + + type meta = + inherit elem + new (attr, [] children) = { inherit elem("meta", attr, children) } + new (attr) = meta(attr, Array.empty) + new ([] children) = meta(attr.empty, children) + + type style = + inherit elem + new (attr, [] children) = { inherit elem("style", attr, children) } + new (attr) = style(attr, Array.empty) + new ([] children) = style(attr.empty, children) + + type title = + inherit elem + new (attr, [] children) = { inherit elem("title", attr, children) } + new (attr) = title(attr, Array.empty) + new ([] children) = title(attr.empty, children) + + type body = + inherit elem + new (attr, [] children) = { inherit elem("body", attr, children) } + new (attr) = body(attr, Array.empty) + new ([] children) = body(attr.empty, children) + + type address = + inherit elem + new (attr, [] children) = { inherit elem("address", attr, children) } + new (attr) = address(attr, Array.empty) + new ([] children) = address(attr.empty, children) + + type article = + inherit elem + new (attr, [] children) = { inherit elem("article", attr, children) } + new (attr) = article(attr, Array.empty) + new ([] children) = article(attr.empty, children) + + type aside = + inherit elem + new (attr, [] children) = { inherit elem("aside", attr, children) } + new (attr) = aside(attr, Array.empty) + new ([] children) = aside(attr.empty, children) + + type footer = + inherit elem + new (attr, [] children) = { inherit elem("footer", attr, children) } + new (attr) = footer(attr, Array.empty) + new ([] children) = footer(attr.empty, children) + + type header = + inherit elem + new (attr, [] children) = { inherit elem("header", attr, children) } + new (attr) = header(attr, Array.empty) + new ([] children) = header(attr.empty, children) + + type h1 = + inherit elem + new (attr, [] children) = { inherit elem("h1", attr, children) } + new (attr) = h1(attr, Array.empty) + new ([] children) = h1(attr.empty, children) + + type h2 = + inherit elem + new (attr, [] children) = { inherit elem("h2", attr, children) } + new (attr) = h2(attr, Array.empty) + new ([] children) = h2(attr.empty, children) + + type h3 = + inherit elem + new (attr, [] children) = { inherit elem("h3", attr, children) } + new (attr) = h3(attr, Array.empty) + new ([] children) = h3(attr.empty, children) + + type h4 = + inherit elem + new (attr, [] children) = { inherit elem("h4", attr, children) } + new (attr) = h4(attr, Array.empty) + new ([] children) = h4(attr.empty, children) + + type h5 = + inherit elem + new (attr, [] children) = { inherit elem("h5", attr, children) } + new (attr) = h5(attr, Array.empty) + new ([] children) = h5(attr.empty, children) + + type h6 = + inherit elem + new (attr, [] children) = { inherit elem("h6", attr, children) } + new (attr) = h6(attr, Array.empty) + new ([] children) = h6(attr.empty, children) + + type main = + inherit elem + new (attr, [] children) = { inherit elem("main", attr, children) } + new (attr) = main(attr, Array.empty) + new ([] children) = main(attr.empty, children) + + type nav = + inherit elem + new (attr, [] children) = { inherit elem("nav", attr, children) } + new (attr) = nav(attr, Array.empty) + new ([] children) = nav(attr.empty, children) + + type section = + inherit elem + new (attr, [] children) = { inherit elem("section", attr, children) } + new (attr) = section(attr, Array.empty) + new ([] children) = section(attr.empty, children) + + type blockquote = + inherit elem + new (attr, [] children) = { inherit elem("blockquote", attr, children) } + new (attr) = blockquote(attr, Array.empty) + new ([] children) = blockquote(attr.empty, children) + + type dd = + inherit elem + new (attr, [] children) = { inherit elem("dd", attr, children) } + new (attr) = dd(attr, Array.empty) + new ([] children) = dd(attr.empty, children) + + type div = + inherit elem + new (attr, [] children) = { inherit elem("div", attr, children) } + new (attr) = div(attr, Array.empty) + new ([] children) = div(attr.empty, children) + + type dl = + inherit elem + new (attr, [] children) = { inherit elem("dl", attr, children) } + new (attr) = dl(attr, Array.empty) + new ([] children) = dl(attr.empty, children) + + type dt = + inherit elem + new (attr, [] children) = { inherit elem("dt", attr, children) } + new (attr) = dt(attr, Array.empty) + new ([] children) = dt(attr.empty, children) + + type figcaption = + inherit elem + new (attr, [] children) = { inherit elem("figcaption", attr, children) } + new (attr) = figcaption(attr, Array.empty) + new ([] children) = figcaption(attr.empty, children) + + type figure = + inherit elem + new (attr, [] children) = { inherit elem("figure", attr, children) } + new (attr) = figure(attr, Array.empty) + new ([] children) = figure(attr.empty, children) + + type hr = + inherit elem + new (attr, [] children) = { inherit elem("hr", attr, children) } + new (attr) = hr(attr, Array.empty) + new ([] children) = hr(attr.empty, children) + + type li = + inherit elem + new (attr, [] children) = { inherit elem("li", attr, children) } + new (attr) = li(attr, Array.empty) + new ([] children) = li(attr.empty, children) + + type menu = + inherit elem + new (attr, [] children) = { inherit elem("menu", attr, children) } + new (attr) = menu(attr, Array.empty) + new ([] children) = menu(attr.empty, children) + + type ol = + inherit elem + new (attr, [] children) = { inherit elem("ol", attr, children) } + new (attr) = ol(attr, Array.empty) + new ([] children) = ol(attr.empty, children) + + type p = + inherit elem + new (attr, [] children) = { inherit elem("p", attr, children) } + new (attr) = p(attr, Array.empty) + new ([] children) = p(attr.empty, children) + + type pre = + inherit elem + new (attr, [] children) = { inherit elem("pre", attr, children) } + new (attr) = pre(attr, Array.empty) + new ([] children) = pre(attr.empty, children) + + type ul = + inherit elem + new (attr, [] children) = { inherit elem("ul", attr, children) } + new (attr) = ul(attr, Array.empty) + new ([] children) = ul(attr.empty, children) + + type a' = + inherit elem + new (attr, [] children) = { inherit elem("a", attr, children) } + new (attr) = a'(attr, Array.empty) + new ([] children) = a'(attr.empty, children) + + type abbr = + inherit elem + new (attr, [] children) = { inherit elem("abbr", attr, children) } + new (attr) = abbr(attr, Array.empty) + new ([] children) = abbr(attr.empty, children) + + type b = + inherit elem + new (attr, [] children) = { inherit elem("b", attr, children) } + new (attr) = b(attr, Array.empty) + new ([] children) = b(attr.empty, children) + + type bdi = + inherit elem + new (attr, [] children) = { inherit elem("bdi", attr, children) } + new (attr) = bdi(attr, Array.empty) + new ([] children) = bdi(attr.empty, children) + + type bdo = + inherit elem + new (attr, [] children) = { inherit elem("bdo", attr, children) } + new (attr) = bdo(attr, Array.empty) + new ([] children) = bdo(attr.empty, children) + + type br = + inherit elem + new (attr, [] children) = { inherit elem("br", attr, children) } + new (attr) = br(attr, Array.empty) + new ([] children) = br(attr.empty, children) + + type cite = + inherit elem + new (attr, [] children) = { inherit elem("cite", attr, children) } + new (attr) = cite(attr, Array.empty) + new ([] children) = cite(attr.empty, children) + + type code = + inherit elem + new (attr, [] children) = { inherit elem("code", attr, children) } + new (attr) = code(attr, Array.empty) + new ([] children) = code(attr.empty, children) + + type data = + inherit elem + new (attr, [] children) = { inherit elem("data", attr, children) } + new (attr) = data(attr, Array.empty) + new ([] children) = data(attr.empty, children) + + type dfn = + inherit elem + new (attr, [] children) = { inherit elem("dfn", attr, children) } + new (attr) = dfn(attr, Array.empty) + new ([] children) = dfn(attr.empty, children) + + type em = + inherit elem + new (attr, [] children) = { inherit elem("em", attr, children) } + new (attr) = em(attr, Array.empty) + new ([] children) = em(attr.empty, children) + + type i = + inherit elem + new (attr, [] children) = { inherit elem("i", attr, children) } + new (attr) = i(attr, Array.empty) + new ([] children) = i(attr.empty, children) + + type kbd = + inherit elem + new (attr, [] children) = { inherit elem("kbd", attr, children) } + new (attr) = kbd(attr, Array.empty) + new ([] children) = kbd(attr.empty, children) + + type mark = + inherit elem + new (attr, [] children) = { inherit elem("mark", attr, children) } + new (attr) = mark(attr, Array.empty) + new ([] children) = mark(attr.empty, children) + + type q = + inherit elem + new (attr, [] children) = { inherit elem("q", attr, children) } + new (attr) = q(attr, Array.empty) + new ([] children) = q(attr.empty, children) + + type rp = + inherit elem + new (attr, [] children) = { inherit elem("rp", attr, children) } + new (attr) = rp(attr, Array.empty) + new ([] children) = rp(attr.empty, children) + + type rt = + inherit elem + new (attr, [] children) = { inherit elem("rt", attr, children) } + new (attr) = rt(attr, Array.empty) + new ([] children) = rt(attr.empty, children) + + type ruby = + inherit elem + new (attr, [] children) = { inherit elem("ruby", attr, children) } + new (attr) = ruby(attr, Array.empty) + new ([] children) = ruby(attr.empty, children) + + type s = + inherit elem + new (attr, [] children) = { inherit elem("s", attr, children) } + new (attr) = s(attr, Array.empty) + new ([] children) = s(attr.empty, children) + + type samp = + inherit elem + new (attr, [] children) = { inherit elem("samp", attr, children) } + new (attr) = samp(attr, Array.empty) + new ([] children) = samp(attr.empty, children) + + type small = + inherit elem + new (attr, [] children) = { inherit elem("small", attr, children) } + new (attr) = small(attr, Array.empty) + new ([] children) = small(attr.empty, children) + + type span = + inherit elem + new (attr, [] children) = { inherit elem("span", attr, children) } + new (attr) = span(attr, Array.empty) + new ([] children) = span(attr.empty, children) + + type strong = + inherit elem + new (attr, [] children) = { inherit elem("strong", attr, children) } + new (attr) = strong(attr, Array.empty) + new ([] children) = strong(attr.empty, children) + + type sub = + inherit elem + new (attr, [] children) = { inherit elem("sub", attr, children) } + new (attr) = sub(attr, Array.empty) + new ([] children) = sub(attr.empty, children) + + type sup = + inherit elem + new (attr, [] children) = { inherit elem("sup", attr, children) } + new (attr) = sup(attr, Array.empty) + new ([] children) = sup(attr.empty, children) + + type time = + inherit elem + new (attr, [] children) = { inherit elem("time", attr, children) } + new (attr) = time(attr, Array.empty) + new ([] children) = time(attr.empty, children) + + type u = + inherit elem + new (attr, [] children) = { inherit elem("u", attr, children) } + new (attr) = u(attr, Array.empty) + new ([] children) = u(attr.empty, children) + + type var = + inherit elem + new (attr, [] children) = { inherit elem("var", attr, children) } + new (attr) = var(attr, Array.empty) + new ([] children) = var(attr.empty, children) + + type wbr = + inherit elem + new (attr, [] children) = { inherit elem("wbr", attr, children) } + new (attr) = wbr(attr, Array.empty) + new ([] children) = wbr(attr.empty, children) + + type area = + inherit elem + new (attr, [] children) = { inherit elem("area", attr, children) } + new (attr) = area(attr, Array.empty) + new ([] children) = area(attr.empty, children) + + type audio = + inherit elem + new (attr, [] children) = { inherit elem("audio", attr, children) } + new (attr) = audio(attr, Array.empty) + new ([] children) = audio(attr.empty, children) + + type img = + inherit elem + new (attr, [] children) = { inherit elem("img", attr, children) } + new (attr) = img(attr, Array.empty) + new ([] children) = img(attr.empty, children) + + type map = + inherit elem + new (attr, [] children) = { inherit elem("map", attr, children) } + new (attr) = map(attr, Array.empty) + new ([] children) = map(attr.empty, children) + + type track = + inherit elem + new (attr, [] children) = { inherit elem("track", attr, children) } + new (attr) = track(attr, Array.empty) + new ([] children) = track(attr.empty, children) + + type video = + inherit elem + new (attr, [] children) = { inherit elem("video", attr, children) } + new (attr) = video(attr, Array.empty) + new ([] children) = video(attr.empty, children) + + type embed = + inherit elem + new (attr, [] children) = { inherit elem("embed", attr, children) } + new (attr) = embed(attr, Array.empty) + new ([] children) = embed(attr.empty, children) + + type iframe = + inherit elem + new (attr, [] children) = { inherit elem("iframe", attr, children) } + new (attr) = iframe(attr, Array.empty) + new ([] children) = iframe(attr.empty, children) + + type object = + inherit elem + new (attr, [] children) = { inherit elem("object", attr, children) } + new (attr) = object(attr, Array.empty) + new ([] children) = object(attr.empty, children) + + type picture = + inherit elem + new (attr, [] children) = { inherit elem("picture", attr, children) } + new (attr) = picture(attr, Array.empty) + new ([] children) = picture(attr.empty, children) + + type portal = + inherit elem + new (attr, [] children) = { inherit elem("portal", attr, children) } + new (attr) = portal(attr, Array.empty) + new ([] children) = portal(attr.empty, children) + + type source = + inherit elem + new (attr, [] children) = { inherit elem("source", attr, children) } + new (attr) = source(attr, Array.empty) + new ([] children) = source(attr.empty, children) + + type canvas = + inherit elem + new (attr, [] children) = { inherit elem("canvas", attr, children) } + new (attr) = canvas(attr, Array.empty) + new ([] children) = canvas(attr.empty, children) + + type noscript = + inherit elem + new (attr, [] children) = { inherit elem("noscript", attr, children) } + new (attr) = noscript(attr, Array.empty) + new ([] children) = noscript(attr.empty, children) + + type script = + inherit elem + new (attr, [] children) = { inherit elem("script", attr, children) } + new (attr) = script(attr, Array.empty) + new ([] children) = script(attr.empty, children) + + type del = + inherit elem + new (attr, [] children) = { inherit elem("del", attr, children) } + new (attr) = del(attr, Array.empty) + new ([] children) = del(attr.empty, children) + + type ins = + inherit elem + new (attr, [] children) = { inherit elem("ins", attr, children) } + new (attr) = ins(attr, Array.empty) + new ([] children) = ins(attr.empty, children) + + type caption = + inherit elem + new (attr, [] children) = { inherit elem("caption", attr, children) } + new (attr) = caption(attr, Array.empty) + new ([] children) = caption(attr.empty, children) + + type col = + inherit elem + new (attr, [] children) = { inherit elem("col", attr, children) } + new (attr) = col(attr, Array.empty) + new ([] children) = col(attr.empty, children) + + type colgroup = + inherit elem + new (attr, [] children) = { inherit elem("colgroup", attr, children) } + new (attr) = colgroup(attr, Array.empty) + new ([] children) = colgroup(attr.empty, children) + + type table = + inherit elem + new (attr, [] children) = { inherit elem("table", attr, children) } + new (attr) = table(attr, Array.empty) + new ([] children) = table(attr.empty, children) + + type tbody = + inherit elem + new (attr, [] children) = { inherit elem("tbody", attr, children) } + new (attr) = tbody(attr, Array.empty) + new ([] children) = tbody(attr.empty, children) + + type td = + inherit elem + new (attr, [] children) = { inherit elem("td", attr, children) } + new (attr) = td(attr, Array.empty) + new ([] children) = td(attr.empty, children) + + type tfoot = + inherit elem + new (attr, [] children) = { inherit elem("tfoot", attr, children) } + new (attr) = tfoot(attr, Array.empty) + new ([] children) = tfoot(attr.empty, children) + + type th = + inherit elem + new (attr, [] children) = { inherit elem("th", attr, children) } + new (attr) = th(attr, Array.empty) + new ([] children) = th(attr.empty, children) + + type thead = + inherit elem + new (attr, [] children) = { inherit elem("thead", attr, children) } + new (attr) = thead(attr, Array.empty) + new ([] children) = thead(attr.empty, children) + + type tr = + inherit elem + new (attr, [] children) = { inherit elem("tr", attr, children) } + new (attr) = tr(attr, Array.empty) + new ([] children) = tr(attr.empty, children) + + type button = + inherit elem + new (attr, [] children) = { inherit elem("button", attr, children) } + new (attr) = button(attr, Array.empty) + new ([] children) = button(attr.empty, children) + + type datalist = + inherit elem + new (attr, [] children) = { inherit elem("datalist", attr, children) } + new (attr) = datalist(attr, Array.empty) + new ([] children) = datalist(attr.empty, children) + + type fieldset = + inherit elem + new (attr, [] children) = { inherit elem("fieldset", attr, children) } + new (attr) = fieldset(attr, Array.empty) + new ([] children) = fieldset(attr.empty, children) + + type form = + inherit elem + new (attr, [] children) = { inherit elem("form", attr, children) } + new (attr) = form(attr, Array.empty) + new ([] children) = form(attr.empty, children) + + type input = + inherit elem + new (attr, [] children) = { inherit elem("input", attr, children) } + new (attr) = input(attr, Array.empty) + new ([] children) = input(attr.empty, children) + + type label = + inherit elem + new (attr, [] children) = { inherit elem("label", attr, children) } + new (attr) = label(attr, Array.empty) + new ([] children) = label(attr.empty, children) + + type legend = + inherit elem + new (attr, [] children) = { inherit elem("legend", attr, children) } + new (attr) = legend(attr, Array.empty) + new ([] children) = legend(attr.empty, children) + + type meter = + inherit elem + new (attr, [] children) = { inherit elem("meter", attr, children) } + new (attr) = meter(attr, Array.empty) + new ([] children) = meter(attr.empty, children) + + type optgroup = + inherit elem + new (attr, [] children) = { inherit elem("optgroup", attr, children) } + new (attr) = optgroup(attr, Array.empty) + new ([] children) = optgroup(attr.empty, children) + + type option = + inherit elem + new (attr, [] children) = { inherit elem("option", attr, children) } + new (attr) = option(attr, Array.empty) + new ([] children) = option(attr.empty, children) + + type output = + inherit elem + new (attr, [] children) = { inherit elem("output", attr, children) } + new (attr) = output(attr, Array.empty) + new ([] children) = output(attr.empty, children) + + type progress = + inherit elem + new (attr, [] children) = { inherit elem("progress", attr, children) } + new (attr) = progress(attr, Array.empty) + new ([] children) = progress(attr.empty, children) + + type select = + inherit elem + new (attr, [] children) = { inherit elem("select", attr, children) } + new (attr) = select(attr, Array.empty) + new ([] children) = select(attr.empty, children) + + type textarea = + inherit elem + new (attr, [] children) = { inherit elem("textarea", attr, children) } + new (attr) = textarea(attr, Array.empty) + new ([] children) = textarea(attr.empty, children) + + type details = + inherit elem + new (attr, [] children) = { inherit elem("details", attr, children) } + new (attr) = details(attr, Array.empty) + new ([] children) = details(attr.empty, children) + + type dialog = + inherit elem + new (attr, [] children) = { inherit elem("dialog", attr, children) } + new (attr) = dialog(attr, Array.empty) + new ([] children) = dialog(attr.empty, children) + + type summary = + inherit elem + new (attr, [] children) = { inherit elem("summary", attr, children) } + new (attr) = summary(attr, Array.empty) + new ([] children) = summary(attr.empty, children) + + type slot = + inherit elem + new (attr, [] children) = { inherit elem("slot", attr, children) } + new (attr) = slot(attr, Array.empty) + new ([] children) = slot(attr.empty, children) + + type template = + inherit elem + new (attr, [] children) = { inherit elem("template", attr, children) } + new (attr) = template(attr, Array.empty) + new ([] children) = template(attr.empty, children) + + type math = + inherit elem + new (attr, [] children) = { inherit elem("math", attr, children) } + new (attr) = math(attr, Array.empty) + new ([] children) = math(attr.empty, children) + + type svg = + inherit elem + new (attr, [] children) = { inherit elem("svg", attr, children) } + new (attr) = svg(attr, Array.empty) + new ([] children) = svg(attr.empty, children) + +[] +module Attr = + type async() = inherit a("async") + type autofocus() = inherit a("autofocus") + type autoplay() = inherit a("autoplay") + type checked'() = inherit a("checked") + type controls() = inherit a("controls") + type default'() = inherit a("default") + type defer() = inherit a("defer") + type disabled() = inherit a("disabled") + type formnovalidate() = inherit a("formnovalidate") + type hidden() = inherit a("hidden") + type ismap() = inherit a("ismap") + type loop() = inherit a("loop") + type multiple() = inherit a("multiple") + type muted() = inherit a("muted") + type novalidate() = inherit a("novalidate") + type readonly() = inherit a("readonly") + type required() = inherit a("required") + type reversed() = inherit a("reversed") + type selected() = inherit a("selected") + + type accept(value) = inherit a("accept", value) + type acceptCharset(value) = inherit a("accept-charset", value) + type accesskey(value) = inherit a("accesskey", value) + type action(value) = inherit a("action", value) + type align(value) = inherit a("align", value) + type allow(value) = inherit a("allow", value) + type alt(value) = inherit a("alt", value) + type autocapitalize(value) = inherit a("autocapitalize", value) + type autocomplete(value) = inherit a("autocomplete", value) + type background(value) = inherit a("background", value) + type bgcolor(value) = inherit a("bgcolor", value) + type border(value) = inherit a("border", value) + type buffered(value) = inherit a("buffered", value) + type capture(value) = inherit a("capture", value) + type challenge(value) = inherit a("challenge", value) + type charset(value) = inherit a("charset", value) + type cite(value) = inherit a("cite", value) + type class'(value) = inherit a("class", value) + type code(value) = inherit a("code", value) + type codebase(value) = inherit a("codebase", value) + type color(value) = inherit a("color", value) + type cols(value) = inherit a("cols", value) + type colspan(value) = inherit a("colspan", value) + type content(value) = inherit a("content", value) + type contenteditable(value) = inherit a("contenteditable", value) + type contextmenu(value) = inherit a("contextmenu", value) + type coords(value) = inherit a("coords", value) + type crossorigin(value) = inherit a("crossorigin", value) + type csp(value) = inherit a("csp", value) + type data(value) = inherit a("data", value) + type datetime(value) = inherit a("datetime", value) + type decoding(value) = inherit a("decoding", value) + type dir(value) = inherit a("dir", value) + type dirname(value) = inherit a("dirname", value) + type download(value) = inherit a("download", value) + type draggable(value) = inherit a("draggable", value) + type enctype(value) = inherit a("enctype", value) + type enterkeyhint(value) = inherit a("enterkeyhint", value) + type for'(value) = inherit a("for", value) + type form(value) = inherit a("form", value) + type formaction(value) = inherit a("formaction", value) + type formenctype(value) = inherit a("formenctype", value) + type formmethod(value) = inherit a("formmethod", value) + type formtarget(value) = inherit a("formtarget", value) + type headers(value) = inherit a("headers", value) + type height(value) = inherit a("height", value) + type high(value) = inherit a("high", value) + type href(value) = inherit a("href", value) + type hreflang(value) = inherit a("hreflang", value) + type httpEquiv(value) = inherit a("http-equiv", value) + type icon(value) = inherit a("icon", value) + type id(value) = inherit a("id", value) + type importance(value) = inherit a("importance", value) + type integrity(value) = inherit a("integrity", value) + type inputmode(value) = inherit a("inputmode", value) + type itemprop(value) = inherit a("itemprop", value) + type keytype(value) = inherit a("keytype", value) + type kind(value) = inherit a("kind", value) + type label(value) = inherit a("label", value) + type lang(value) = inherit a("lang", value) + type loading(value) = inherit a("loading", value) + type list(value) = inherit a("list", value) + type low(value) = inherit a("low", value) + type max(value) = inherit a("max", value) + type maxlength(value) = inherit a("maxlength", value) + type minlength(value) = inherit a("minlength", value) + type media(value) = inherit a("media", value) + type method(value) = inherit a("method", value) + type min(value) = inherit a("min", value) + type name(value) = inherit a("name", value) + type open'(value) = inherit a("open", value) + type optimum(value) = inherit a("optimum", value) + type pattern(value) = inherit a("pattern", value) + type ping(value) = inherit a("ping", value) + type placeholder(value) = inherit a("placeholder", value) + type poster(value) = inherit a("poster", value) + type preload(value) = inherit a("preload", value) + type radiogroup(value) = inherit a("radiogroup", value) + type referrerpolicy(value) = inherit a("referrerpolicy", value) + type rel(value) = inherit a("rel", value) + type role(value) = inherit a("role", value) + type rows(value) = inherit a("rows", value) + type rowspan(value) = inherit a("rowspan", value) + type sandbox(value) = inherit a("sandbox", value) + type scope(value) = inherit a("scope", value) + type shape(value) = inherit a("shape", value) + type size(value) = inherit a("size", value) + type sizes(value) = inherit a("sizes", value) + type slot(value) = inherit a("slot", value) + type span(value) = inherit a("span", value) + type spellcheck(value) = inherit a("spellcheck", value) + type src(value) = inherit a("src", value) + type srcdoc(value) = inherit a("srcdoc", value) + type srclang(value) = inherit a("srclang", value) + type srcset(value) = inherit a("srcset", value) + type start(value) = inherit a("start", value) + type step(value) = inherit a("step", value) + type style(value) = inherit a("style", value) + type tabindex(value) = inherit a("tabindex", value) + type target(value) = inherit a("target", value) + type title(value) = inherit a("title", value) + type translate(value) = inherit a("translate", value) + type type'(value) = inherit a("type", value) + type usemap(value) = inherit a("usemap", value) + type value(value) = inherit a("value", value) + type width(value) = inherit a("width", value) + type wrap(value) = inherit a("wrap", value) \ No newline at end of file From acaae4874010b556db449ce50931a47fc8eea019 Mon Sep 17 00:00:00 2001 From: Pim Brouwers Date: Fri, 24 Nov 2023 17:23:09 -0500 Subject: [PATCH 3/7] html module refinements --- src/Falco.Markup/Html.fs | 473 ++++++++++++----------------------- src/Falco.Markup/Types.fs | 505 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 662 insertions(+), 316 deletions(-) create mode 100644 src/Falco.Markup/Types.fs diff --git a/src/Falco.Markup/Html.fs b/src/Falco.Markup/Html.fs index 6680418..9ff33e1 100644 --- a/src/Falco.Markup/Html.fs +++ b/src/Falco.Markup/Html.fs @@ -3,19 +3,15 @@ module Falco.Markup.Html open System open System.Collections.Generic -type a(key : string, ?value : string ) = - member internal _.attribute = +type _a(key : string, ?value : string) = + member _.value = match value with | Some v -> KeyValueAttr (key, v) | None -> NonValueAttr key -type type'(value : string) = - inherit a("type", value) - -type attr([]attrs : a array) = +type attr([]attrs : _a array) = static member empty = attr() - member internal _.attributes = - attrs |> Array.map _.attribute |> List.ofArray + member internal _.attributes = attrs |> Seq.map _.value let private selfClosingTags : HashSet = HashSet(seq { "base";"link";"meta";"hr";"br";"wbr";"img";"track";"embed";"source";"col";"input" }) @@ -30,824 +26,669 @@ type text = type elem = inherit x - new (tag : string, attr : attr, []children : x array) = - let a = attr.attributes - let c = children |> Array.map _.value |> List.ofArray + new (tag : string, attrs : attr, [] children : x array) = + let a = attrs.attributes |> List.ofSeq + let c = children |> Seq.map _.value |> List.ofSeq let node = match selfClosingTags.Contains tag with | false -> ParentNode ((tag, a), c) | true -> SelfClosingNode (tag, a) { inherit x(node) } - new (tag : string) = elem(tag, attr(), [||]) - new (tag : string, attr : attr) = elem(tag, attr, [||]) - new (tag : string, [] c : x array) = elem(tag, attr(), c) + new (tag : string) = elem(tag, attr.empty, Array.empty) + new (tag : string, [] attrs : _a array) = elem(tag, attr(attrs), Array.empty) + new (tag : string, [] c : x array) = elem(tag, attr.empty, c) [] module Elem = + [] + type selfClosing(tag : string, attrs) = + inherit elem(tag, attr(attrs), Array.empty) + + type base'([]attrs : _a array) = inherit selfClosing("base", attrs) + type link([]attrs : _a array) = inherit selfClosing("link", attrs) + type meta([]attrs : _a array) = inherit selfClosing("meta", attrs) + type hr([]attrs : _a array) = inherit selfClosing("hr", attrs) + type br([]attrs : _a array) = inherit selfClosing("br", attrs) + type wbr([]attrs : _a array) = inherit selfClosing("wbr", attrs) + type img([]attrs : _a array) = inherit selfClosing("img", attrs) + type track([]attrs : _a array) = inherit selfClosing("track", attrs) + type embed([]attrs : _a array) = inherit selfClosing("embed", attrs) + type source([]attrs : _a array) = inherit selfClosing("source", attrs) + type col([]attrs : _a array) = inherit selfClosing("col", attrs) + type input([]attrs : _a array) = inherit selfClosing("input", attrs) + type html = inherit elem new (attr, [] children) = { inherit elem("html", attr, children) } - new (attr) = html(attr, Array.empty) new ([] children) = html(attr.empty, children) - type base' = - inherit elem - new (attr, [] children) = { inherit elem("base", attr, children) } - new (attr) = base'(attr, Array.empty) - new ([] children) = base'(attr.empty, children) - type head = inherit elem new (attr, [] children) = { inherit elem("head", attr, children) } - new (attr) = head(attr, Array.empty) new ([] children) = head(attr.empty, children) - type link = - inherit elem - new (attr, [] children) = { inherit elem("link", attr, children) } - new (attr) = link(attr, Array.empty) - new ([] children) = link(attr.empty, children) - - type meta = - inherit elem - new (attr, [] children) = { inherit elem("meta", attr, children) } - new (attr) = meta(attr, Array.empty) - new ([] children) = meta(attr.empty, children) - type style = inherit elem new (attr, [] children) = { inherit elem("style", attr, children) } - new (attr) = style(attr, Array.empty) new ([] children) = style(attr.empty, children) type title = inherit elem new (attr, [] children) = { inherit elem("title", attr, children) } - new (attr) = title(attr, Array.empty) new ([] children) = title(attr.empty, children) type body = inherit elem new (attr, [] children) = { inherit elem("body", attr, children) } - new (attr) = body(attr, Array.empty) new ([] children) = body(attr.empty, children) type address = inherit elem new (attr, [] children) = { inherit elem("address", attr, children) } - new (attr) = address(attr, Array.empty) new ([] children) = address(attr.empty, children) type article = inherit elem new (attr, [] children) = { inherit elem("article", attr, children) } - new (attr) = article(attr, Array.empty) new ([] children) = article(attr.empty, children) type aside = inherit elem new (attr, [] children) = { inherit elem("aside", attr, children) } - new (attr) = aside(attr, Array.empty) new ([] children) = aside(attr.empty, children) type footer = inherit elem new (attr, [] children) = { inherit elem("footer", attr, children) } - new (attr) = footer(attr, Array.empty) new ([] children) = footer(attr.empty, children) type header = inherit elem new (attr, [] children) = { inherit elem("header", attr, children) } - new (attr) = header(attr, Array.empty) new ([] children) = header(attr.empty, children) type h1 = inherit elem new (attr, [] children) = { inherit elem("h1", attr, children) } - new (attr) = h1(attr, Array.empty) new ([] children) = h1(attr.empty, children) type h2 = inherit elem new (attr, [] children) = { inherit elem("h2", attr, children) } - new (attr) = h2(attr, Array.empty) new ([] children) = h2(attr.empty, children) type h3 = inherit elem new (attr, [] children) = { inherit elem("h3", attr, children) } - new (attr) = h3(attr, Array.empty) new ([] children) = h3(attr.empty, children) type h4 = inherit elem new (attr, [] children) = { inherit elem("h4", attr, children) } - new (attr) = h4(attr, Array.empty) new ([] children) = h4(attr.empty, children) type h5 = inherit elem new (attr, [] children) = { inherit elem("h5", attr, children) } - new (attr) = h5(attr, Array.empty) new ([] children) = h5(attr.empty, children) type h6 = inherit elem new (attr, [] children) = { inherit elem("h6", attr, children) } - new (attr) = h6(attr, Array.empty) new ([] children) = h6(attr.empty, children) type main = inherit elem new (attr, [] children) = { inherit elem("main", attr, children) } - new (attr) = main(attr, Array.empty) new ([] children) = main(attr.empty, children) type nav = inherit elem new (attr, [] children) = { inherit elem("nav", attr, children) } - new (attr) = nav(attr, Array.empty) new ([] children) = nav(attr.empty, children) type section = inherit elem new (attr, [] children) = { inherit elem("section", attr, children) } - new (attr) = section(attr, Array.empty) new ([] children) = section(attr.empty, children) type blockquote = inherit elem new (attr, [] children) = { inherit elem("blockquote", attr, children) } - new (attr) = blockquote(attr, Array.empty) new ([] children) = blockquote(attr.empty, children) type dd = inherit elem new (attr, [] children) = { inherit elem("dd", attr, children) } - new (attr) = dd(attr, Array.empty) new ([] children) = dd(attr.empty, children) type div = inherit elem new (attr, [] children) = { inherit elem("div", attr, children) } - new (attr) = div(attr, Array.empty) new ([] children) = div(attr.empty, children) type dl = inherit elem new (attr, [] children) = { inherit elem("dl", attr, children) } - new (attr) = dl(attr, Array.empty) new ([] children) = dl(attr.empty, children) type dt = inherit elem new (attr, [] children) = { inherit elem("dt", attr, children) } - new (attr) = dt(attr, Array.empty) new ([] children) = dt(attr.empty, children) type figcaption = inherit elem new (attr, [] children) = { inherit elem("figcaption", attr, children) } - new (attr) = figcaption(attr, Array.empty) new ([] children) = figcaption(attr.empty, children) type figure = inherit elem new (attr, [] children) = { inherit elem("figure", attr, children) } - new (attr) = figure(attr, Array.empty) new ([] children) = figure(attr.empty, children) - type hr = - inherit elem - new (attr, [] children) = { inherit elem("hr", attr, children) } - new (attr) = hr(attr, Array.empty) - new ([] children) = hr(attr.empty, children) - type li = inherit elem new (attr, [] children) = { inherit elem("li", attr, children) } - new (attr) = li(attr, Array.empty) new ([] children) = li(attr.empty, children) type menu = inherit elem new (attr, [] children) = { inherit elem("menu", attr, children) } - new (attr) = menu(attr, Array.empty) new ([] children) = menu(attr.empty, children) type ol = inherit elem new (attr, [] children) = { inherit elem("ol", attr, children) } - new (attr) = ol(attr, Array.empty) new ([] children) = ol(attr.empty, children) type p = inherit elem new (attr, [] children) = { inherit elem("p", attr, children) } - new (attr) = p(attr, Array.empty) new ([] children) = p(attr.empty, children) type pre = inherit elem new (attr, [] children) = { inherit elem("pre", attr, children) } - new (attr) = pre(attr, Array.empty) new ([] children) = pre(attr.empty, children) type ul = inherit elem new (attr, [] children) = { inherit elem("ul", attr, children) } - new (attr) = ul(attr, Array.empty) new ([] children) = ul(attr.empty, children) - type a' = + type a = inherit elem new (attr, [] children) = { inherit elem("a", attr, children) } - new (attr) = a'(attr, Array.empty) - new ([] children) = a'(attr.empty, children) + new ([] children) = a(attr.empty, children) type abbr = inherit elem new (attr, [] children) = { inherit elem("abbr", attr, children) } - new (attr) = abbr(attr, Array.empty) new ([] children) = abbr(attr.empty, children) type b = inherit elem new (attr, [] children) = { inherit elem("b", attr, children) } - new (attr) = b(attr, Array.empty) new ([] children) = b(attr.empty, children) type bdi = inherit elem new (attr, [] children) = { inherit elem("bdi", attr, children) } - new (attr) = bdi(attr, Array.empty) new ([] children) = bdi(attr.empty, children) type bdo = inherit elem new (attr, [] children) = { inherit elem("bdo", attr, children) } - new (attr) = bdo(attr, Array.empty) new ([] children) = bdo(attr.empty, children) - type br = - inherit elem - new (attr, [] children) = { inherit elem("br", attr, children) } - new (attr) = br(attr, Array.empty) - new ([] children) = br(attr.empty, children) - type cite = inherit elem new (attr, [] children) = { inherit elem("cite", attr, children) } - new (attr) = cite(attr, Array.empty) new ([] children) = cite(attr.empty, children) type code = inherit elem new (attr, [] children) = { inherit elem("code", attr, children) } - new (attr) = code(attr, Array.empty) new ([] children) = code(attr.empty, children) type data = inherit elem new (attr, [] children) = { inherit elem("data", attr, children) } - new (attr) = data(attr, Array.empty) new ([] children) = data(attr.empty, children) type dfn = inherit elem new (attr, [] children) = { inherit elem("dfn", attr, children) } - new (attr) = dfn(attr, Array.empty) new ([] children) = dfn(attr.empty, children) type em = inherit elem new (attr, [] children) = { inherit elem("em", attr, children) } - new (attr) = em(attr, Array.empty) new ([] children) = em(attr.empty, children) type i = inherit elem new (attr, [] children) = { inherit elem("i", attr, children) } - new (attr) = i(attr, Array.empty) new ([] children) = i(attr.empty, children) type kbd = inherit elem new (attr, [] children) = { inherit elem("kbd", attr, children) } - new (attr) = kbd(attr, Array.empty) new ([] children) = kbd(attr.empty, children) type mark = inherit elem new (attr, [] children) = { inherit elem("mark", attr, children) } - new (attr) = mark(attr, Array.empty) new ([] children) = mark(attr.empty, children) type q = inherit elem new (attr, [] children) = { inherit elem("q", attr, children) } - new (attr) = q(attr, Array.empty) new ([] children) = q(attr.empty, children) type rp = inherit elem new (attr, [] children) = { inherit elem("rp", attr, children) } - new (attr) = rp(attr, Array.empty) new ([] children) = rp(attr.empty, children) type rt = inherit elem new (attr, [] children) = { inherit elem("rt", attr, children) } - new (attr) = rt(attr, Array.empty) new ([] children) = rt(attr.empty, children) type ruby = inherit elem new (attr, [] children) = { inherit elem("ruby", attr, children) } - new (attr) = ruby(attr, Array.empty) new ([] children) = ruby(attr.empty, children) type s = inherit elem new (attr, [] children) = { inherit elem("s", attr, children) } - new (attr) = s(attr, Array.empty) new ([] children) = s(attr.empty, children) type samp = inherit elem new (attr, [] children) = { inherit elem("samp", attr, children) } - new (attr) = samp(attr, Array.empty) new ([] children) = samp(attr.empty, children) type small = inherit elem new (attr, [] children) = { inherit elem("small", attr, children) } - new (attr) = small(attr, Array.empty) new ([] children) = small(attr.empty, children) type span = inherit elem new (attr, [] children) = { inherit elem("span", attr, children) } - new (attr) = span(attr, Array.empty) new ([] children) = span(attr.empty, children) type strong = inherit elem new (attr, [] children) = { inherit elem("strong", attr, children) } - new (attr) = strong(attr, Array.empty) new ([] children) = strong(attr.empty, children) type sub = inherit elem new (attr, [] children) = { inherit elem("sub", attr, children) } - new (attr) = sub(attr, Array.empty) new ([] children) = sub(attr.empty, children) type sup = inherit elem new (attr, [] children) = { inherit elem("sup", attr, children) } - new (attr) = sup(attr, Array.empty) new ([] children) = sup(attr.empty, children) type time = inherit elem new (attr, [] children) = { inherit elem("time", attr, children) } - new (attr) = time(attr, Array.empty) new ([] children) = time(attr.empty, children) type u = inherit elem new (attr, [] children) = { inherit elem("u", attr, children) } - new (attr) = u(attr, Array.empty) new ([] children) = u(attr.empty, children) type var = inherit elem new (attr, [] children) = { inherit elem("var", attr, children) } - new (attr) = var(attr, Array.empty) new ([] children) = var(attr.empty, children) - type wbr = - inherit elem - new (attr, [] children) = { inherit elem("wbr", attr, children) } - new (attr) = wbr(attr, Array.empty) - new ([] children) = wbr(attr.empty, children) - type area = inherit elem new (attr, [] children) = { inherit elem("area", attr, children) } - new (attr) = area(attr, Array.empty) new ([] children) = area(attr.empty, children) type audio = inherit elem new (attr, [] children) = { inherit elem("audio", attr, children) } - new (attr) = audio(attr, Array.empty) new ([] children) = audio(attr.empty, children) - type img = - inherit elem - new (attr, [] children) = { inherit elem("img", attr, children) } - new (attr) = img(attr, Array.empty) - new ([] children) = img(attr.empty, children) - type map = inherit elem new (attr, [] children) = { inherit elem("map", attr, children) } - new (attr) = map(attr, Array.empty) new ([] children) = map(attr.empty, children) - type track = - inherit elem - new (attr, [] children) = { inherit elem("track", attr, children) } - new (attr) = track(attr, Array.empty) - new ([] children) = track(attr.empty, children) - type video = inherit elem new (attr, [] children) = { inherit elem("video", attr, children) } - new (attr) = video(attr, Array.empty) new ([] children) = video(attr.empty, children) - type embed = - inherit elem - new (attr, [] children) = { inherit elem("embed", attr, children) } - new (attr) = embed(attr, Array.empty) - new ([] children) = embed(attr.empty, children) - type iframe = inherit elem new (attr, [] children) = { inherit elem("iframe", attr, children) } - new (attr) = iframe(attr, Array.empty) new ([] children) = iframe(attr.empty, children) type object = inherit elem new (attr, [] children) = { inherit elem("object", attr, children) } - new (attr) = object(attr, Array.empty) new ([] children) = object(attr.empty, children) type picture = inherit elem new (attr, [] children) = { inherit elem("picture", attr, children) } - new (attr) = picture(attr, Array.empty) new ([] children) = picture(attr.empty, children) type portal = inherit elem new (attr, [] children) = { inherit elem("portal", attr, children) } - new (attr) = portal(attr, Array.empty) new ([] children) = portal(attr.empty, children) - type source = - inherit elem - new (attr, [] children) = { inherit elem("source", attr, children) } - new (attr) = source(attr, Array.empty) - new ([] children) = source(attr.empty, children) - type canvas = inherit elem new (attr, [] children) = { inherit elem("canvas", attr, children) } - new (attr) = canvas(attr, Array.empty) new ([] children) = canvas(attr.empty, children) type noscript = inherit elem new (attr, [] children) = { inherit elem("noscript", attr, children) } - new (attr) = noscript(attr, Array.empty) new ([] children) = noscript(attr.empty, children) type script = inherit elem new (attr, [] children) = { inherit elem("script", attr, children) } - new (attr) = script(attr, Array.empty) new ([] children) = script(attr.empty, children) type del = inherit elem new (attr, [] children) = { inherit elem("del", attr, children) } - new (attr) = del(attr, Array.empty) new ([] children) = del(attr.empty, children) type ins = inherit elem new (attr, [] children) = { inherit elem("ins", attr, children) } - new (attr) = ins(attr, Array.empty) new ([] children) = ins(attr.empty, children) type caption = inherit elem new (attr, [] children) = { inherit elem("caption", attr, children) } - new (attr) = caption(attr, Array.empty) new ([] children) = caption(attr.empty, children) - type col = - inherit elem - new (attr, [] children) = { inherit elem("col", attr, children) } - new (attr) = col(attr, Array.empty) - new ([] children) = col(attr.empty, children) - type colgroup = inherit elem new (attr, [] children) = { inherit elem("colgroup", attr, children) } - new (attr) = colgroup(attr, Array.empty) new ([] children) = colgroup(attr.empty, children) type table = inherit elem new (attr, [] children) = { inherit elem("table", attr, children) } - new (attr) = table(attr, Array.empty) new ([] children) = table(attr.empty, children) type tbody = inherit elem new (attr, [] children) = { inherit elem("tbody", attr, children) } - new (attr) = tbody(attr, Array.empty) new ([] children) = tbody(attr.empty, children) type td = inherit elem new (attr, [] children) = { inherit elem("td", attr, children) } - new (attr) = td(attr, Array.empty) new ([] children) = td(attr.empty, children) type tfoot = inherit elem new (attr, [] children) = { inherit elem("tfoot", attr, children) } - new (attr) = tfoot(attr, Array.empty) new ([] children) = tfoot(attr.empty, children) type th = inherit elem new (attr, [] children) = { inherit elem("th", attr, children) } - new (attr) = th(attr, Array.empty) new ([] children) = th(attr.empty, children) type thead = inherit elem new (attr, [] children) = { inherit elem("thead", attr, children) } - new (attr) = thead(attr, Array.empty) new ([] children) = thead(attr.empty, children) type tr = inherit elem new (attr, [] children) = { inherit elem("tr", attr, children) } - new (attr) = tr(attr, Array.empty) new ([] children) = tr(attr.empty, children) type button = inherit elem new (attr, [] children) = { inherit elem("button", attr, children) } - new (attr) = button(attr, Array.empty) new ([] children) = button(attr.empty, children) type datalist = inherit elem new (attr, [] children) = { inherit elem("datalist", attr, children) } - new (attr) = datalist(attr, Array.empty) new ([] children) = datalist(attr.empty, children) type fieldset = inherit elem new (attr, [] children) = { inherit elem("fieldset", attr, children) } - new (attr) = fieldset(attr, Array.empty) new ([] children) = fieldset(attr.empty, children) type form = inherit elem new (attr, [] children) = { inherit elem("form", attr, children) } - new (attr) = form(attr, Array.empty) new ([] children) = form(attr.empty, children) - type input = - inherit elem - new (attr, [] children) = { inherit elem("input", attr, children) } - new (attr) = input(attr, Array.empty) - new ([] children) = input(attr.empty, children) - type label = inherit elem new (attr, [] children) = { inherit elem("label", attr, children) } - new (attr) = label(attr, Array.empty) new ([] children) = label(attr.empty, children) type legend = inherit elem new (attr, [] children) = { inherit elem("legend", attr, children) } - new (attr) = legend(attr, Array.empty) new ([] children) = legend(attr.empty, children) type meter = inherit elem new (attr, [] children) = { inherit elem("meter", attr, children) } - new (attr) = meter(attr, Array.empty) new ([] children) = meter(attr.empty, children) type optgroup = inherit elem new (attr, [] children) = { inherit elem("optgroup", attr, children) } - new (attr) = optgroup(attr, Array.empty) new ([] children) = optgroup(attr.empty, children) type option = inherit elem new (attr, [] children) = { inherit elem("option", attr, children) } - new (attr) = option(attr, Array.empty) new ([] children) = option(attr.empty, children) type output = inherit elem new (attr, [] children) = { inherit elem("output", attr, children) } - new (attr) = output(attr, Array.empty) new ([] children) = output(attr.empty, children) type progress = inherit elem new (attr, [] children) = { inherit elem("progress", attr, children) } - new (attr) = progress(attr, Array.empty) new ([] children) = progress(attr.empty, children) type select = inherit elem new (attr, [] children) = { inherit elem("select", attr, children) } - new (attr) = select(attr, Array.empty) new ([] children) = select(attr.empty, children) type textarea = inherit elem new (attr, [] children) = { inherit elem("textarea", attr, children) } - new (attr) = textarea(attr, Array.empty) new ([] children) = textarea(attr.empty, children) type details = inherit elem new (attr, [] children) = { inherit elem("details", attr, children) } - new (attr) = details(attr, Array.empty) new ([] children) = details(attr.empty, children) type dialog = inherit elem new (attr, [] children) = { inherit elem("dialog", attr, children) } - new (attr) = dialog(attr, Array.empty) new ([] children) = dialog(attr.empty, children) type summary = inherit elem new (attr, [] children) = { inherit elem("summary", attr, children) } - new (attr) = summary(attr, Array.empty) new ([] children) = summary(attr.empty, children) type slot = inherit elem new (attr, [] children) = { inherit elem("slot", attr, children) } - new (attr) = slot(attr, Array.empty) new ([] children) = slot(attr.empty, children) type template = inherit elem new (attr, [] children) = { inherit elem("template", attr, children) } - new (attr) = template(attr, Array.empty) new ([] children) = template(attr.empty, children) type math = inherit elem new (attr, [] children) = { inherit elem("math", attr, children) } - new (attr) = math(attr, Array.empty) new ([] children) = math(attr.empty, children) type svg = inherit elem new (attr, [] children) = { inherit elem("svg", attr, children) } - new (attr) = svg(attr, Array.empty) new ([] children) = svg(attr.empty, children) + [] module Attr = - type async() = inherit a("async") - type autofocus() = inherit a("autofocus") - type autoplay() = inherit a("autoplay") - type checked'() = inherit a("checked") - type controls() = inherit a("controls") - type default'() = inherit a("default") - type defer() = inherit a("defer") - type disabled() = inherit a("disabled") - type formnovalidate() = inherit a("formnovalidate") - type hidden() = inherit a("hidden") - type ismap() = inherit a("ismap") - type loop() = inherit a("loop") - type multiple() = inherit a("multiple") - type muted() = inherit a("muted") - type novalidate() = inherit a("novalidate") - type readonly() = inherit a("readonly") - type required() = inherit a("required") - type reversed() = inherit a("reversed") - type selected() = inherit a("selected") - - type accept(value) = inherit a("accept", value) - type acceptCharset(value) = inherit a("accept-charset", value) - type accesskey(value) = inherit a("accesskey", value) - type action(value) = inherit a("action", value) - type align(value) = inherit a("align", value) - type allow(value) = inherit a("allow", value) - type alt(value) = inherit a("alt", value) - type autocapitalize(value) = inherit a("autocapitalize", value) - type autocomplete(value) = inherit a("autocomplete", value) - type background(value) = inherit a("background", value) - type bgcolor(value) = inherit a("bgcolor", value) - type border(value) = inherit a("border", value) - type buffered(value) = inherit a("buffered", value) - type capture(value) = inherit a("capture", value) - type challenge(value) = inherit a("challenge", value) - type charset(value) = inherit a("charset", value) - type cite(value) = inherit a("cite", value) - type class'(value) = inherit a("class", value) - type code(value) = inherit a("code", value) - type codebase(value) = inherit a("codebase", value) - type color(value) = inherit a("color", value) - type cols(value) = inherit a("cols", value) - type colspan(value) = inherit a("colspan", value) - type content(value) = inherit a("content", value) - type contenteditable(value) = inherit a("contenteditable", value) - type contextmenu(value) = inherit a("contextmenu", value) - type coords(value) = inherit a("coords", value) - type crossorigin(value) = inherit a("crossorigin", value) - type csp(value) = inherit a("csp", value) - type data(value) = inherit a("data", value) - type datetime(value) = inherit a("datetime", value) - type decoding(value) = inherit a("decoding", value) - type dir(value) = inherit a("dir", value) - type dirname(value) = inherit a("dirname", value) - type download(value) = inherit a("download", value) - type draggable(value) = inherit a("draggable", value) - type enctype(value) = inherit a("enctype", value) - type enterkeyhint(value) = inherit a("enterkeyhint", value) - type for'(value) = inherit a("for", value) - type form(value) = inherit a("form", value) - type formaction(value) = inherit a("formaction", value) - type formenctype(value) = inherit a("formenctype", value) - type formmethod(value) = inherit a("formmethod", value) - type formtarget(value) = inherit a("formtarget", value) - type headers(value) = inherit a("headers", value) - type height(value) = inherit a("height", value) - type high(value) = inherit a("high", value) - type href(value) = inherit a("href", value) - type hreflang(value) = inherit a("hreflang", value) - type httpEquiv(value) = inherit a("http-equiv", value) - type icon(value) = inherit a("icon", value) - type id(value) = inherit a("id", value) - type importance(value) = inherit a("importance", value) - type integrity(value) = inherit a("integrity", value) - type inputmode(value) = inherit a("inputmode", value) - type itemprop(value) = inherit a("itemprop", value) - type keytype(value) = inherit a("keytype", value) - type kind(value) = inherit a("kind", value) - type label(value) = inherit a("label", value) - type lang(value) = inherit a("lang", value) - type loading(value) = inherit a("loading", value) - type list(value) = inherit a("list", value) - type low(value) = inherit a("low", value) - type max(value) = inherit a("max", value) - type maxlength(value) = inherit a("maxlength", value) - type minlength(value) = inherit a("minlength", value) - type media(value) = inherit a("media", value) - type method(value) = inherit a("method", value) - type min(value) = inherit a("min", value) - type name(value) = inherit a("name", value) - type open'(value) = inherit a("open", value) - type optimum(value) = inherit a("optimum", value) - type pattern(value) = inherit a("pattern", value) - type ping(value) = inherit a("ping", value) - type placeholder(value) = inherit a("placeholder", value) - type poster(value) = inherit a("poster", value) - type preload(value) = inherit a("preload", value) - type radiogroup(value) = inherit a("radiogroup", value) - type referrerpolicy(value) = inherit a("referrerpolicy", value) - type rel(value) = inherit a("rel", value) - type role(value) = inherit a("role", value) - type rows(value) = inherit a("rows", value) - type rowspan(value) = inherit a("rowspan", value) - type sandbox(value) = inherit a("sandbox", value) - type scope(value) = inherit a("scope", value) - type shape(value) = inherit a("shape", value) - type size(value) = inherit a("size", value) - type sizes(value) = inherit a("sizes", value) - type slot(value) = inherit a("slot", value) - type span(value) = inherit a("span", value) - type spellcheck(value) = inherit a("spellcheck", value) - type src(value) = inherit a("src", value) - type srcdoc(value) = inherit a("srcdoc", value) - type srclang(value) = inherit a("srclang", value) - type srcset(value) = inherit a("srcset", value) - type start(value) = inherit a("start", value) - type step(value) = inherit a("step", value) - type style(value) = inherit a("style", value) - type tabindex(value) = inherit a("tabindex", value) - type target(value) = inherit a("target", value) - type title(value) = inherit a("title", value) - type translate(value) = inherit a("translate", value) - type type'(value) = inherit a("type", value) - type usemap(value) = inherit a("usemap", value) - type value(value) = inherit a("value", value) - type width(value) = inherit a("width", value) - type wrap(value) = inherit a("wrap", value) \ No newline at end of file + let _async = _a("async") + let _autofocus = _a("autofocus") + let _autoplay = _a("autoplay") + let _checked = _a("checked") + let _controls = _a("controls") + let _default = _a("default") + let _defer = _a("defer") + let _disabled = _a("disabled") + let _formnovalidate = _a("formnovalidate") + let _hidden = _a("hidden") + let _ismap = _a("ismap") + let _loop = _a("loop") + let _multiple = _a("multiple") + let _muted = _a("muted") + let _novalidate = _a("novalidate") + let _readonly = _a("readonly") + let _required = _a("required") + let _reversed = _a("reversed") + let _selected = _a("selected") + + let _accept value = _a("accept", value) + let _acceptCharset value = _a("accept-charset", value) + let _accesskey value = _a("accesskey", value) + let _action value = _a("action", value) + let _align value = _a("align", value) + let _allow value = _a("allow", value) + let _alt value = _a("alt", value) + let _autocapitalize value = _a("autocapitalize", value) + let _autocomplete value = _a("autocomplete", value) + let _background value = _a("background", value) + let _bgcolor value = _a("bgcolor", value) + let _border value = _a("border", value) + let _buffered value = _a("buffered", value) + let _capture value = _a("capture", value) + let _challenge value = _a("challenge", value) + let _charset value = _a("charset", value) + let _cite value = _a("cite", value) + let _class value = _a("class", value) + let _code value = _a("code", value) + let _codebase value = _a("codebase", value) + let _color value = _a("color", value) + let _cols value = _a("cols", value) + let _colspan value = _a("colspan", value) + let _content value = _a("content", value) + let _contenteditable value = _a("contenteditable", value) + let _contextmenu value = _a("contextmenu", value) + let _coords value = _a("coords", value) + let _crossorigin value = _a("crossorigin", value) + let _csp value = _a("csp", value) + let _data value = _a("data", value) + let _datetime value = _a("datetime", value) + let _decoding value = _a("decoding", value) + let _dir value = _a("dir", value) + let _dirname value = _a("dirname", value) + let _download value = _a("download", value) + let _draggable value = _a("draggable", value) + let _enctype value = _a("enctype", value) + let _enterkeyhint value = _a("enterkeyhint", value) + let _for value = _a("for", value) + let _form value = _a("form", value) + let _formaction value = _a("formaction", value) + let _formenctype value = _a("formenctype", value) + let _formmethod value = _a("formmethod", value) + let _formtarget value = _a("formtarget", value) + let _headers value = _a("headers", value) + let _height value = _a("height", value) + let _high value = _a("high", value) + let _href value = _a("href", value) + let _hreflang value = _a("hreflang", value) + let _httpEquiv value = _a("http-equiv", value) + let _icon value = _a("icon", value) + let _id value = _a("id", value) + let _importance value = _a("importance", value) + let _integrity value = _a("integrity", value) + let _inputmode value = _a("inputmode", value) + let _itemprop value = _a("itemprop", value) + let _keytype value = _a("keytype", value) + let _kind value = _a("kind", value) + let _label value = _a("label", value) + let _lang value = _a("lang", value) + let _loading value = _a("loading", value) + let _list value = _a("list", value) + let _low value = _a("low", value) + let _max value = _a("max", value) + let _maxlength value = _a("maxlength", value) + let _minlength value = _a("minlength", value) + let _media value = _a("media", value) + let _method value = _a("method", value) + let _min value = _a("min", value) + let _name value = _a("name", value) + let _open value = _a("open", value) + let _optimum value = _a("optimum", value) + let _pattern value = _a("pattern", value) + let _ping value = _a("ping", value) + let _placeholder value = _a("placeholder", value) + let _poster value = _a("poster", value) + let _preload value = _a("preload", value) + let _radiogroup value = _a("radiogroup", value) + let _referrerpolicy value = _a("referrerpolicy", value) + let _rel value = _a("rel", value) + let _role value = _a("role", value) + let _rows value = _a("rows", value) + let _rowspan value = _a("rowspan", value) + let _sandbox value = _a("sandbox", value) + let _scope value = _a("scope", value) + let _shape value = _a("shape", value) + let _size value = _a("size", value) + let _sizes value = _a("sizes", value) + let _slot value = _a("slot", value) + let _span value = _a("span", value) + let _spellcheck value = _a("spellcheck", value) + let _src value = _a("src", value) + let _srcdoc value = _a("srcdoc", value) + let _srclang value = _a("srclang", value) + let _srcset value = _a("srcset", value) + let _start value = _a("start", value) + let _step value = _a("step", value) + let _style value = _a("style", value) + let _tabindex value = _a("tabindex", value) + let _target value = _a("target", value) + let _title value = _a("title", value) + let _translate value = _a("translate", value) + let _type value = _a("type", value) + let _usemap value = _a("usemap", value) + let _value value = _a("value", value) + let _width value = _a("width", value) + let _wrap value = _a("wrap", value) \ No newline at end of file diff --git a/src/Falco.Markup/Types.fs b/src/Falco.Markup/Types.fs new file mode 100644 index 0000000..ea7eaa0 --- /dev/null +++ b/src/Falco.Markup/Types.fs @@ -0,0 +1,505 @@ + type html = + inherit elem + new (attr, [] children) = { inherit elem("html", attr, children) } + new ([] children) = html(attr.empty, children) + + type head = + inherit elem + new (attr, [] children) = { inherit elem("head", attr, children) } + new ([] children) = head(attr.empty, children) + + type style = + inherit elem + new (attr, [] children) = { inherit elem("style", attr, children) } + new ([] children) = style(attr.empty, children) + + type title = + inherit elem + new (attr, [] children) = { inherit elem("title", attr, children) } + new ([] children) = title(attr.empty, children) + + type body = + inherit elem + new (attr, [] children) = { inherit elem("body", attr, children) } + new ([] children) = body(attr.empty, children) + + type address = + inherit elem + new (attr, [] children) = { inherit elem("address", attr, children) } + new ([] children) = address(attr.empty, children) + + type article = + inherit elem + new (attr, [] children) = { inherit elem("article", attr, children) } + new ([] children) = article(attr.empty, children) + + type aside = + inherit elem + new (attr, [] children) = { inherit elem("aside", attr, children) } + new ([] children) = aside(attr.empty, children) + + type footer = + inherit elem + new (attr, [] children) = { inherit elem("footer", attr, children) } + new ([] children) = footer(attr.empty, children) + + type header = + inherit elem + new (attr, [] children) = { inherit elem("header", attr, children) } + new ([] children) = header(attr.empty, children) + + type h1 = + inherit elem + new (attr, [] children) = { inherit elem("h1", attr, children) } + new ([] children) = h1(attr.empty, children) + + type h2 = + inherit elem + new (attr, [] children) = { inherit elem("h2", attr, children) } + new ([] children) = h2(attr.empty, children) + + type h3 = + inherit elem + new (attr, [] children) = { inherit elem("h3", attr, children) } + new ([] children) = h3(attr.empty, children) + + type h4 = + inherit elem + new (attr, [] children) = { inherit elem("h4", attr, children) } + new ([] children) = h4(attr.empty, children) + + type h5 = + inherit elem + new (attr, [] children) = { inherit elem("h5", attr, children) } + new ([] children) = h5(attr.empty, children) + + type h6 = + inherit elem + new (attr, [] children) = { inherit elem("h6", attr, children) } + new ([] children) = h6(attr.empty, children) + + type main = + inherit elem + new (attr, [] children) = { inherit elem("main", attr, children) } + new ([] children) = main(attr.empty, children) + + type nav = + inherit elem + new (attr, [] children) = { inherit elem("nav", attr, children) } + new ([] children) = nav(attr.empty, children) + + type section = + inherit elem + new (attr, [] children) = { inherit elem("section", attr, children) } + new ([] children) = section(attr.empty, children) + + type blockquote = + inherit elem + new (attr, [] children) = { inherit elem("blockquote", attr, children) } + new ([] children) = blockquote(attr.empty, children) + + type dd = + inherit elem + new (attr, [] children) = { inherit elem("dd", attr, children) } + new ([] children) = dd(attr.empty, children) + + type div = + inherit elem + new (attr, [] children) = { inherit elem("div", attr, children) } + new ([] children) = div(attr.empty, children) + + type dl = + inherit elem + new (attr, [] children) = { inherit elem("dl", attr, children) } + new ([] children) = dl(attr.empty, children) + + type dt = + inherit elem + new (attr, [] children) = { inherit elem("dt", attr, children) } + new ([] children) = dt(attr.empty, children) + + type figcaption = + inherit elem + new (attr, [] children) = { inherit elem("figcaption", attr, children) } + new ([] children) = figcaption(attr.empty, children) + + type figure = + inherit elem + new (attr, [] children) = { inherit elem("figure", attr, children) } + new ([] children) = figure(attr.empty, children) + + type li = + inherit elem + new (attr, [] children) = { inherit elem("li", attr, children) } + new ([] children) = li(attr.empty, children) + + type menu = + inherit elem + new (attr, [] children) = { inherit elem("menu", attr, children) } + new ([] children) = menu(attr.empty, children) + + type ol = + inherit elem + new (attr, [] children) = { inherit elem("ol", attr, children) } + new ([] children) = ol(attr.empty, children) + + type p = + inherit elem + new (attr, [] children) = { inherit elem("p", attr, children) } + new ([] children) = p(attr.empty, children) + + type pre = + inherit elem + new (attr, [] children) = { inherit elem("pre", attr, children) } + new ([] children) = pre(attr.empty, children) + + type ul = + inherit elem + new (attr, [] children) = { inherit elem("ul", attr, children) } + new ([] children) = ul(attr.empty, children) + + type a = + inherit elem + new (attr, [] children) = { inherit elem("a", attr, children) } + new ([] children) = a(attr.empty, children) + + type abbr = + inherit elem + new (attr, [] children) = { inherit elem("abbr", attr, children) } + new ([] children) = abbr(attr.empty, children) + + type b = + inherit elem + new (attr, [] children) = { inherit elem("b", attr, children) } + new ([] children) = b(attr.empty, children) + + type bdi = + inherit elem + new (attr, [] children) = { inherit elem("bdi", attr, children) } + new ([] children) = bdi(attr.empty, children) + + type bdo = + inherit elem + new (attr, [] children) = { inherit elem("bdo", attr, children) } + new ([] children) = bdo(attr.empty, children) + + type cite = + inherit elem + new (attr, [] children) = { inherit elem("cite", attr, children) } + new ([] children) = cite(attr.empty, children) + + type code = + inherit elem + new (attr, [] children) = { inherit elem("code", attr, children) } + new ([] children) = code(attr.empty, children) + + type data = + inherit elem + new (attr, [] children) = { inherit elem("data", attr, children) } + new ([] children) = data(attr.empty, children) + + type dfn = + inherit elem + new (attr, [] children) = { inherit elem("dfn", attr, children) } + new ([] children) = dfn(attr.empty, children) + + type em = + inherit elem + new (attr, [] children) = { inherit elem("em", attr, children) } + new ([] children) = em(attr.empty, children) + + type i = + inherit elem + new (attr, [] children) = { inherit elem("i", attr, children) } + new ([] children) = i(attr.empty, children) + + type kbd = + inherit elem + new (attr, [] children) = { inherit elem("kbd", attr, children) } + new ([] children) = kbd(attr.empty, children) + + type mark = + inherit elem + new (attr, [] children) = { inherit elem("mark", attr, children) } + new ([] children) = mark(attr.empty, children) + + type q = + inherit elem + new (attr, [] children) = { inherit elem("q", attr, children) } + new ([] children) = q(attr.empty, children) + + type rp = + inherit elem + new (attr, [] children) = { inherit elem("rp", attr, children) } + new ([] children) = rp(attr.empty, children) + + type rt = + inherit elem + new (attr, [] children) = { inherit elem("rt", attr, children) } + new ([] children) = rt(attr.empty, children) + + type ruby = + inherit elem + new (attr, [] children) = { inherit elem("ruby", attr, children) } + new ([] children) = ruby(attr.empty, children) + + type s = + inherit elem + new (attr, [] children) = { inherit elem("s", attr, children) } + new ([] children) = s(attr.empty, children) + + type samp = + inherit elem + new (attr, [] children) = { inherit elem("samp", attr, children) } + new ([] children) = samp(attr.empty, children) + + type small = + inherit elem + new (attr, [] children) = { inherit elem("small", attr, children) } + new ([] children) = small(attr.empty, children) + + type span = + inherit elem + new (attr, [] children) = { inherit elem("span", attr, children) } + new ([] children) = span(attr.empty, children) + + type strong = + inherit elem + new (attr, [] children) = { inherit elem("strong", attr, children) } + new ([] children) = strong(attr.empty, children) + + type sub = + inherit elem + new (attr, [] children) = { inherit elem("sub", attr, children) } + new ([] children) = sub(attr.empty, children) + + type sup = + inherit elem + new (attr, [] children) = { inherit elem("sup", attr, children) } + new ([] children) = sup(attr.empty, children) + + type time = + inherit elem + new (attr, [] children) = { inherit elem("time", attr, children) } + new ([] children) = time(attr.empty, children) + + type u = + inherit elem + new (attr, [] children) = { inherit elem("u", attr, children) } + new ([] children) = u(attr.empty, children) + + type var = + inherit elem + new (attr, [] children) = { inherit elem("var", attr, children) } + new ([] children) = var(attr.empty, children) + + type area = + inherit elem + new (attr, [] children) = { inherit elem("area", attr, children) } + new ([] children) = area(attr.empty, children) + + type audio = + inherit elem + new (attr, [] children) = { inherit elem("audio", attr, children) } + new ([] children) = audio(attr.empty, children) + + type map = + inherit elem + new (attr, [] children) = { inherit elem("map", attr, children) } + new ([] children) = map(attr.empty, children) + + type video = + inherit elem + new (attr, [] children) = { inherit elem("video", attr, children) } + new ([] children) = video(attr.empty, children) + + type iframe = + inherit elem + new (attr, [] children) = { inherit elem("iframe", attr, children) } + new ([] children) = iframe(attr.empty, children) + + type object = + inherit elem + new (attr, [] children) = { inherit elem("object", attr, children) } + new ([] children) = object(attr.empty, children) + + type picture = + inherit elem + new (attr, [] children) = { inherit elem("picture", attr, children) } + new ([] children) = picture(attr.empty, children) + + type portal = + inherit elem + new (attr, [] children) = { inherit elem("portal", attr, children) } + new ([] children) = portal(attr.empty, children) + + type canvas = + inherit elem + new (attr, [] children) = { inherit elem("canvas", attr, children) } + new ([] children) = canvas(attr.empty, children) + + type noscript = + inherit elem + new (attr, [] children) = { inherit elem("noscript", attr, children) } + new ([] children) = noscript(attr.empty, children) + + type script = + inherit elem + new (attr, [] children) = { inherit elem("script", attr, children) } + new ([] children) = script(attr.empty, children) + + type del = + inherit elem + new (attr, [] children) = { inherit elem("del", attr, children) } + new ([] children) = del(attr.empty, children) + + type ins = + inherit elem + new (attr, [] children) = { inherit elem("ins", attr, children) } + new ([] children) = ins(attr.empty, children) + + type caption = + inherit elem + new (attr, [] children) = { inherit elem("caption", attr, children) } + new ([] children) = caption(attr.empty, children) + + type colgroup = + inherit elem + new (attr, [] children) = { inherit elem("colgroup", attr, children) } + new ([] children) = colgroup(attr.empty, children) + + type table = + inherit elem + new (attr, [] children) = { inherit elem("table", attr, children) } + new ([] children) = table(attr.empty, children) + + type tbody = + inherit elem + new (attr, [] children) = { inherit elem("tbody", attr, children) } + new ([] children) = tbody(attr.empty, children) + + type td = + inherit elem + new (attr, [] children) = { inherit elem("td", attr, children) } + new ([] children) = td(attr.empty, children) + + type tfoot = + inherit elem + new (attr, [] children) = { inherit elem("tfoot", attr, children) } + new ([] children) = tfoot(attr.empty, children) + + type th = + inherit elem + new (attr, [] children) = { inherit elem("th", attr, children) } + new ([] children) = th(attr.empty, children) + + type thead = + inherit elem + new (attr, [] children) = { inherit elem("thead", attr, children) } + new ([] children) = thead(attr.empty, children) + + type tr = + inherit elem + new (attr, [] children) = { inherit elem("tr", attr, children) } + new ([] children) = tr(attr.empty, children) + + type button = + inherit elem + new (attr, [] children) = { inherit elem("button", attr, children) } + new ([] children) = button(attr.empty, children) + + type datalist = + inherit elem + new (attr, [] children) = { inherit elem("datalist", attr, children) } + new ([] children) = datalist(attr.empty, children) + + type fieldset = + inherit elem + new (attr, [] children) = { inherit elem("fieldset", attr, children) } + new ([] children) = fieldset(attr.empty, children) + + type form = + inherit elem + new (attr, [] children) = { inherit elem("form", attr, children) } + new ([] children) = form(attr.empty, children) + + type label = + inherit elem + new (attr, [] children) = { inherit elem("label", attr, children) } + new ([] children) = label(attr.empty, children) + + type legend = + inherit elem + new (attr, [] children) = { inherit elem("legend", attr, children) } + new ([] children) = legend(attr.empty, children) + + type meter = + inherit elem + new (attr, [] children) = { inherit elem("meter", attr, children) } + new ([] children) = meter(attr.empty, children) + + type optgroup = + inherit elem + new (attr, [] children) = { inherit elem("optgroup", attr, children) } + new ([] children) = optgroup(attr.empty, children) + + type option = + inherit elem + new (attr, [] children) = { inherit elem("option", attr, children) } + new ([] children) = option(attr.empty, children) + + type output = + inherit elem + new (attr, [] children) = { inherit elem("output", attr, children) } + new ([] children) = output(attr.empty, children) + + type progress = + inherit elem + new (attr, [] children) = { inherit elem("progress", attr, children) } + new ([] children) = progress(attr.empty, children) + + type select = + inherit elem + new (attr, [] children) = { inherit elem("select", attr, children) } + new ([] children) = select(attr.empty, children) + + type textarea = + inherit elem + new (attr, [] children) = { inherit elem("textarea", attr, children) } + new ([] children) = textarea(attr.empty, children) + + type details = + inherit elem + new (attr, [] children) = { inherit elem("details", attr, children) } + new ([] children) = details(attr.empty, children) + + type dialog = + inherit elem + new (attr, [] children) = { inherit elem("dialog", attr, children) } + new ([] children) = dialog(attr.empty, children) + + type summary = + inherit elem + new (attr, [] children) = { inherit elem("summary", attr, children) } + new ([] children) = summary(attr.empty, children) + + type slot = + inherit elem + new (attr, [] children) = { inherit elem("slot", attr, children) } + new ([] children) = slot(attr.empty, children) + + type template = + inherit elem + new (attr, [] children) = { inherit elem("template", attr, children) } + new ([] children) = template(attr.empty, children) + + type math = + inherit elem + new (attr, [] children) = { inherit elem("math", attr, children) } + new ([] children) = math(attr.empty, children) + + type svg = + inherit elem + new (attr, [] children) = { inherit elem("svg", attr, children) } + new ([] children) = svg(attr.empty, children) + From caafcbcd0ec8d67442bec9fbe73817364306e586 Mon Sep 17 00:00:00 2001 From: Pim Brouwers Date: Mon, 26 Feb 2024 20:11:39 -0500 Subject: [PATCH 4/7] htmlnode abstract class --- src/Falco.Markup/Html.fs | 57 +++++++++++++++----------------- test/Falco.Markup.Tests/Tests.fs | 45 ++++++++++++++++++++++++- 2 files changed, 71 insertions(+), 31 deletions(-) diff --git a/src/Falco.Markup/Html.fs b/src/Falco.Markup/Html.fs index 9ff33e1..ec70332 100644 --- a/src/Falco.Markup/Html.fs +++ b/src/Falco.Markup/Html.fs @@ -6,56 +6,53 @@ open System.Collections.Generic type _a(key : string, ?value : string) = member _.value = match value with - | Some v -> KeyValueAttr (key, v) - | None -> NonValueAttr key + | Some v -> Attr.create key v + | None -> Attr.createBool key type attr([]attrs : _a array) = static member empty = attr() member internal _.attributes = attrs |> Seq.map _.value -let private selfClosingTags : HashSet = HashSet(seq { "base";"link";"meta";"hr";"br";"wbr";"img";"track";"embed";"source";"col";"input" }) +let private selfClosingTags : HashSet = + HashSet(seq { "base";"link";"meta";"hr";"br";"wbr";"img";"track";"embed";"source";"col";"input" }) [] -type x = +type HtmlNode = val value: XmlNode new (node) = { value = node } type text = - inherit x - new (str : string) = { inherit x(TextNode str) } + inherit HtmlNode + new (str : string) = { inherit HtmlNode(TextNode str) } type elem = - inherit x - new (tag : string, attrs : attr, [] children : x array) = + inherit HtmlNode + new (tag : string, attrs : attr, [] children : HtmlNode array) = let a = attrs.attributes |> List.ofSeq let c = children |> Seq.map _.value |> List.ofSeq let node = match selfClosingTags.Contains tag with - | false -> ParentNode ((tag, a), c) - | true -> SelfClosingNode (tag, a) - { inherit x(node) } + | false -> Elem.create tag a c + | true -> Elem.createSelfClosing tag a + { inherit HtmlNode(node) } new (tag : string) = elem(tag, attr.empty, Array.empty) new (tag : string, [] attrs : _a array) = elem(tag, attr(attrs), Array.empty) - new (tag : string, [] c : x array) = elem(tag, attr.empty, c) + new (tag : string, [] c : HtmlNode array) = elem(tag, attr.empty, c) [] -module Elem = - [] - type selfClosing(tag : string, attrs) = - inherit elem(tag, attr(attrs), Array.empty) - - type base'([]attrs : _a array) = inherit selfClosing("base", attrs) - type link([]attrs : _a array) = inherit selfClosing("link", attrs) - type meta([]attrs : _a array) = inherit selfClosing("meta", attrs) - type hr([]attrs : _a array) = inherit selfClosing("hr", attrs) - type br([]attrs : _a array) = inherit selfClosing("br", attrs) - type wbr([]attrs : _a array) = inherit selfClosing("wbr", attrs) - type img([]attrs : _a array) = inherit selfClosing("img", attrs) - type track([]attrs : _a array) = inherit selfClosing("track", attrs) - type embed([]attrs : _a array) = inherit selfClosing("embed", attrs) - type source([]attrs : _a array) = inherit selfClosing("source", attrs) - type col([]attrs : _a array) = inherit selfClosing("col", attrs) - type input([]attrs : _a array) = inherit selfClosing("input", attrs) +module HtmlElem = + type base'([]attrs : _a array) = inherit elem("base", attr(attrs), Array.empty) + type link([]attrs : _a array) = inherit elem("link", attr(attrs), Array.empty) + type meta([]attrs : _a array) = inherit elem("meta", attr(attrs), Array.empty) + type hr([]attrs : _a array) = inherit elem("hr", attr(attrs), Array.empty) + type br([]attrs : _a array) = inherit elem("br", attr(attrs), Array.empty) + type wbr([]attrs : _a array) = inherit elem("wbr", attr(attrs), Array.empty) + type img([]attrs : _a array) = inherit elem("img", attr(attrs), Array.empty) + type track([]attrs : _a array) = inherit elem("track", attr(attrs), Array.empty) + type embed([]attrs : _a array) = inherit elem("embed", attr(attrs), Array.empty) + type source([]attrs : _a array) = inherit elem("source", attr(attrs), Array.empty) + type col([]attrs : _a array) = inherit elem("col", attr(attrs), Array.empty) + type input([]attrs : _a array) = inherit elem("input", attr(attrs), Array.empty) type html = inherit elem @@ -564,7 +561,7 @@ module Elem = [] -module Attr = +module HtmlAttr = let _async = _a("async") let _autofocus = _a("autofocus") let _autoplay = _a("autoplay") diff --git a/test/Falco.Markup.Tests/Tests.fs b/test/Falco.Markup.Tests/Tests.fs index f95009a..30a1b00 100644 --- a/test/Falco.Markup.Tests/Tests.fs +++ b/test/Falco.Markup.Tests/Tests.fs @@ -2,6 +2,7 @@ open System open Falco.Markup +open Falco.Markup.Html open Falco.Markup.Svg open FsUnit.Xunit open Xunit @@ -351,4 +352,46 @@ module TestHelpersTests = let nameValues = renderNameValues xml nameValues - |> should equal "first_name=first_name_value&long_text=long_text_value&radio=value1&checkbox=value1&checkbox=value2&select=option2&multiselect=option2&multiselect=option3" \ No newline at end of file + |> should equal "first_name=first_name_value&long_text=long_text_value&radio=value1&checkbox=value1&checkbox=value2&select=option2&multiselect=option2&multiselect=option3" + + [] + let ``Kitchen sink 2`` () = + form( + input(_name "first_name", _value "first_name_value"), + textarea(attr(_name "long_text"), text "long_text_value"), + div([| for i in [0..10] do input(_type "radio", _name "radio", _value "value1" ) |]) + ) + // [] [ + // Elem.input [ Attr.name "first_name"; Attr.value "first_name_value" ] + + // Elem.textarea [ Attr.name "long_text" ] [ Text.raw "long_text_value" ] + + // Elem.div [] [ + // Elem.input [ Attr.type' "radio"; Attr.name "radio"; Attr.value "value1"; Attr.checked' ] + // Elem.input [ Attr.type' "radio"; Attr.name "radio"; Attr.value "value2" ] + // Elem.input [ Attr.type' "radio"; Attr.name "radio"; Attr.value "value3" ] + // ] + + // Elem.div [] [ + // Elem.input [ Attr.type' "checkbox"; Attr.name "checkbox"; Attr.value "value1"; Attr.checked' ] + // Elem.input [ Attr.type' "checkbox"; Attr.name "checkbox"; Attr.value "value2"; Attr.checked' ] + // Elem.input [ Attr.type' "checkbox"; Attr.name "checkbox"; Attr.value "value3" ] + // ] + + // Elem.select [ Attr.name "select" ] [ + // Elem.option [ Attr.value "option1" ] [ Text.raw "Option 1" ] + // Elem.option [ Attr.value "option2"; Attr.selected ] [ Text.raw "Option 2" ] + // Elem.option [ Attr.value "option3" ] [ Text.raw "Option 3" ] + // ] + + // Elem.select [ Attr.name "multiselect"; Attr.multiple ] [ + // Elem.option [ Attr.value "option1" ] [ Text.raw "Option 1" ] + // Elem.option [ Attr.value "option2"; Attr.selected ] [ Text.raw "Option 2" ] + // Elem.option [ Attr.value "option3"; Attr.selected ] [ Text.raw "Option 3" ] + // ] + + // Elem.input [ Attr.type' "submit" ] + // ] + + |> renderNameValues + |> should equal "first_name=first_name_value&long_text=long_text_value&radio=value1&checkbox=value1&checkbox=value2&select=option2&multiselect=option2&multiselect=option3" From 2ab80de46095a3ee6f5cfdff3ab4d9e882968e8a Mon Sep 17 00:00:00 2001 From: Pim Brouwers Date: Wed, 12 Mar 2025 08:02:43 -0400 Subject: [PATCH 5/7] html module using underscore aliases --- src/Falco.Markup/Falco.Markup.fsproj | 2 +- src/Falco.Markup/Html.fs | 1023 +++++++++----------------- src/Falco.Markup/Types.fs | 505 ------------- test/Falco.Markup.Tests/Tests.fs | 43 -- 4 files changed, 333 insertions(+), 1240 deletions(-) delete mode 100644 src/Falco.Markup/Types.fs diff --git a/src/Falco.Markup/Falco.Markup.fsproj b/src/Falco.Markup/Falco.Markup.fsproj index c8eba53..99c7ae8 100644 --- a/src/Falco.Markup/Falco.Markup.fsproj +++ b/src/Falco.Markup/Falco.Markup.fsproj @@ -46,8 +46,8 @@ - + diff --git a/src/Falco.Markup/Html.fs b/src/Falco.Markup/Html.fs index ec70332..b9d8eef 100644 --- a/src/Falco.Markup/Html.fs +++ b/src/Falco.Markup/Html.fs @@ -1,691 +1,332 @@ -module Falco.Markup.Html - -open System -open System.Collections.Generic - -type _a(key : string, ?value : string) = - member _.value = - match value with - | Some v -> Attr.create key v - | None -> Attr.createBool key - -type attr([]attrs : _a array) = - static member empty = attr() - member internal _.attributes = attrs |> Seq.map _.value - -let private selfClosingTags : HashSet = - HashSet(seq { "base";"link";"meta";"hr";"br";"wbr";"img";"track";"embed";"source";"col";"input" }) - -[] -type HtmlNode = - val value: XmlNode - new (node) = { value = node } - -type text = - inherit HtmlNode - new (str : string) = { inherit HtmlNode(TextNode str) } - -type elem = - inherit HtmlNode - new (tag : string, attrs : attr, [] children : HtmlNode array) = - let a = attrs.attributes |> List.ofSeq - let c = children |> Seq.map _.value |> List.ofSeq - let node = - match selfClosingTags.Contains tag with - | false -> Elem.create tag a c - | true -> Elem.createSelfClosing tag a - { inherit HtmlNode(node) } - new (tag : string) = elem(tag, attr.empty, Array.empty) - new (tag : string, [] attrs : _a array) = elem(tag, attr(attrs), Array.empty) - new (tag : string, [] c : HtmlNode array) = elem(tag, attr.empty, c) - -[] -module HtmlElem = - type base'([]attrs : _a array) = inherit elem("base", attr(attrs), Array.empty) - type link([]attrs : _a array) = inherit elem("link", attr(attrs), Array.empty) - type meta([]attrs : _a array) = inherit elem("meta", attr(attrs), Array.empty) - type hr([]attrs : _a array) = inherit elem("hr", attr(attrs), Array.empty) - type br([]attrs : _a array) = inherit elem("br", attr(attrs), Array.empty) - type wbr([]attrs : _a array) = inherit elem("wbr", attr(attrs), Array.empty) - type img([]attrs : _a array) = inherit elem("img", attr(attrs), Array.empty) - type track([]attrs : _a array) = inherit elem("track", attr(attrs), Array.empty) - type embed([]attrs : _a array) = inherit elem("embed", attr(attrs), Array.empty) - type source([]attrs : _a array) = inherit elem("source", attr(attrs), Array.empty) - type col([]attrs : _a array) = inherit elem("col", attr(attrs), Array.empty) - type input([]attrs : _a array) = inherit elem("input", attr(attrs), Array.empty) - - type html = - inherit elem - new (attr, [] children) = { inherit elem("html", attr, children) } - new ([] children) = html(attr.empty, children) - - type head = - inherit elem - new (attr, [] children) = { inherit elem("head", attr, children) } - new ([] children) = head(attr.empty, children) - - type style = - inherit elem - new (attr, [] children) = { inherit elem("style", attr, children) } - new ([] children) = style(attr.empty, children) - - type title = - inherit elem - new (attr, [] children) = { inherit elem("title", attr, children) } - new ([] children) = title(attr.empty, children) - - type body = - inherit elem - new (attr, [] children) = { inherit elem("body", attr, children) } - new ([] children) = body(attr.empty, children) - - type address = - inherit elem - new (attr, [] children) = { inherit elem("address", attr, children) } - new ([] children) = address(attr.empty, children) - - type article = - inherit elem - new (attr, [] children) = { inherit elem("article", attr, children) } - new ([] children) = article(attr.empty, children) - - type aside = - inherit elem - new (attr, [] children) = { inherit elem("aside", attr, children) } - new ([] children) = aside(attr.empty, children) - - type footer = - inherit elem - new (attr, [] children) = { inherit elem("footer", attr, children) } - new ([] children) = footer(attr.empty, children) - - type header = - inherit elem - new (attr, [] children) = { inherit elem("header", attr, children) } - new ([] children) = header(attr.empty, children) - - type h1 = - inherit elem - new (attr, [] children) = { inherit elem("h1", attr, children) } - new ([] children) = h1(attr.empty, children) - - type h2 = - inherit elem - new (attr, [] children) = { inherit elem("h2", attr, children) } - new ([] children) = h2(attr.empty, children) - - type h3 = - inherit elem - new (attr, [] children) = { inherit elem("h3", attr, children) } - new ([] children) = h3(attr.empty, children) - - type h4 = - inherit elem - new (attr, [] children) = { inherit elem("h4", attr, children) } - new ([] children) = h4(attr.empty, children) - - type h5 = - inherit elem - new (attr, [] children) = { inherit elem("h5", attr, children) } - new ([] children) = h5(attr.empty, children) - - type h6 = - inherit elem - new (attr, [] children) = { inherit elem("h6", attr, children) } - new ([] children) = h6(attr.empty, children) - - type main = - inherit elem - new (attr, [] children) = { inherit elem("main", attr, children) } - new ([] children) = main(attr.empty, children) - - type nav = - inherit elem - new (attr, [] children) = { inherit elem("nav", attr, children) } - new ([] children) = nav(attr.empty, children) - - type section = - inherit elem - new (attr, [] children) = { inherit elem("section", attr, children) } - new ([] children) = section(attr.empty, children) - - type blockquote = - inherit elem - new (attr, [] children) = { inherit elem("blockquote", attr, children) } - new ([] children) = blockquote(attr.empty, children) - - type dd = - inherit elem - new (attr, [] children) = { inherit elem("dd", attr, children) } - new ([] children) = dd(attr.empty, children) - - type div = - inherit elem - new (attr, [] children) = { inherit elem("div", attr, children) } - new ([] children) = div(attr.empty, children) - - type dl = - inherit elem - new (attr, [] children) = { inherit elem("dl", attr, children) } - new ([] children) = dl(attr.empty, children) - - type dt = - inherit elem - new (attr, [] children) = { inherit elem("dt", attr, children) } - new ([] children) = dt(attr.empty, children) - - type figcaption = - inherit elem - new (attr, [] children) = { inherit elem("figcaption", attr, children) } - new ([] children) = figcaption(attr.empty, children) - - type figure = - inherit elem - new (attr, [] children) = { inherit elem("figure", attr, children) } - new ([] children) = figure(attr.empty, children) - - type li = - inherit elem - new (attr, [] children) = { inherit elem("li", attr, children) } - new ([] children) = li(attr.empty, children) - - type menu = - inherit elem - new (attr, [] children) = { inherit elem("menu", attr, children) } - new ([] children) = menu(attr.empty, children) - - type ol = - inherit elem - new (attr, [] children) = { inherit elem("ol", attr, children) } - new ([] children) = ol(attr.empty, children) - - type p = - inherit elem - new (attr, [] children) = { inherit elem("p", attr, children) } - new ([] children) = p(attr.empty, children) - - type pre = - inherit elem - new (attr, [] children) = { inherit elem("pre", attr, children) } - new ([] children) = pre(attr.empty, children) - - type ul = - inherit elem - new (attr, [] children) = { inherit elem("ul", attr, children) } - new ([] children) = ul(attr.empty, children) - - type a = - inherit elem - new (attr, [] children) = { inherit elem("a", attr, children) } - new ([] children) = a(attr.empty, children) - - type abbr = - inherit elem - new (attr, [] children) = { inherit elem("abbr", attr, children) } - new ([] children) = abbr(attr.empty, children) - - type b = - inherit elem - new (attr, [] children) = { inherit elem("b", attr, children) } - new ([] children) = b(attr.empty, children) - - type bdi = - inherit elem - new (attr, [] children) = { inherit elem("bdi", attr, children) } - new ([] children) = bdi(attr.empty, children) - - type bdo = - inherit elem - new (attr, [] children) = { inherit elem("bdo", attr, children) } - new ([] children) = bdo(attr.empty, children) - - type cite = - inherit elem - new (attr, [] children) = { inherit elem("cite", attr, children) } - new ([] children) = cite(attr.empty, children) - - type code = - inherit elem - new (attr, [] children) = { inherit elem("code", attr, children) } - new ([] children) = code(attr.empty, children) - - type data = - inherit elem - new (attr, [] children) = { inherit elem("data", attr, children) } - new ([] children) = data(attr.empty, children) - - type dfn = - inherit elem - new (attr, [] children) = { inherit elem("dfn", attr, children) } - new ([] children) = dfn(attr.empty, children) - - type em = - inherit elem - new (attr, [] children) = { inherit elem("em", attr, children) } - new ([] children) = em(attr.empty, children) - - type i = - inherit elem - new (attr, [] children) = { inherit elem("i", attr, children) } - new ([] children) = i(attr.empty, children) - - type kbd = - inherit elem - new (attr, [] children) = { inherit elem("kbd", attr, children) } - new ([] children) = kbd(attr.empty, children) - - type mark = - inherit elem - new (attr, [] children) = { inherit elem("mark", attr, children) } - new ([] children) = mark(attr.empty, children) - - type q = - inherit elem - new (attr, [] children) = { inherit elem("q", attr, children) } - new ([] children) = q(attr.empty, children) - - type rp = - inherit elem - new (attr, [] children) = { inherit elem("rp", attr, children) } - new ([] children) = rp(attr.empty, children) - - type rt = - inherit elem - new (attr, [] children) = { inherit elem("rt", attr, children) } - new ([] children) = rt(attr.empty, children) - - type ruby = - inherit elem - new (attr, [] children) = { inherit elem("ruby", attr, children) } - new ([] children) = ruby(attr.empty, children) - - type s = - inherit elem - new (attr, [] children) = { inherit elem("s", attr, children) } - new ([] children) = s(attr.empty, children) - - type samp = - inherit elem - new (attr, [] children) = { inherit elem("samp", attr, children) } - new ([] children) = samp(attr.empty, children) - - type small = - inherit elem - new (attr, [] children) = { inherit elem("small", attr, children) } - new ([] children) = small(attr.empty, children) - - type span = - inherit elem - new (attr, [] children) = { inherit elem("span", attr, children) } - new ([] children) = span(attr.empty, children) - - type strong = - inherit elem - new (attr, [] children) = { inherit elem("strong", attr, children) } - new ([] children) = strong(attr.empty, children) - - type sub = - inherit elem - new (attr, [] children) = { inherit elem("sub", attr, children) } - new ([] children) = sub(attr.empty, children) - - type sup = - inherit elem - new (attr, [] children) = { inherit elem("sup", attr, children) } - new ([] children) = sup(attr.empty, children) - - type time = - inherit elem - new (attr, [] children) = { inherit elem("time", attr, children) } - new ([] children) = time(attr.empty, children) - - type u = - inherit elem - new (attr, [] children) = { inherit elem("u", attr, children) } - new ([] children) = u(attr.empty, children) - - type var = - inherit elem - new (attr, [] children) = { inherit elem("var", attr, children) } - new ([] children) = var(attr.empty, children) - - type area = - inherit elem - new (attr, [] children) = { inherit elem("area", attr, children) } - new ([] children) = area(attr.empty, children) - - type audio = - inherit elem - new (attr, [] children) = { inherit elem("audio", attr, children) } - new ([] children) = audio(attr.empty, children) - - type map = - inherit elem - new (attr, [] children) = { inherit elem("map", attr, children) } - new ([] children) = map(attr.empty, children) - - type video = - inherit elem - new (attr, [] children) = { inherit elem("video", attr, children) } - new ([] children) = video(attr.empty, children) - - type iframe = - inherit elem - new (attr, [] children) = { inherit elem("iframe", attr, children) } - new ([] children) = iframe(attr.empty, children) - - type object = - inherit elem - new (attr, [] children) = { inherit elem("object", attr, children) } - new ([] children) = object(attr.empty, children) - - type picture = - inherit elem - new (attr, [] children) = { inherit elem("picture", attr, children) } - new ([] children) = picture(attr.empty, children) - - type portal = - inherit elem - new (attr, [] children) = { inherit elem("portal", attr, children) } - new ([] children) = portal(attr.empty, children) - - type canvas = - inherit elem - new (attr, [] children) = { inherit elem("canvas", attr, children) } - new ([] children) = canvas(attr.empty, children) - - type noscript = - inherit elem - new (attr, [] children) = { inherit elem("noscript", attr, children) } - new ([] children) = noscript(attr.empty, children) - - type script = - inherit elem - new (attr, [] children) = { inherit elem("script", attr, children) } - new ([] children) = script(attr.empty, children) - - type del = - inherit elem - new (attr, [] children) = { inherit elem("del", attr, children) } - new ([] children) = del(attr.empty, children) - - type ins = - inherit elem - new (attr, [] children) = { inherit elem("ins", attr, children) } - new ([] children) = ins(attr.empty, children) - - type caption = - inherit elem - new (attr, [] children) = { inherit elem("caption", attr, children) } - new ([] children) = caption(attr.empty, children) - - type colgroup = - inherit elem - new (attr, [] children) = { inherit elem("colgroup", attr, children) } - new ([] children) = colgroup(attr.empty, children) - - type table = - inherit elem - new (attr, [] children) = { inherit elem("table", attr, children) } - new ([] children) = table(attr.empty, children) - - type tbody = - inherit elem - new (attr, [] children) = { inherit elem("tbody", attr, children) } - new ([] children) = tbody(attr.empty, children) - - type td = - inherit elem - new (attr, [] children) = { inherit elem("td", attr, children) } - new ([] children) = td(attr.empty, children) - - type tfoot = - inherit elem - new (attr, [] children) = { inherit elem("tfoot", attr, children) } - new ([] children) = tfoot(attr.empty, children) - - type th = - inherit elem - new (attr, [] children) = { inherit elem("th", attr, children) } - new ([] children) = th(attr.empty, children) - - type thead = - inherit elem - new (attr, [] children) = { inherit elem("thead", attr, children) } - new ([] children) = thead(attr.empty, children) - - type tr = - inherit elem - new (attr, [] children) = { inherit elem("tr", attr, children) } - new ([] children) = tr(attr.empty, children) - - type button = - inherit elem - new (attr, [] children) = { inherit elem("button", attr, children) } - new ([] children) = button(attr.empty, children) - - type datalist = - inherit elem - new (attr, [] children) = { inherit elem("datalist", attr, children) } - new ([] children) = datalist(attr.empty, children) - - type fieldset = - inherit elem - new (attr, [] children) = { inherit elem("fieldset", attr, children) } - new ([] children) = fieldset(attr.empty, children) - - type form = - inherit elem - new (attr, [] children) = { inherit elem("form", attr, children) } - new ([] children) = form(attr.empty, children) - - type label = - inherit elem - new (attr, [] children) = { inherit elem("label", attr, children) } - new ([] children) = label(attr.empty, children) - - type legend = - inherit elem - new (attr, [] children) = { inherit elem("legend", attr, children) } - new ([] children) = legend(attr.empty, children) - - type meter = - inherit elem - new (attr, [] children) = { inherit elem("meter", attr, children) } - new ([] children) = meter(attr.empty, children) - - type optgroup = - inherit elem - new (attr, [] children) = { inherit elem("optgroup", attr, children) } - new ([] children) = optgroup(attr.empty, children) - - type option = - inherit elem - new (attr, [] children) = { inherit elem("option", attr, children) } - new ([] children) = option(attr.empty, children) - - type output = - inherit elem - new (attr, [] children) = { inherit elem("output", attr, children) } - new ([] children) = output(attr.empty, children) - - type progress = - inherit elem - new (attr, [] children) = { inherit elem("progress", attr, children) } - new ([] children) = progress(attr.empty, children) - - type select = - inherit elem - new (attr, [] children) = { inherit elem("select", attr, children) } - new ([] children) = select(attr.empty, children) - - type textarea = - inherit elem - new (attr, [] children) = { inherit elem("textarea", attr, children) } - new ([] children) = textarea(attr.empty, children) - - type details = - inherit elem - new (attr, [] children) = { inherit elem("details", attr, children) } - new ([] children) = details(attr.empty, children) - - type dialog = - inherit elem - new (attr, [] children) = { inherit elem("dialog", attr, children) } - new ([] children) = dialog(attr.empty, children) - - type summary = - inherit elem - new (attr, [] children) = { inherit elem("summary", attr, children) } - new ([] children) = summary(attr.empty, children) - - type slot = - inherit elem - new (attr, [] children) = { inherit elem("slot", attr, children) } - new ([] children) = slot(attr.empty, children) - - type template = - inherit elem - new (attr, [] children) = { inherit elem("template", attr, children) } - new ([] children) = template(attr.empty, children) - - type math = - inherit elem - new (attr, [] children) = { inherit elem("math", attr, children) } - new ([] children) = math(attr.empty, children) - - type svg = - inherit elem - new (attr, [] children) = { inherit elem("svg", attr, children) } - new ([] children) = svg(attr.empty, children) - - -[] -module HtmlAttr = - let _async = _a("async") - let _autofocus = _a("autofocus") - let _autoplay = _a("autoplay") - let _checked = _a("checked") - let _controls = _a("controls") - let _default = _a("default") - let _defer = _a("defer") - let _disabled = _a("disabled") - let _formnovalidate = _a("formnovalidate") - let _hidden = _a("hidden") - let _ismap = _a("ismap") - let _loop = _a("loop") - let _multiple = _a("multiple") - let _muted = _a("muted") - let _novalidate = _a("novalidate") - let _readonly = _a("readonly") - let _required = _a("required") - let _reversed = _a("reversed") - let _selected = _a("selected") - - let _accept value = _a("accept", value) - let _acceptCharset value = _a("accept-charset", value) - let _accesskey value = _a("accesskey", value) - let _action value = _a("action", value) - let _align value = _a("align", value) - let _allow value = _a("allow", value) - let _alt value = _a("alt", value) - let _autocapitalize value = _a("autocapitalize", value) - let _autocomplete value = _a("autocomplete", value) - let _background value = _a("background", value) - let _bgcolor value = _a("bgcolor", value) - let _border value = _a("border", value) - let _buffered value = _a("buffered", value) - let _capture value = _a("capture", value) - let _challenge value = _a("challenge", value) - let _charset value = _a("charset", value) - let _cite value = _a("cite", value) - let _class value = _a("class", value) - let _code value = _a("code", value) - let _codebase value = _a("codebase", value) - let _color value = _a("color", value) - let _cols value = _a("cols", value) - let _colspan value = _a("colspan", value) - let _content value = _a("content", value) - let _contenteditable value = _a("contenteditable", value) - let _contextmenu value = _a("contextmenu", value) - let _coords value = _a("coords", value) - let _crossorigin value = _a("crossorigin", value) - let _csp value = _a("csp", value) - let _data value = _a("data", value) - let _datetime value = _a("datetime", value) - let _decoding value = _a("decoding", value) - let _dir value = _a("dir", value) - let _dirname value = _a("dirname", value) - let _download value = _a("download", value) - let _draggable value = _a("draggable", value) - let _enctype value = _a("enctype", value) - let _enterkeyhint value = _a("enterkeyhint", value) - let _for value = _a("for", value) - let _form value = _a("form", value) - let _formaction value = _a("formaction", value) - let _formenctype value = _a("formenctype", value) - let _formmethod value = _a("formmethod", value) - let _formtarget value = _a("formtarget", value) - let _headers value = _a("headers", value) - let _height value = _a("height", value) - let _high value = _a("high", value) - let _href value = _a("href", value) - let _hreflang value = _a("hreflang", value) - let _httpEquiv value = _a("http-equiv", value) - let _icon value = _a("icon", value) - let _id value = _a("id", value) - let _importance value = _a("importance", value) - let _integrity value = _a("integrity", value) - let _inputmode value = _a("inputmode", value) - let _itemprop value = _a("itemprop", value) - let _keytype value = _a("keytype", value) - let _kind value = _a("kind", value) - let _label value = _a("label", value) - let _lang value = _a("lang", value) - let _loading value = _a("loading", value) - let _list value = _a("list", value) - let _low value = _a("low", value) - let _max value = _a("max", value) - let _maxlength value = _a("maxlength", value) - let _minlength value = _a("minlength", value) - let _media value = _a("media", value) - let _method value = _a("method", value) - let _min value = _a("min", value) - let _name value = _a("name", value) - let _open value = _a("open", value) - let _optimum value = _a("optimum", value) - let _pattern value = _a("pattern", value) - let _ping value = _a("ping", value) - let _placeholder value = _a("placeholder", value) - let _poster value = _a("poster", value) - let _preload value = _a("preload", value) - let _radiogroup value = _a("radiogroup", value) - let _referrerpolicy value = _a("referrerpolicy", value) - let _rel value = _a("rel", value) - let _role value = _a("role", value) - let _rows value = _a("rows", value) - let _rowspan value = _a("rowspan", value) - let _sandbox value = _a("sandbox", value) - let _scope value = _a("scope", value) - let _shape value = _a("shape", value) - let _size value = _a("size", value) - let _sizes value = _a("sizes", value) - let _slot value = _a("slot", value) - let _span value = _a("span", value) - let _spellcheck value = _a("spellcheck", value) - let _src value = _a("src", value) - let _srcdoc value = _a("srcdoc", value) - let _srclang value = _a("srclang", value) - let _srcset value = _a("srcset", value) - let _start value = _a("start", value) - let _step value = _a("step", value) - let _style value = _a("style", value) - let _tabindex value = _a("tabindex", value) - let _target value = _a("target", value) - let _title value = _a("title", value) - let _translate value = _a("translate", value) - let _type value = _a("type", value) - let _usemap value = _a("usemap", value) - let _value value = _a("value", value) - let _width value = _a("width", value) - let _wrap value = _a("wrap", value) \ No newline at end of file +namespace Falco.Markup + +module Html = + let _html = Elem.html + let _base = Elem.base' + let _head = Elem.head + let _link = Elem.link + let _meta = Elem.meta + let _style = Elem.style + let _title = Elem.title + let _body = Elem.body + let _address = Elem.address + let _article = Elem.article + let _aside = Elem.aside + let _footer = Elem.footer + let _header = Elem.header + let _h1 = Elem.h1 + let _h2 = Elem.h2 + let _h3 = Elem.h3 + let _h4 = Elem.h4 + let _h5 = Elem.h5 + let _h6 = Elem.h6 + let _main = Elem.main + let _nav = Elem.nav + let _section = Elem.section + let _blockquote = Elem.blockquote + let _dd = Elem.dd + let _div = Elem.div + let _dl = Elem.dl + let _dt = Elem.dt + let _figcaption = Elem.figcaption + let _figure = Elem.figure + let _hr = Elem.hr + let _li = Elem.li + let _menu = Elem.menu + let _ol = Elem.ol + let _p = Elem.p + let _pre = Elem.pre + let _ul = Elem.ul + let _a = Elem.a + let _abbr = Elem.abbr + let _b = Elem.b + let _bdi = Elem.bdi + let _bdo = Elem.bdo + let _br = Elem.br + let _cite = Elem.cite + let _code = Elem.code + let _data = Elem.data + let _dfn = Elem.dfn + let _em = Elem.em + let _i = Elem.i + let _kbd = Elem.kbd + let _mark = Elem.mark + let _q = Elem.q + let _rp = Elem.rp + let _rt = Elem.rt + let _ruby = Elem.ruby + let _s = Elem.s + let _samp = Elem.samp + let _small = Elem.small + let _span = Elem.span + let _strong = Elem.strong + let _sub = Elem.sub + let _sup = Elem.sup + let _time = Elem.time + let _u = Elem.u + let _var = Elem.var + let _wbr = Elem.wbr + let _area = Elem.area + let _audio = Elem.audio + let _img = Elem.img + let _map = Elem.map + let _track = Elem.track + let _video = Elem.video + let _embed = Elem.embed + let _iframe = Elem.iframe + let _object = Elem.object + let _picture = Elem.picture + let _portal = Elem.portal + let _source = Elem.source + let _canvas = Elem.canvas + let _noscript = Elem.noscript + let _script = Elem.script + let _del = Elem.del + let _ins = Elem.ins + let _caption = Elem.caption + let _col = Elem.col + let _colgroup = Elem.colgroup + let _table = Elem.table + let _tbody = Elem.tbody + let _td = Elem.td + let _tfoot = Elem.tfoot + let _th = Elem.th + let _thead = Elem.thead + let _tr = Elem.tr + let _button = Elem.button + let _datalist = Elem.datalist + let _fieldset = Elem.fieldset + let _form = Elem.form + let _input = Elem.input + let _label = Elem.label + let _legend = Elem.legend + let _meter = Elem.meter + let _optgroup = Elem.optgroup + let _option = Elem.option + let _output = Elem.output + let _progress = Elem.progress + let _select = Elem.select + let _textarea = Elem.textarea + let _details = Elem.details + let _dialog = Elem.dialog + let _summary = Elem.summary + let _slot = Elem.slot + let _template = Elem.template + let _math = Elem.math + let _svg = Elem.svg + + let __accept = Attr.accept + let __acceptCharset = Attr.acceptCharset + let __accesskey = Attr.accesskey + let __action = Attr.action + let __align = Attr.align + let __allow = Attr.allow + let __alt = Attr.alt + let __async = Attr.async + let __autocapitalize = Attr.autocapitalize + let __autocomplete = Attr.autocomplete + let __autofocus = Attr.autofocus + let __autoplay = Attr.autoplay + let __background = Attr.background + let __bgcolor = Attr.bgcolor + let __border = Attr.border + let __buffered = Attr.buffered + let __capture = Attr.capture + let __challenge = Attr.challenge + let __charset = Attr.charset + let __checked = Attr.checked' + let __cite = Attr.cite + let __class = Attr.class' + let __code = Attr.code + let __codebase = Attr.codebase + let __color = Attr.color + let __cols = Attr.cols + let __colspan = Attr.colspan + let __content = Attr.content + let __contenteditable = Attr.contenteditable + let __contextmenu = Attr.contextmenu + let __controls = Attr.controls + let __coords = Attr.coords + let __crossorigin = Attr.crossorigin + let __csp = Attr.csp + let __data = Attr.data + let __dataAttr name = Attr.dataAttr name + let __datetime = Attr.datetime + let __decoding = Attr.decoding + let __default = Attr.default' + let __defer = Attr.defer + let __dir = Attr.dir + let __dirname = Attr.dirname + let __disabled = Attr.disabled + let __download = Attr.download + let __draggable = Attr.draggable + let __enctype = Attr.enctype + let __enterkeyhint = Attr.enterkeyhint + let __for = Attr.for' + let __form = Attr.form + let __formaction = Attr.formaction + let __formenctype = Attr.formenctype + let __formmethod = Attr.formmethod + let __formnovalidate = Attr.formnovalidate + let __formtarget = Attr.formtarget + let __headers = Attr.headers + let __height = Attr.height + let __hidden = Attr.hidden + let __high = Attr.high + let __href = Attr.href + let __hreflang = Attr.hreflang + let __httpEquiv = Attr.httpEquiv + let __icon = Attr.icon + let __id = Attr.id + let __importance = Attr.importance + let __integrity = Attr.integrity + let __inputmode = Attr.inputmode + let __ismap = Attr.ismap + let __itemprop = Attr.itemprop + let __keytype = Attr.keytype + let __kind = Attr.kind + let __label = Attr.label + let __lang = Attr.lang + let __loading = Attr.loading + let __list = Attr.list + let __loop = Attr.loop + let __low = Attr.low + let __max = Attr.max + let __maxlength = Attr.maxlength + let __minlength = Attr.minlength + let __media = Attr.media + let __method = Attr.method + let __min = Attr.min + let __multiple = Attr.multiple + let __muted = Attr.muted + let __name = Attr.name + let __novalidate = Attr.novalidate + let __open = Attr.open' + let __optimum = Attr.optimum + let __pattern = Attr.pattern + let __ping = Attr.ping + let __placeholder = Attr.placeholder + let __poster = Attr.poster + let __preload = Attr.preload + let __radiogroup = Attr.radiogroup + let __readonly = Attr.readonly + let __referrerpolicy = Attr.referrerpolicy + let __rel = Attr.rel + let __required = Attr.required + let __reversed = Attr.reversed + let __role = Attr.role + let __rows = Attr.rows + let __rowspan = Attr.rowspan + let __sandbox = Attr.sandbox + let __scope = Attr.scope + let __selected = Attr.selected + let __shape = Attr.shape + let __size = Attr.size + let __sizes = Attr.sizes + let __slot = Attr.slot + let __span = Attr.span + let __spellcheck = Attr.spellcheck + let __src = Attr.src + let __srcdoc = Attr.srcdoc + let __srclang = Attr.srclang + let __srcset = Attr.srcset + let __start = Attr.start + let __step = Attr.step + let __style = Attr.style + let __tabindex = Attr.tabindex + let __target = Attr.target + let __title = Attr.title + let __translate = Attr.translate + let __type = Attr.type' + let __usemap = Attr.usemap + let __value = Attr.value + let __width = Attr.width + let __wrap = Attr.wrap + let __onabort = Attr.onabort + let __onafterprint = Attr.onafterprint + let __onanimationend = Attr.onanimationend + let __onanimationiteration = Attr.onanimationiteration + let __onanimationstart = Attr.onanimationstart + let __onbeforeprint = Attr.onbeforeprint + let __onbeforeunload = Attr.onbeforeunload + let __onblur = Attr.onblur + let __oncanplay = Attr.oncanplay + let __oncanplaythrough = Attr.oncanplaythrough + let __onchange = Attr.onchange + let __onclick = Attr.onclick + let __oncontextmenu = Attr.oncontextmenu + let __oncopy = Attr.oncopy + let __oncut = Attr.oncut + let __ondblclick = Attr.ondblclick + let __ondrag = Attr.ondrag + let __ondragend = Attr.ondragend + let __ondragenter = Attr.ondragenter + let __ondragleave = Attr.ondragleave + let __ondragover = Attr.ondragover + let __ondragstart = Attr.ondragstart + let __ondrop = Attr.ondrop + let __ondurationchange = Attr.ondurationchange + let __onemptied = Attr.onemptied + let __onended = Attr.onended + let __onerror = Attr.onerror + let __onfocus = Attr.onfocus + let __onformchange = Attr.onformchange + let __onforminput = Attr.onforminput + let __onfocusin = Attr.onfocusin + let __onfocusout = Attr.onfocusout + let __onfullscreenchange = Attr.onfullscreenchange + let __onfullscreenerror = Attr.onfullscreenerror + let __onhashchange = Attr.onhashchange + let __oninput = Attr.oninput + let __oninvalid = Attr.oninvalid + let __onkeydown = Attr.onkeydown + let __onkeypress = Attr.onkeypress + let __onkeyup = Attr.onkeyup + let __onload = Attr.onload + let __onloadeddata = Attr.onloadeddata + let __onloadedmetadata = Attr.onloadedmetadata + let __onloadstart = Attr.onloadstart + let __onmessage = Attr.onmessage + let __onmousedown = Attr.onmousedown + let __onmouseenter = Attr.onmouseenter + let __onmouseleave = Attr.onmouseleave + let __onmousemove = Attr.onmousemove + let __onmouseover = Attr.onmouseover + let __onmouseout = Attr.onmouseout + let __onmouseup = Attr.onmouseup + let __onmousewheel = Attr.onmousewheel + let __onoffline = Attr.onoffline + let __ononline = Attr.ononline + let __onopen = Attr.onopen + let __onpagehide = Attr.onpagehide + let __onpageshow = Attr.onpageshow + let __onpaste = Attr.onpaste + let __onpause = Attr.onpause + let __onplay = Attr.onplay + let __onplaying = Attr.onplaying + let __onpopstate = Attr.onpopstate + let __onprogress = Attr.onprogress + let __onratechange = Attr.onratechange + let __onresize = Attr.onresize + let __onreset = Attr.onreset + let __onscroll = Attr.onscroll + let __onsearch = Attr.onsearch + let __onseeked = Attr.onseeked + let __onseeking = Attr.onseeking + let __onselect = Attr.onselect + let __onshow = Attr.onshow + let __onstalled = Attr.onstalled + let __onstorage = Attr.onstorage + let __onsubmit = Attr.onsubmit + let __onsuspend = Attr.onsuspend + let __ontimeupdate = Attr.ontimeupdate + let __ontoggle = Attr.ontoggle + let __ontouchcancel = Attr.ontouchcancel + let __ontouchend = Attr.ontouchend + let __ontouchmove = Attr.ontouchmove + let __ontouchstart = Attr.ontouchstart + let __ontransitionend = Attr.ontransitionend + let __onunload = Attr.onunload + let __onvolumechange = Attr.onvolumechange + let __onwaiting = Attr.onwaiting + let __onwheel = Attr.onwheel diff --git a/src/Falco.Markup/Types.fs b/src/Falco.Markup/Types.fs deleted file mode 100644 index ea7eaa0..0000000 --- a/src/Falco.Markup/Types.fs +++ /dev/null @@ -1,505 +0,0 @@ - type html = - inherit elem - new (attr, [] children) = { inherit elem("html", attr, children) } - new ([] children) = html(attr.empty, children) - - type head = - inherit elem - new (attr, [] children) = { inherit elem("head", attr, children) } - new ([] children) = head(attr.empty, children) - - type style = - inherit elem - new (attr, [] children) = { inherit elem("style", attr, children) } - new ([] children) = style(attr.empty, children) - - type title = - inherit elem - new (attr, [] children) = { inherit elem("title", attr, children) } - new ([] children) = title(attr.empty, children) - - type body = - inherit elem - new (attr, [] children) = { inherit elem("body", attr, children) } - new ([] children) = body(attr.empty, children) - - type address = - inherit elem - new (attr, [] children) = { inherit elem("address", attr, children) } - new ([] children) = address(attr.empty, children) - - type article = - inherit elem - new (attr, [] children) = { inherit elem("article", attr, children) } - new ([] children) = article(attr.empty, children) - - type aside = - inherit elem - new (attr, [] children) = { inherit elem("aside", attr, children) } - new ([] children) = aside(attr.empty, children) - - type footer = - inherit elem - new (attr, [] children) = { inherit elem("footer", attr, children) } - new ([] children) = footer(attr.empty, children) - - type header = - inherit elem - new (attr, [] children) = { inherit elem("header", attr, children) } - new ([] children) = header(attr.empty, children) - - type h1 = - inherit elem - new (attr, [] children) = { inherit elem("h1", attr, children) } - new ([] children) = h1(attr.empty, children) - - type h2 = - inherit elem - new (attr, [] children) = { inherit elem("h2", attr, children) } - new ([] children) = h2(attr.empty, children) - - type h3 = - inherit elem - new (attr, [] children) = { inherit elem("h3", attr, children) } - new ([] children) = h3(attr.empty, children) - - type h4 = - inherit elem - new (attr, [] children) = { inherit elem("h4", attr, children) } - new ([] children) = h4(attr.empty, children) - - type h5 = - inherit elem - new (attr, [] children) = { inherit elem("h5", attr, children) } - new ([] children) = h5(attr.empty, children) - - type h6 = - inherit elem - new (attr, [] children) = { inherit elem("h6", attr, children) } - new ([] children) = h6(attr.empty, children) - - type main = - inherit elem - new (attr, [] children) = { inherit elem("main", attr, children) } - new ([] children) = main(attr.empty, children) - - type nav = - inherit elem - new (attr, [] children) = { inherit elem("nav", attr, children) } - new ([] children) = nav(attr.empty, children) - - type section = - inherit elem - new (attr, [] children) = { inherit elem("section", attr, children) } - new ([] children) = section(attr.empty, children) - - type blockquote = - inherit elem - new (attr, [] children) = { inherit elem("blockquote", attr, children) } - new ([] children) = blockquote(attr.empty, children) - - type dd = - inherit elem - new (attr, [] children) = { inherit elem("dd", attr, children) } - new ([] children) = dd(attr.empty, children) - - type div = - inherit elem - new (attr, [] children) = { inherit elem("div", attr, children) } - new ([] children) = div(attr.empty, children) - - type dl = - inherit elem - new (attr, [] children) = { inherit elem("dl", attr, children) } - new ([] children) = dl(attr.empty, children) - - type dt = - inherit elem - new (attr, [] children) = { inherit elem("dt", attr, children) } - new ([] children) = dt(attr.empty, children) - - type figcaption = - inherit elem - new (attr, [] children) = { inherit elem("figcaption", attr, children) } - new ([] children) = figcaption(attr.empty, children) - - type figure = - inherit elem - new (attr, [] children) = { inherit elem("figure", attr, children) } - new ([] children) = figure(attr.empty, children) - - type li = - inherit elem - new (attr, [] children) = { inherit elem("li", attr, children) } - new ([] children) = li(attr.empty, children) - - type menu = - inherit elem - new (attr, [] children) = { inherit elem("menu", attr, children) } - new ([] children) = menu(attr.empty, children) - - type ol = - inherit elem - new (attr, [] children) = { inherit elem("ol", attr, children) } - new ([] children) = ol(attr.empty, children) - - type p = - inherit elem - new (attr, [] children) = { inherit elem("p", attr, children) } - new ([] children) = p(attr.empty, children) - - type pre = - inherit elem - new (attr, [] children) = { inherit elem("pre", attr, children) } - new ([] children) = pre(attr.empty, children) - - type ul = - inherit elem - new (attr, [] children) = { inherit elem("ul", attr, children) } - new ([] children) = ul(attr.empty, children) - - type a = - inherit elem - new (attr, [] children) = { inherit elem("a", attr, children) } - new ([] children) = a(attr.empty, children) - - type abbr = - inherit elem - new (attr, [] children) = { inherit elem("abbr", attr, children) } - new ([] children) = abbr(attr.empty, children) - - type b = - inherit elem - new (attr, [] children) = { inherit elem("b", attr, children) } - new ([] children) = b(attr.empty, children) - - type bdi = - inherit elem - new (attr, [] children) = { inherit elem("bdi", attr, children) } - new ([] children) = bdi(attr.empty, children) - - type bdo = - inherit elem - new (attr, [] children) = { inherit elem("bdo", attr, children) } - new ([] children) = bdo(attr.empty, children) - - type cite = - inherit elem - new (attr, [] children) = { inherit elem("cite", attr, children) } - new ([] children) = cite(attr.empty, children) - - type code = - inherit elem - new (attr, [] children) = { inherit elem("code", attr, children) } - new ([] children) = code(attr.empty, children) - - type data = - inherit elem - new (attr, [] children) = { inherit elem("data", attr, children) } - new ([] children) = data(attr.empty, children) - - type dfn = - inherit elem - new (attr, [] children) = { inherit elem("dfn", attr, children) } - new ([] children) = dfn(attr.empty, children) - - type em = - inherit elem - new (attr, [] children) = { inherit elem("em", attr, children) } - new ([] children) = em(attr.empty, children) - - type i = - inherit elem - new (attr, [] children) = { inherit elem("i", attr, children) } - new ([] children) = i(attr.empty, children) - - type kbd = - inherit elem - new (attr, [] children) = { inherit elem("kbd", attr, children) } - new ([] children) = kbd(attr.empty, children) - - type mark = - inherit elem - new (attr, [] children) = { inherit elem("mark", attr, children) } - new ([] children) = mark(attr.empty, children) - - type q = - inherit elem - new (attr, [] children) = { inherit elem("q", attr, children) } - new ([] children) = q(attr.empty, children) - - type rp = - inherit elem - new (attr, [] children) = { inherit elem("rp", attr, children) } - new ([] children) = rp(attr.empty, children) - - type rt = - inherit elem - new (attr, [] children) = { inherit elem("rt", attr, children) } - new ([] children) = rt(attr.empty, children) - - type ruby = - inherit elem - new (attr, [] children) = { inherit elem("ruby", attr, children) } - new ([] children) = ruby(attr.empty, children) - - type s = - inherit elem - new (attr, [] children) = { inherit elem("s", attr, children) } - new ([] children) = s(attr.empty, children) - - type samp = - inherit elem - new (attr, [] children) = { inherit elem("samp", attr, children) } - new ([] children) = samp(attr.empty, children) - - type small = - inherit elem - new (attr, [] children) = { inherit elem("small", attr, children) } - new ([] children) = small(attr.empty, children) - - type span = - inherit elem - new (attr, [] children) = { inherit elem("span", attr, children) } - new ([] children) = span(attr.empty, children) - - type strong = - inherit elem - new (attr, [] children) = { inherit elem("strong", attr, children) } - new ([] children) = strong(attr.empty, children) - - type sub = - inherit elem - new (attr, [] children) = { inherit elem("sub", attr, children) } - new ([] children) = sub(attr.empty, children) - - type sup = - inherit elem - new (attr, [] children) = { inherit elem("sup", attr, children) } - new ([] children) = sup(attr.empty, children) - - type time = - inherit elem - new (attr, [] children) = { inherit elem("time", attr, children) } - new ([] children) = time(attr.empty, children) - - type u = - inherit elem - new (attr, [] children) = { inherit elem("u", attr, children) } - new ([] children) = u(attr.empty, children) - - type var = - inherit elem - new (attr, [] children) = { inherit elem("var", attr, children) } - new ([] children) = var(attr.empty, children) - - type area = - inherit elem - new (attr, [] children) = { inherit elem("area", attr, children) } - new ([] children) = area(attr.empty, children) - - type audio = - inherit elem - new (attr, [] children) = { inherit elem("audio", attr, children) } - new ([] children) = audio(attr.empty, children) - - type map = - inherit elem - new (attr, [] children) = { inherit elem("map", attr, children) } - new ([] children) = map(attr.empty, children) - - type video = - inherit elem - new (attr, [] children) = { inherit elem("video", attr, children) } - new ([] children) = video(attr.empty, children) - - type iframe = - inherit elem - new (attr, [] children) = { inherit elem("iframe", attr, children) } - new ([] children) = iframe(attr.empty, children) - - type object = - inherit elem - new (attr, [] children) = { inherit elem("object", attr, children) } - new ([] children) = object(attr.empty, children) - - type picture = - inherit elem - new (attr, [] children) = { inherit elem("picture", attr, children) } - new ([] children) = picture(attr.empty, children) - - type portal = - inherit elem - new (attr, [] children) = { inherit elem("portal", attr, children) } - new ([] children) = portal(attr.empty, children) - - type canvas = - inherit elem - new (attr, [] children) = { inherit elem("canvas", attr, children) } - new ([] children) = canvas(attr.empty, children) - - type noscript = - inherit elem - new (attr, [] children) = { inherit elem("noscript", attr, children) } - new ([] children) = noscript(attr.empty, children) - - type script = - inherit elem - new (attr, [] children) = { inherit elem("script", attr, children) } - new ([] children) = script(attr.empty, children) - - type del = - inherit elem - new (attr, [] children) = { inherit elem("del", attr, children) } - new ([] children) = del(attr.empty, children) - - type ins = - inherit elem - new (attr, [] children) = { inherit elem("ins", attr, children) } - new ([] children) = ins(attr.empty, children) - - type caption = - inherit elem - new (attr, [] children) = { inherit elem("caption", attr, children) } - new ([] children) = caption(attr.empty, children) - - type colgroup = - inherit elem - new (attr, [] children) = { inherit elem("colgroup", attr, children) } - new ([] children) = colgroup(attr.empty, children) - - type table = - inherit elem - new (attr, [] children) = { inherit elem("table", attr, children) } - new ([] children) = table(attr.empty, children) - - type tbody = - inherit elem - new (attr, [] children) = { inherit elem("tbody", attr, children) } - new ([] children) = tbody(attr.empty, children) - - type td = - inherit elem - new (attr, [] children) = { inherit elem("td", attr, children) } - new ([] children) = td(attr.empty, children) - - type tfoot = - inherit elem - new (attr, [] children) = { inherit elem("tfoot", attr, children) } - new ([] children) = tfoot(attr.empty, children) - - type th = - inherit elem - new (attr, [] children) = { inherit elem("th", attr, children) } - new ([] children) = th(attr.empty, children) - - type thead = - inherit elem - new (attr, [] children) = { inherit elem("thead", attr, children) } - new ([] children) = thead(attr.empty, children) - - type tr = - inherit elem - new (attr, [] children) = { inherit elem("tr", attr, children) } - new ([] children) = tr(attr.empty, children) - - type button = - inherit elem - new (attr, [] children) = { inherit elem("button", attr, children) } - new ([] children) = button(attr.empty, children) - - type datalist = - inherit elem - new (attr, [] children) = { inherit elem("datalist", attr, children) } - new ([] children) = datalist(attr.empty, children) - - type fieldset = - inherit elem - new (attr, [] children) = { inherit elem("fieldset", attr, children) } - new ([] children) = fieldset(attr.empty, children) - - type form = - inherit elem - new (attr, [] children) = { inherit elem("form", attr, children) } - new ([] children) = form(attr.empty, children) - - type label = - inherit elem - new (attr, [] children) = { inherit elem("label", attr, children) } - new ([] children) = label(attr.empty, children) - - type legend = - inherit elem - new (attr, [] children) = { inherit elem("legend", attr, children) } - new ([] children) = legend(attr.empty, children) - - type meter = - inherit elem - new (attr, [] children) = { inherit elem("meter", attr, children) } - new ([] children) = meter(attr.empty, children) - - type optgroup = - inherit elem - new (attr, [] children) = { inherit elem("optgroup", attr, children) } - new ([] children) = optgroup(attr.empty, children) - - type option = - inherit elem - new (attr, [] children) = { inherit elem("option", attr, children) } - new ([] children) = option(attr.empty, children) - - type output = - inherit elem - new (attr, [] children) = { inherit elem("output", attr, children) } - new ([] children) = output(attr.empty, children) - - type progress = - inherit elem - new (attr, [] children) = { inherit elem("progress", attr, children) } - new ([] children) = progress(attr.empty, children) - - type select = - inherit elem - new (attr, [] children) = { inherit elem("select", attr, children) } - new ([] children) = select(attr.empty, children) - - type textarea = - inherit elem - new (attr, [] children) = { inherit elem("textarea", attr, children) } - new ([] children) = textarea(attr.empty, children) - - type details = - inherit elem - new (attr, [] children) = { inherit elem("details", attr, children) } - new ([] children) = details(attr.empty, children) - - type dialog = - inherit elem - new (attr, [] children) = { inherit elem("dialog", attr, children) } - new ([] children) = dialog(attr.empty, children) - - type summary = - inherit elem - new (attr, [] children) = { inherit elem("summary", attr, children) } - new ([] children) = summary(attr.empty, children) - - type slot = - inherit elem - new (attr, [] children) = { inherit elem("slot", attr, children) } - new ([] children) = slot(attr.empty, children) - - type template = - inherit elem - new (attr, [] children) = { inherit elem("template", attr, children) } - new ([] children) = template(attr.empty, children) - - type math = - inherit elem - new (attr, [] children) = { inherit elem("math", attr, children) } - new ([] children) = math(attr.empty, children) - - type svg = - inherit elem - new (attr, [] children) = { inherit elem("svg", attr, children) } - new ([] children) = svg(attr.empty, children) - diff --git a/test/Falco.Markup.Tests/Tests.fs b/test/Falco.Markup.Tests/Tests.fs index 30a1b00..704fc82 100644 --- a/test/Falco.Markup.Tests/Tests.fs +++ b/test/Falco.Markup.Tests/Tests.fs @@ -2,7 +2,6 @@ open System open Falco.Markup -open Falco.Markup.Html open Falco.Markup.Svg open FsUnit.Xunit open Xunit @@ -353,45 +352,3 @@ module TestHelpersTests = nameValues |> should equal "first_name=first_name_value&long_text=long_text_value&radio=value1&checkbox=value1&checkbox=value2&select=option2&multiselect=option2&multiselect=option3" - - [] - let ``Kitchen sink 2`` () = - form( - input(_name "first_name", _value "first_name_value"), - textarea(attr(_name "long_text"), text "long_text_value"), - div([| for i in [0..10] do input(_type "radio", _name "radio", _value "value1" ) |]) - ) - // [] [ - // Elem.input [ Attr.name "first_name"; Attr.value "first_name_value" ] - - // Elem.textarea [ Attr.name "long_text" ] [ Text.raw "long_text_value" ] - - // Elem.div [] [ - // Elem.input [ Attr.type' "radio"; Attr.name "radio"; Attr.value "value1"; Attr.checked' ] - // Elem.input [ Attr.type' "radio"; Attr.name "radio"; Attr.value "value2" ] - // Elem.input [ Attr.type' "radio"; Attr.name "radio"; Attr.value "value3" ] - // ] - - // Elem.div [] [ - // Elem.input [ Attr.type' "checkbox"; Attr.name "checkbox"; Attr.value "value1"; Attr.checked' ] - // Elem.input [ Attr.type' "checkbox"; Attr.name "checkbox"; Attr.value "value2"; Attr.checked' ] - // Elem.input [ Attr.type' "checkbox"; Attr.name "checkbox"; Attr.value "value3" ] - // ] - - // Elem.select [ Attr.name "select" ] [ - // Elem.option [ Attr.value "option1" ] [ Text.raw "Option 1" ] - // Elem.option [ Attr.value "option2"; Attr.selected ] [ Text.raw "Option 2" ] - // Elem.option [ Attr.value "option3" ] [ Text.raw "Option 3" ] - // ] - - // Elem.select [ Attr.name "multiselect"; Attr.multiple ] [ - // Elem.option [ Attr.value "option1" ] [ Text.raw "Option 1" ] - // Elem.option [ Attr.value "option2"; Attr.selected ] [ Text.raw "Option 2" ] - // Elem.option [ Attr.value "option3"; Attr.selected ] [ Text.raw "Option 3" ] - // ] - - // Elem.input [ Attr.type' "submit" ] - // ] - - |> renderNameValues - |> should equal "first_name=first_name_value&long_text=long_text_value&radio=value1&checkbox=value1&checkbox=value2&select=option2&multiselect=option2&multiselect=option3" From 93b2cddf770d8ab4040688344b159923fb6193c8 Mon Sep 17 00:00:00 2001 From: Pim Brouwers Date: Wed, 12 Mar 2025 10:56:02 -0400 Subject: [PATCH 6/7] text element tests --- src/Falco.Markup/Html.fs | 36 ++++++++++++++++++++++++++ test/Falco.Markup.Tests/HtmlTests.fs | 38 ++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/src/Falco.Markup/Html.fs b/src/Falco.Markup/Html.fs index cfdc73f..0e71e53 100644 --- a/src/Falco.Markup/Html.fs +++ b/src/Falco.Markup/Html.fs @@ -119,6 +119,42 @@ module Html = let inline _math attr content = Elem.math attr content let inline _svg attr content = Elem.svg attr content + let h1_ content = Text.h1 content + let h2_ content = Text.h2 content + let h3_ content = Text.h3 content + let h4_ content = Text.h4 content + let h5_ content = Text.h5 content + let h6_ content = Text.h6 content + let p_ content = Text.p content + let dd_ content = Text.dd content + let dt_ content = Text.dt content + let abbr_ content = Text.abbr content + let b_ content = Text.b content + let bdi_ content = Text.bdi content + let bdo_ content = Text.bdo content + let cite_ content = Text.cite content + let code_ content = Text.code content + let data_ content = Text.data content + let dfn_ content = Text.dfn content + let em_ content = Text.em content + let i_ content = Text.i content + let kbd_ content = Text.kbd content + let mark_ content = Text.mark content + let q_ content = Text.q content + let rp_ content = Text.rp content + let rt_ content = Text.rt content + let ruby_ content = Text.ruby content + let s_ content = Text.s content + let samp_ content = Text.samp content + let small_ content = Text.small content + let span_ content = Text.span content + let strong_ content = Text.strong content + let sub_ content = Text.sub content + let sup_ content = Text.sup content + let time_ content = Text.time content + let u_ content = Text.u content + let var_ content = Text.var content + let inline __accept value = Attr.accept value let inline __acceptCharset value = Attr.acceptCharset value let inline __accesskey value = Attr.accesskey value diff --git a/test/Falco.Markup.Tests/HtmlTests.fs b/test/Falco.Markup.Tests/HtmlTests.fs index 2dcff43..f4a5b34 100644 --- a/test/Falco.Markup.Tests/HtmlTests.fs +++ b/test/Falco.Markup.Tests/HtmlTests.fs @@ -120,6 +120,44 @@ let ``Elements`` () = _math [] [] |> should equal <| Elem.math [] [] _svg [] [] |> should equal <| Elem.svg [] [] +[] +let ``Text`` () = + h1_ "falco" |> should equal <| Text.h1 "falco" + h2_ "falco" |> should equal <| Text.h2 "falco" + h3_ "falco" |> should equal <| Text.h3 "falco" + h4_ "falco" |> should equal <| Text.h4 "falco" + h5_ "falco" |> should equal <| Text.h5 "falco" + h6_ "falco" |> should equal <| Text.h6 "falco" + p_ "falco" |> should equal <| Text.p "falco" + dd_ "falco" |> should equal <| Text.dd "falco" + dt_ "falco" |> should equal <| Text.dt "falco" + abbr_ "falco" |> should equal <| Text.abbr "falco" + b_ "falco" |> should equal <| Text.b "falco" + bdi_ "falco" |> should equal <| Text.bdi "falco" + bdo_ "falco" |> should equal <| Text.bdo "falco" + cite_ "falco" |> should equal <| Text.cite "falco" + code_ "falco" |> should equal <| Text.code "falco" + data_ "falco" |> should equal <| Text.data "falco" + dfn_ "falco" |> should equal <| Text.dfn "falco" + em_ "falco" |> should equal <| Text.em "falco" + i_ "falco" |> should equal <| Text.i "falco" + kbd_ "falco" |> should equal <| Text.kbd "falco" + mark_ "falco" |> should equal <| Text.mark "falco" + q_ "falco" |> should equal <| Text.q "falco" + rp_ "falco" |> should equal <| Text.rp "falco" + rt_ "falco" |> should equal <| Text.rt "falco" + ruby_ "falco" |> should equal <| Text.ruby "falco" + s_ "falco" |> should equal <| Text.s "falco" + samp_ "falco" |> should equal <| Text.samp "falco" + small_ "falco" |> should equal <| Text.small "falco" + span_ "falco" |> should equal <| Text.span "falco" + strong_ "falco" |> should equal <| Text.strong "falco" + sub_ "falco" |> should equal <| Text.sub "falco" + sup_ "falco" |> should equal <| Text.sup "falco" + time_ "falco" |> should equal <| Text.time "falco" + u_ "falco" |> should equal <| Text.u "falco" + var_ "falco" |> should equal <| Text.var "falco" + [] let ``Attributes`` () = _div [ __accept "falco" ] [] |> should equal <| _div [ Attr.accept "falco" ] [] From 3d131347e3920563fa644e5e544bf3b434198fc0 Mon Sep 17 00:00:00 2001 From: Pim Brouwers Date: Thu, 26 Jun 2025 10:43:46 -0400 Subject: [PATCH 7/7] html module text functions, static website sample project --- Falco.Markup.sln | 43 +- samples/StaticWebsite.fsx | 42 -- samples/StaticWebsite/Program.fs | 40 ++ samples/StaticWebsite/StaticWebsite.fsproj | 16 + samples/StaticWebsite/_about.html | 1 + samples/StaticWebsite/_homepage.html | 1 + src/Falco.Markup/Html.fs | 568 +++++++++++---------- test/Falco.Markup.Tests/HtmlTests.fs | 504 +++++++++--------- 8 files changed, 638 insertions(+), 577 deletions(-) delete mode 100644 samples/StaticWebsite.fsx create mode 100644 samples/StaticWebsite/Program.fs create mode 100644 samples/StaticWebsite/StaticWebsite.fsproj create mode 100644 samples/StaticWebsite/_about.html create mode 100644 samples/StaticWebsite/_homepage.html diff --git a/Falco.Markup.sln b/Falco.Markup.sln index 5678c38..6736a7c 100644 --- a/Falco.Markup.sln +++ b/Falco.Markup.sln @@ -11,26 +11,63 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{25A4B987-E EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Falco.Markup.Tests", "test\Falco.Markup.Tests\Falco.Markup.Tests.fsproj", "{A6AADC18-B737-4CB4-8B35-857E9F94C5CA}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{5D20AA90-6969-D8BD-9DCD-8634F4692FDA}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "StaticWebsite", "samples\StaticWebsite\StaticWebsite.fsproj", "{2C6417E9-ACAE-4B44-A4FA-31D53720F09D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE + Release|x64 = Release|x64 + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {06D04004-6DB3-4522-8EFA-E5239219EF0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {06D04004-6DB3-4522-8EFA-E5239219EF0D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {06D04004-6DB3-4522-8EFA-E5239219EF0D}.Debug|x64.ActiveCfg = Debug|Any CPU + {06D04004-6DB3-4522-8EFA-E5239219EF0D}.Debug|x64.Build.0 = Debug|Any CPU + {06D04004-6DB3-4522-8EFA-E5239219EF0D}.Debug|x86.ActiveCfg = Debug|Any CPU + {06D04004-6DB3-4522-8EFA-E5239219EF0D}.Debug|x86.Build.0 = Debug|Any CPU {06D04004-6DB3-4522-8EFA-E5239219EF0D}.Release|Any CPU.ActiveCfg = Release|Any CPU {06D04004-6DB3-4522-8EFA-E5239219EF0D}.Release|Any CPU.Build.0 = Release|Any CPU + {06D04004-6DB3-4522-8EFA-E5239219EF0D}.Release|x64.ActiveCfg = Release|Any CPU + {06D04004-6DB3-4522-8EFA-E5239219EF0D}.Release|x64.Build.0 = Release|Any CPU + {06D04004-6DB3-4522-8EFA-E5239219EF0D}.Release|x86.ActiveCfg = Release|Any CPU + {06D04004-6DB3-4522-8EFA-E5239219EF0D}.Release|x86.Build.0 = Release|Any CPU {A6AADC18-B737-4CB4-8B35-857E9F94C5CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A6AADC18-B737-4CB4-8B35-857E9F94C5CA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6AADC18-B737-4CB4-8B35-857E9F94C5CA}.Debug|x64.ActiveCfg = Debug|Any CPU + {A6AADC18-B737-4CB4-8B35-857E9F94C5CA}.Debug|x64.Build.0 = Debug|Any CPU + {A6AADC18-B737-4CB4-8B35-857E9F94C5CA}.Debug|x86.ActiveCfg = Debug|Any CPU + {A6AADC18-B737-4CB4-8B35-857E9F94C5CA}.Debug|x86.Build.0 = Debug|Any CPU {A6AADC18-B737-4CB4-8B35-857E9F94C5CA}.Release|Any CPU.ActiveCfg = Release|Any CPU {A6AADC18-B737-4CB4-8B35-857E9F94C5CA}.Release|Any CPU.Build.0 = Release|Any CPU + {A6AADC18-B737-4CB4-8B35-857E9F94C5CA}.Release|x64.ActiveCfg = Release|Any CPU + {A6AADC18-B737-4CB4-8B35-857E9F94C5CA}.Release|x64.Build.0 = Release|Any CPU + {A6AADC18-B737-4CB4-8B35-857E9F94C5CA}.Release|x86.ActiveCfg = Release|Any CPU + {A6AADC18-B737-4CB4-8B35-857E9F94C5CA}.Release|x86.Build.0 = Release|Any CPU + {2C6417E9-ACAE-4B44-A4FA-31D53720F09D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2C6417E9-ACAE-4B44-A4FA-31D53720F09D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2C6417E9-ACAE-4B44-A4FA-31D53720F09D}.Debug|x64.ActiveCfg = Debug|Any CPU + {2C6417E9-ACAE-4B44-A4FA-31D53720F09D}.Debug|x64.Build.0 = Debug|Any CPU + {2C6417E9-ACAE-4B44-A4FA-31D53720F09D}.Debug|x86.ActiveCfg = Debug|Any CPU + {2C6417E9-ACAE-4B44-A4FA-31D53720F09D}.Debug|x86.Build.0 = Debug|Any CPU + {2C6417E9-ACAE-4B44-A4FA-31D53720F09D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2C6417E9-ACAE-4B44-A4FA-31D53720F09D}.Release|Any CPU.Build.0 = Release|Any CPU + {2C6417E9-ACAE-4B44-A4FA-31D53720F09D}.Release|x64.ActiveCfg = Release|Any CPU + {2C6417E9-ACAE-4B44-A4FA-31D53720F09D}.Release|x64.Build.0 = Release|Any CPU + {2C6417E9-ACAE-4B44-A4FA-31D53720F09D}.Release|x86.ActiveCfg = Release|Any CPU + {2C6417E9-ACAE-4B44-A4FA-31D53720F09D}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {06D04004-6DB3-4522-8EFA-E5239219EF0D} = {795C5C1E-4386-49BE-8B93-CB0722AC6220} {A6AADC18-B737-4CB4-8B35-857E9F94C5CA} = {25A4B987-EB43-4351-A7CD-C5451613B590} + {2C6417E9-ACAE-4B44-A4FA-31D53720F09D} = {5D20AA90-6969-D8BD-9DCD-8634F4692FDA} EndGlobalSection EndGlobal diff --git a/samples/StaticWebsite.fsx b/samples/StaticWebsite.fsx deleted file mode 100644 index 7ca6fe7..0000000 --- a/samples/StaticWebsite.fsx +++ /dev/null @@ -1,42 +0,0 @@ -#r "nuget: Falco.Markup" - -open System -open System.IO -open Falco.Markup - -// Components -let divider = - Elem.hr [ Attr.class' "divider" ] - -// Template -let master (title : string) (content : XmlNode list) = - Elem.html [ Attr.lang "en" ] [ - Elem.head [] [ - Elem.title [] [ Text.raw "Sample App" ] - ] - Elem.body [] content - ] - -// Views -let homeView = - master "Homepage" [ - Elem.h1 [] [ Text.raw "Homepage" ] - divider - Elem.p [] [ Text.raw "Lorem ipsum dolor sit amet."] - ] - -let aboutView = - master "About Us" [ - Elem.h1 [] [ Text.raw "About" ] - divider - Elem.p [] [ Text.raw "Lorem ipsum dolor sit amet."] - ] - -// Generate website -let writeHtmlToFile (filename : string) (html : XmlNode) = - File.WriteAllText( - Path.Join(__SOURCE_DIRECTORY__, filename), - (renderHtml html)) - -writeHtmlToFile "_homepage.html" homeView -writeHtmlToFile "_about.html" aboutView \ No newline at end of file diff --git a/samples/StaticWebsite/Program.fs b/samples/StaticWebsite/Program.fs new file mode 100644 index 0000000..8d629f7 --- /dev/null +++ b/samples/StaticWebsite/Program.fs @@ -0,0 +1,40 @@ +open System +open System.IO +open Falco.Markup + +// Components +let divider = + _hr [ _class_ "divider" ] + +// Template +let master (title : string) (content : XmlNode list) = + _html [ _lang_ "en" ] [ + _head [] [ + _title [] [ _text "Sample App" ] + ] + _body [] content + ] + +// Views +let homeView = + master "Homepage" [ + _h1' "Homepage" + divider + _p' "Lorem ipsum dolor sit amet." + ] + +let aboutView = + master "About Us" [ + _h1' "About" + divider + _p' "Lorem ipsum dolor sit amet." + ] + +// Generate website +let writeHtmlToFile (filename : string) (html : XmlNode) = + File.WriteAllText( + Path.Join(__SOURCE_DIRECTORY__, filename), + renderHtml html) + +writeHtmlToFile "_homepage.html" homeView +writeHtmlToFile "_about.html" aboutView diff --git a/samples/StaticWebsite/StaticWebsite.fsproj b/samples/StaticWebsite/StaticWebsite.fsproj new file mode 100644 index 0000000..89dff9c --- /dev/null +++ b/samples/StaticWebsite/StaticWebsite.fsproj @@ -0,0 +1,16 @@ + + + + Exe + net9.0 + + + + + + + + + + + diff --git a/samples/StaticWebsite/_about.html b/samples/StaticWebsite/_about.html new file mode 100644 index 0000000..ce6175b --- /dev/null +++ b/samples/StaticWebsite/_about.html @@ -0,0 +1 @@ +Sample App

About


Lorem ipsum dolor sit amet.

\ No newline at end of file diff --git a/samples/StaticWebsite/_homepage.html b/samples/StaticWebsite/_homepage.html new file mode 100644 index 0000000..f0a3dd5 --- /dev/null +++ b/samples/StaticWebsite/_homepage.html @@ -0,0 +1 @@ +Sample App

Homepage


Lorem ipsum dolor sit amet.

\ No newline at end of file diff --git a/src/Falco.Markup/Html.fs b/src/Falco.Markup/Html.fs index 0e71e53..58b7f50 100644 --- a/src/Falco.Markup/Html.fs +++ b/src/Falco.Markup/Html.fs @@ -2,6 +2,45 @@ namespace Falco.Markup [] module Html = + let inline _text content = Text.raw content + let inline _textf template = Text.rawf template + let inline _textEnc content = Text.enc content + let inline _h1' content = Text.h1 content + let inline _h2' content = Text.h2 content + let inline _h3' content = Text.h3 content + let inline _h4' content = Text.h4 content + let inline _h5' content = Text.h5 content + let inline _h6' content = Text.h6 content + let inline _p' content = Text.p content + let inline _dd' content = Text.dd content + let inline _dt' content = Text.dt content + let inline _abbr' content = Text.abbr content + let inline _b' content = Text.b content + let inline _bdi' content = Text.bdi content + let inline _bdo' content = Text.bdo content + let inline _cite' content = Text.cite content + let inline _code' content = Text.code content + let inline _data' content = Text.data content + let inline _dfn' content = Text.dfn content + let inline _em' content = Text.em content + let inline _i' content = Text.i content + let inline _kbd' content = Text.kbd content + let inline _mark' content = Text.mark content + let inline _q' content = Text.q content + let inline _rp' content = Text.rp content + let inline _rt' content = Text.rt content + let inline _ruby' content = Text.ruby content + let inline _s' content = Text.s content + let inline _samp' content = Text.samp content + let inline _small' content = Text.small content + let inline _span' content = Text.span content + let inline _strong' content = Text.strong content + let inline _sub' content = Text.sub content + let inline _sup' content = Text.sup content + let inline _time' content = Text.time content + let inline _u' content = Text.u content + let inline _var' content = Text.var content + let inline _html attr content = Elem.html attr content let inline _base attr = Elem.base' attr let inline _head attr content = Elem.head attr content @@ -119,286 +158,251 @@ module Html = let inline _math attr content = Elem.math attr content let inline _svg attr content = Elem.svg attr content - let h1_ content = Text.h1 content - let h2_ content = Text.h2 content - let h3_ content = Text.h3 content - let h4_ content = Text.h4 content - let h5_ content = Text.h5 content - let h6_ content = Text.h6 content - let p_ content = Text.p content - let dd_ content = Text.dd content - let dt_ content = Text.dt content - let abbr_ content = Text.abbr content - let b_ content = Text.b content - let bdi_ content = Text.bdi content - let bdo_ content = Text.bdo content - let cite_ content = Text.cite content - let code_ content = Text.code content - let data_ content = Text.data content - let dfn_ content = Text.dfn content - let em_ content = Text.em content - let i_ content = Text.i content - let kbd_ content = Text.kbd content - let mark_ content = Text.mark content - let q_ content = Text.q content - let rp_ content = Text.rp content - let rt_ content = Text.rt content - let ruby_ content = Text.ruby content - let s_ content = Text.s content - let samp_ content = Text.samp content - let small_ content = Text.small content - let span_ content = Text.span content - let strong_ content = Text.strong content - let sub_ content = Text.sub content - let sup_ content = Text.sup content - let time_ content = Text.time content - let u_ content = Text.u content - let var_ content = Text.var content - let inline __accept value = Attr.accept value - let inline __acceptCharset value = Attr.acceptCharset value - let inline __accesskey value = Attr.accesskey value - let inline __action value = Attr.action value - let inline __align value = Attr.align value - let inline __allow value = Attr.allow value - let inline __alt value = Attr.alt value - let __async = Attr.async - let inline __autocapitalize value = Attr.autocapitalize value - let inline __autocomplete value = Attr.autocomplete value - let __autofocus = Attr.autofocus - let __autoplay = Attr.autoplay - let inline __background value = Attr.background value - let inline __bgcolor value = Attr.bgcolor value - let inline __border value = Attr.border value - let inline __buffered value = Attr.buffered value - let inline __capture value = Attr.capture value - let inline __challenge value = Attr.challenge value - let inline __charset value = Attr.charset value - let __checked = Attr.checked' - let inline __cite value = Attr.cite value - let inline __class value = Attr.class' value - let inline __code value = Attr.code value - let inline __codebase value = Attr.codebase value - let inline __color value = Attr.color value - let inline __cols value = Attr.cols value - let inline __colspan value = Attr.colspan value - let inline __content value = Attr.content value - let inline __contenteditable value = Attr.contenteditable value - let inline __contextmenu value = Attr.contextmenu value - let __controls = Attr.controls - let inline __coords value = Attr.coords value - let inline __crossorigin value = Attr.crossorigin value - let inline __csp value = Attr.csp value - let inline __data value = Attr.data value - let inline __dataAttr name value = Attr.dataAttr name value - let inline __datetime value = Attr.datetime value - let inline __decoding value = Attr.decoding value - let __default = Attr.default' - let __defer = Attr.defer - let inline __dir value = Attr.dir value - let inline __dirname value = Attr.dirname value - let __disabled = Attr.disabled - let inline __download value = Attr.download value - let inline __draggable value = Attr.draggable value - let inline __enctype value = Attr.enctype value - let inline __enterkeyhint value = Attr.enterkeyhint value - let inline __for value = Attr.for' value - let inline __form value = Attr.form value - let inline __formaction value = Attr.formaction value - let inline __formenctype value = Attr.formenctype value - let inline __formmethod value = Attr.formmethod value - let __formnovalidate = Attr.formnovalidate - let inline __formtarget value = Attr.formtarget value - let inline __headers value = Attr.headers value - let inline __height value = Attr.height value - let __hidden = Attr.hidden - let inline __high value = Attr.high value - let inline __href value = Attr.href value - let inline __hreflang value = Attr.hreflang value - let inline __httpEquiv value = Attr.httpEquiv value - let inline __icon value = Attr.icon value - let inline __id value = Attr.id value - let inline __importance value = Attr.importance value - let inline __integrity value = Attr.integrity value - let inline __inputmode value = Attr.inputmode value - let __ismap = Attr.ismap - let inline __itemprop value = Attr.itemprop value - let inline __keytype value = Attr.keytype value - let inline __kind value = Attr.kind value - let inline __label value = Attr.label value - let inline __lang value = Attr.lang value - let inline __loading value = Attr.loading value - let inline __list value = Attr.list value - let __loop = Attr.loop - let inline __low value = Attr.low value - let inline __max value = Attr.max value - let inline __maxlength value = Attr.maxlength value - let inline __minlength value = Attr.minlength value - let inline __media value = Attr.media value - let inline __method value = Attr.method value - let inline __min value = Attr.min value - let __multiple = Attr.multiple - let __muted = Attr.muted - let inline __name value = Attr.name value - let __novalidate = Attr.novalidate - let inline __open value = Attr.open' value - let inline __optimum value = Attr.optimum value - let inline __pattern value = Attr.pattern value - let inline __ping value = Attr.ping value - let inline __placeholder value = Attr.placeholder value - let inline __poster value = Attr.poster value - let inline __preload value = Attr.preload value - let inline __radiogroup value = Attr.radiogroup value - let __readonly = Attr.readonly - let inline __referrerpolicy value = Attr.referrerpolicy value - let inline __rel value = Attr.rel value - let __required = Attr.required - let __reversed = Attr.reversed - let inline __role value = Attr.role value - let inline __rows value = Attr.rows value - let inline __rowspan value = Attr.rowspan value - let inline __sandbox value = Attr.sandbox value - let inline __scope value = Attr.scope value - let __selected = Attr.selected - let inline __shape value = Attr.shape value - let inline __size value = Attr.size value - let inline __sizes value = Attr.sizes value - let inline __slot value = Attr.slot value - let inline __span value = Attr.span value - let inline __spellcheck value = Attr.spellcheck value - let inline __src value = Attr.src value - let inline __srcdoc value = Attr.srcdoc value - let inline __srclang value = Attr.srclang value - let inline __srcset value = Attr.srcset value - let inline __start value = Attr.start value - let inline __step value = Attr.step value - let inline __style value = Attr.style value - let inline __tabindex value = Attr.tabindex value - let inline __target value = Attr.target value - let inline __title value = Attr.title value - let inline __translate value = Attr.translate value - let inline __type value = Attr.type' value - let inline __usemap value = Attr.usemap value - let inline __value value = Attr.value value - let inline __width value = Attr.width value - let inline __wrap value = Attr.wrap value - let __enctypeForm = Attr.enctypeForm - let __enctypeMultipart = Attr.enctypeMultipart - let __methodPost = Attr.methodPost - let __methodGet = Attr.methodGet - let __methodDialog = Attr.methodDialog - let __targetSelf = Attr.targetSelf - let __targetBlank = Attr.targetBlank - let __targetParent = Attr.targetParent - let __targetTop = Attr.targetTop - let __targetUnfencedTop = Attr.targetUnfencedTop - let __typeButton = Attr.typeButton - let __typeCheckbox = Attr.typeCheckbox - let __typeColor = Attr.typeColor - let __typeDate = Attr.typeDate - let __typeDatetimeLocal = Attr.typeDatetimeLocal - let __typeEmail = Attr.typeEmail - let __typeFile = Attr.typeFile - let __typeHidden = Attr.typeHidden - let __typeImage = Attr.typeImage - let __typeMonth = Attr.typeMonth - let __typeNumber = Attr.typeNumber - let __typePassword = Attr.typePassword - let __typeRadio = Attr.typeRadio - let __typeRange = Attr.typeRange - let __typeReset = Attr.typeReset - let __typeSearch = Attr.typeSearch - let __typeSubmit = Attr.typeSubmit - let __typeTel = Attr.typeTel - let __typeText = Attr.typeText - let __typeTime = Attr.typeTime - let __typeUrl = Attr.typeUrl - let __typeWeek = Attr.typeWeek - let inline __onabort value = Attr.onabort value - let inline __onafterprint value = Attr.onafterprint value - let inline __onanimationend value = Attr.onanimationend value - let inline __onanimationiteration value = Attr.onanimationiteration value - let inline __onanimationstart value = Attr.onanimationstart value - let inline __onbeforeprint value = Attr.onbeforeprint value - let inline __onbeforeunload value = Attr.onbeforeunload value - let inline __onblur value = Attr.onblur value - let inline __oncanplay value = Attr.oncanplay value - let inline __oncanplaythrough value = Attr.oncanplaythrough value - let inline __onchange value = Attr.onchange value - let inline __onclick value = Attr.onclick value - let inline __oncontextmenu value = Attr.oncontextmenu value - let inline __oncopy value = Attr.oncopy value - let inline __oncut value = Attr.oncut value - let inline __ondblclick value = Attr.ondblclick value - let inline __ondrag value = Attr.ondrag value - let inline __ondragend value = Attr.ondragend value - let inline __ondragenter value = Attr.ondragenter value - let inline __ondragleave value = Attr.ondragleave value - let inline __ondragover value = Attr.ondragover value - let inline __ondragstart value = Attr.ondragstart value - let inline __ondrop value = Attr.ondrop value - let inline __ondurationchange value = Attr.ondurationchange value - let inline __onemptied value = Attr.onemptied value - let inline __onended value = Attr.onended value - let inline __onerror value = Attr.onerror value - let inline __onfocus value = Attr.onfocus value - let inline __onformchange value = Attr.onformchange value - let inline __onforminput value = Attr.onforminput value - let inline __onfocusin value = Attr.onfocusin value - let inline __onfocusout value = Attr.onfocusout value - let inline __onfullscreenchange value = Attr.onfullscreenchange value - let inline __onfullscreenerror value = Attr.onfullscreenerror value - let inline __onhashchange value = Attr.onhashchange value - let inline __oninput value = Attr.oninput value - let inline __oninvalid value = Attr.oninvalid value - let inline __onkeydown value = Attr.onkeydown value - let inline __onkeypress value = Attr.onkeypress value - let inline __onkeyup value = Attr.onkeyup value - let inline __onload value = Attr.onload value - let inline __onloadeddata value = Attr.onloadeddata value - let inline __onloadedmetadata value = Attr.onloadedmetadata value - let inline __onloadstart value = Attr.onloadstart value - let inline __onmessage value = Attr.onmessage value - let inline __onmousedown value = Attr.onmousedown value - let inline __onmouseenter value = Attr.onmouseenter value - let inline __onmouseleave value = Attr.onmouseleave value - let inline __onmousemove value = Attr.onmousemove value - let inline __onmouseover value = Attr.onmouseover value - let inline __onmouseout value = Attr.onmouseout value - let inline __onmouseup value = Attr.onmouseup value - let inline __onmousewheel value = Attr.onmousewheel value - let inline __onoffline value = Attr.onoffline value - let inline __ononline value = Attr.ononline value - let inline __onopen value = Attr.onopen value - let inline __onpagehide value = Attr.onpagehide value - let inline __onpageshow value = Attr.onpageshow value - let inline __onpaste value = Attr.onpaste value - let inline __onpause value = Attr.onpause value - let inline __onplay value = Attr.onplay value - let inline __onplaying value = Attr.onplaying value - let inline __onpopstate value = Attr.onpopstate value - let inline __onprogress value = Attr.onprogress value - let inline __onratechange value = Attr.onratechange value - let inline __onresize value = Attr.onresize value - let inline __onreset value = Attr.onreset value - let inline __onscroll value = Attr.onscroll value - let inline __onsearch value = Attr.onsearch value - let inline __onseeked value = Attr.onseeked value - let inline __onseeking value = Attr.onseeking value - let inline __onselect value = Attr.onselect value - let inline __onshow value = Attr.onshow value - let inline __onstalled value = Attr.onstalled value - let inline __onstorage value = Attr.onstorage value - let inline __onsubmit value = Attr.onsubmit value - let inline __onsuspend value = Attr.onsuspend value - let inline __ontimeupdate value = Attr.ontimeupdate value - let inline __ontoggle value = Attr.ontoggle value - let inline __ontouchcancel value = Attr.ontouchcancel value - let inline __ontouchend value = Attr.ontouchend value - let inline __ontouchmove value = Attr.ontouchmove value - let inline __ontouchstart value = Attr.ontouchstart value - let inline __ontransitionend value = Attr.ontransitionend value - let inline __onunload value = Attr.onunload value - let inline __onvolumechange value = Attr.onvolumechange value - let inline __onwaiting value = Attr.onwaiting value - let inline __onwheel value = Attr.onwheel value + let inline _accept_ value = Attr.accept value + let inline _acceptCharset_ value = Attr.acceptCharset value + let inline _accesskey_ value = Attr.accesskey value + let inline _action_ value = Attr.action value + let inline _align_ value = Attr.align value + let inline _allow_ value = Attr.allow value + let inline _alt_ value = Attr.alt value + let _async_ = Attr.async + let inline _autocapitalize_ value = Attr.autocapitalize value + let inline _autocomplete_ value = Attr.autocomplete value + let _autofocus_ = Attr.autofocus + let _autoplay_ = Attr.autoplay + let inline _background_ value = Attr.background value + let inline _bgcolor_ value = Attr.bgcolor value + let inline _border_ value = Attr.border value + let inline _buffered_ value = Attr.buffered value + let inline _capture_ value = Attr.capture value + let inline _challenge_ value = Attr.challenge value + let inline _charset_ value = Attr.charset value + let _checked_ = Attr.checked' + let inline _cite_ value = Attr.cite value + let inline _class_ value = Attr.class' value + let inline _code_ value = Attr.code value + let inline _codebase_ value = Attr.codebase value + let inline _color_ value = Attr.color value + let inline _cols_ value = Attr.cols value + let inline _colspan_ value = Attr.colspan value + let inline _content_ value = Attr.content value + let inline _contenteditable_ value = Attr.contenteditable value + let inline _contextmenu_ value = Attr.contextmenu value + let _controls_ = Attr.controls + let inline _coords_ value = Attr.coords value + let inline _crossorigin_ value = Attr.crossorigin value + let inline _csp_ value = Attr.csp value + let inline _data_ value = Attr.data value + let inline _dataAttr_ name value = Attr.dataAttr name value + let inline _datetime_ value = Attr.datetime value + let inline _decoding_ value = Attr.decoding value + let _default_ = Attr.default' + let _defer_ = Attr.defer + let inline _dir_ value = Attr.dir value + let inline _dirname_ value = Attr.dirname value + let _disabled_ = Attr.disabled + let inline _download_ value = Attr.download value + let inline _draggable_ value = Attr.draggable value + let inline _enctype_ value = Attr.enctype value + let inline _enterkeyhint_ value = Attr.enterkeyhint value + let inline _for_ value = Attr.for' value + let inline _form_ value = Attr.form value + let inline _formaction_ value = Attr.formaction value + let inline _formenctype_ value = Attr.formenctype value + let inline _formmethod_ value = Attr.formmethod value + let _formnovalidate_ = Attr.formnovalidate + let inline _formtarget_ value = Attr.formtarget value + let inline _headers_ value = Attr.headers value + let inline _height_ value = Attr.height value + let _hidden_ = Attr.hidden + let inline _high_ value = Attr.high value + let inline _href_ value = Attr.href value + let inline _hreflang_ value = Attr.hreflang value + let inline _httpEquiv_ value = Attr.httpEquiv value + let inline _icon_ value = Attr.icon value + let inline _id_ value = Attr.id value + let inline _importance_ value = Attr.importance value + let inline _integrity_ value = Attr.integrity value + let inline _inputmode_ value = Attr.inputmode value + let _ismap_ = Attr.ismap + let inline _itemprop_ value = Attr.itemprop value + let inline _keytype_ value = Attr.keytype value + let inline _kind_ value = Attr.kind value + let inline _label_ value = Attr.label value + let inline _lang_ value = Attr.lang value + let inline _loading_ value = Attr.loading value + let inline _list_ value = Attr.list value + let _loop_ = Attr.loop + let inline _low_ value = Attr.low value + let inline _max_ value = Attr.max value + let inline _maxlength_ value = Attr.maxlength value + let inline _minlength_ value = Attr.minlength value + let inline _media_ value = Attr.media value + let inline _method_ value = Attr.method value + let inline _min_ value = Attr.min value + let _multiple_ = Attr.multiple + let _muted_ = Attr.muted + let inline _name_ value = Attr.name value + let _novalidate_ = Attr.novalidate + let inline _open_ value = Attr.open' value + let inline _optimum_ value = Attr.optimum value + let inline _pattern_ value = Attr.pattern value + let inline _ping_ value = Attr.ping value + let inline _placeholder_ value = Attr.placeholder value + let inline _poster_ value = Attr.poster value + let inline _preload_ value = Attr.preload value + let inline _radiogroup_ value = Attr.radiogroup value + let _readonly_ = Attr.readonly + let inline _referrerpolicy_ value = Attr.referrerpolicy value + let inline _rel_ value = Attr.rel value + let _required_ = Attr.required + let _reversed_ = Attr.reversed + let inline _role_ value = Attr.role value + let inline _rows_ value = Attr.rows value + let inline _rowspan_ value = Attr.rowspan value + let inline _sandbox_ value = Attr.sandbox value + let inline _scope_ value = Attr.scope value + let _selected_ = Attr.selected + let inline _shape_ value = Attr.shape value + let inline _size_ value = Attr.size value + let inline _sizes_ value = Attr.sizes value + let inline _slot_ value = Attr.slot value + let inline _span_ value = Attr.span value + let inline _spellcheck_ value = Attr.spellcheck value + let inline _src_ value = Attr.src value + let inline _srcdoc_ value = Attr.srcdoc value + let inline _srclang_ value = Attr.srclang value + let inline _srcset_ value = Attr.srcset value + let inline _start_ value = Attr.start value + let inline _step_ value = Attr.step value + let inline _style_ value = Attr.style value + let inline _tabindex_ value = Attr.tabindex value + let inline _target_ value = Attr.target value + let inline _title_ value = Attr.title value + let inline _translate_ value = Attr.translate value + let inline _type_ value = Attr.type' value + let inline _usemap_ value = Attr.usemap value + let inline _value_ value = Attr.value value + let inline _width_ value = Attr.width value + let inline _wrap_ value = Attr.wrap value + let _enctypeForm_ = Attr.enctypeForm + let _enctypeMultipart_ = Attr.enctypeMultipart + let _methodPost_ = Attr.methodPost + let _methodGet_ = Attr.methodGet + let _methodDialog_ = Attr.methodDialog + let _targetSelf_ = Attr.targetSelf + let _targetBlank_ = Attr.targetBlank + let _targetParent_ = Attr.targetParent + let _targetTop_ = Attr.targetTop + let _targetUnfencedTop_ = Attr.targetUnfencedTop + let _typeButton_ = Attr.typeButton + let _typeCheckbox_ = Attr.typeCheckbox + let _typeColor_ = Attr.typeColor + let _typeDate_ = Attr.typeDate + let _typeDatetimeLocal_ = Attr.typeDatetimeLocal + let _typeEmail_ = Attr.typeEmail + let _typeFile_ = Attr.typeFile + let _typeHidden_ = Attr.typeHidden + let _typeImage_ = Attr.typeImage + let _typeMonth_ = Attr.typeMonth + let _typeNumber_ = Attr.typeNumber + let _typePassword_ = Attr.typePassword + let _typeRadio_ = Attr.typeRadio + let _typeRange_ = Attr.typeRange + let _typeReset_ = Attr.typeReset + let _typeSearch_ = Attr.typeSearch + let _typeSubmit_ = Attr.typeSubmit + let _typeTel_ = Attr.typeTel + let _typeText_ = Attr.typeText + let _typeTime_ = Attr.typeTime + let _typeUrl_ = Attr.typeUrl + let _typeWeek_ = Attr.typeWeek + let inline _onabort_ value = Attr.onabort value + let inline _onafterprint_ value = Attr.onafterprint value + let inline _onanimationend_ value = Attr.onanimationend value + let inline _onanimationiteration_ value = Attr.onanimationiteration value + let inline _onanimationstart_ value = Attr.onanimationstart value + let inline _onbeforeprint_ value = Attr.onbeforeprint value + let inline _onbeforeunload_ value = Attr.onbeforeunload value + let inline _onblur_ value = Attr.onblur value + let inline _oncanplay_ value = Attr.oncanplay value + let inline _oncanplaythrough_ value = Attr.oncanplaythrough value + let inline _onchange_ value = Attr.onchange value + let inline _onclick_ value = Attr.onclick value + let inline _oncontextmenu_ value = Attr.oncontextmenu value + let inline _oncopy_ value = Attr.oncopy value + let inline _oncut_ value = Attr.oncut value + let inline _ondblclick_ value = Attr.ondblclick value + let inline _ondrag_ value = Attr.ondrag value + let inline _ondragend_ value = Attr.ondragend value + let inline _ondragenter_ value = Attr.ondragenter value + let inline _ondragleave_ value = Attr.ondragleave value + let inline _ondragover_ value = Attr.ondragover value + let inline _ondragstart_ value = Attr.ondragstart value + let inline _ondrop_ value = Attr.ondrop value + let inline _ondurationchange_ value = Attr.ondurationchange value + let inline _onemptied_ value = Attr.onemptied value + let inline _onended_ value = Attr.onended value + let inline _onerror_ value = Attr.onerror value + let inline _onfocus_ value = Attr.onfocus value + let inline _onformchange_ value = Attr.onformchange value + let inline _onforminput_ value = Attr.onforminput value + let inline _onfocusin_ value = Attr.onfocusin value + let inline _onfocusout_ value = Attr.onfocusout value + let inline _onfullscreenchange_ value = Attr.onfullscreenchange value + let inline _onfullscreenerror_ value = Attr.onfullscreenerror value + let inline _onhashchange_ value = Attr.onhashchange value + let inline _oninput_ value = Attr.oninput value + let inline _oninvalid_ value = Attr.oninvalid value + let inline _onkeydown_ value = Attr.onkeydown value + let inline _onkeypress_ value = Attr.onkeypress value + let inline _onkeyup_ value = Attr.onkeyup value + let inline _onload_ value = Attr.onload value + let inline _onloadeddata_ value = Attr.onloadeddata value + let inline _onloadedmetadata_ value = Attr.onloadedmetadata value + let inline _onloadstart_ value = Attr.onloadstart value + let inline _onmessage_ value = Attr.onmessage value + let inline _onmousedown_ value = Attr.onmousedown value + let inline _onmouseenter_ value = Attr.onmouseenter value + let inline _onmouseleave_ value = Attr.onmouseleave value + let inline _onmousemove_ value = Attr.onmousemove value + let inline _onmouseover_ value = Attr.onmouseover value + let inline _onmouseout_ value = Attr.onmouseout value + let inline _onmouseup_ value = Attr.onmouseup value + let inline _onmousewheel_ value = Attr.onmousewheel value + let inline _onoffline_ value = Attr.onoffline value + let inline _ononline_ value = Attr.ononline value + let inline _onopen_ value = Attr.onopen value + let inline _onpagehide_ value = Attr.onpagehide value + let inline _onpageshow_ value = Attr.onpageshow value + let inline _onpaste_ value = Attr.onpaste value + let inline _onpause_ value = Attr.onpause value + let inline _onplay_ value = Attr.onplay value + let inline _onplaying_ value = Attr.onplaying value + let inline _onpopstate_ value = Attr.onpopstate value + let inline _onprogress_ value = Attr.onprogress value + let inline _onratechange_ value = Attr.onratechange value + let inline _onresize_ value = Attr.onresize value + let inline _onreset_ value = Attr.onreset value + let inline _onscroll_ value = Attr.onscroll value + let inline _onsearch_ value = Attr.onsearch value + let inline _onseeked_ value = Attr.onseeked value + let inline _onseeking_ value = Attr.onseeking value + let inline _onselect_ value = Attr.onselect value + let inline _onshow_ value = Attr.onshow value + let inline _onstalled_ value = Attr.onstalled value + let inline _onstorage_ value = Attr.onstorage value + let inline _onsubmit_ value = Attr.onsubmit value + let inline _onsuspend_ value = Attr.onsuspend value + let inline _ontimeupdate_ value = Attr.ontimeupdate value + let inline _ontoggle_ value = Attr.ontoggle value + let inline _ontouchcancel_ value = Attr.ontouchcancel value + let inline _ontouchend_ value = Attr.ontouchend value + let inline _ontouchmove_ value = Attr.ontouchmove value + let inline _ontouchstart_ value = Attr.ontouchstart value + let inline _ontransitionend_ value = Attr.ontransitionend value + let inline _onunload_ value = Attr.onunload value + let inline _onvolumechange_ value = Attr.onvolumechange value + let inline _onwaiting_ value = Attr.onwaiting value + let inline _onwheel_ value = Attr.onwheel value diff --git a/test/Falco.Markup.Tests/HtmlTests.fs b/test/Falco.Markup.Tests/HtmlTests.fs index f4a5b34..6bed6df 100644 --- a/test/Falco.Markup.Tests/HtmlTests.fs +++ b/test/Falco.Markup.Tests/HtmlTests.fs @@ -6,6 +6,7 @@ open Xunit [] let ``Elements`` () = + _html [] [] |> should equal <| Elem.html [] [] _base [] |> should equal <| Elem.base' [] _head [] [] |> should equal <| Elem.head [] [] @@ -122,256 +123,259 @@ let ``Elements`` () = [] let ``Text`` () = - h1_ "falco" |> should equal <| Text.h1 "falco" - h2_ "falco" |> should equal <| Text.h2 "falco" - h3_ "falco" |> should equal <| Text.h3 "falco" - h4_ "falco" |> should equal <| Text.h4 "falco" - h5_ "falco" |> should equal <| Text.h5 "falco" - h6_ "falco" |> should equal <| Text.h6 "falco" - p_ "falco" |> should equal <| Text.p "falco" - dd_ "falco" |> should equal <| Text.dd "falco" - dt_ "falco" |> should equal <| Text.dt "falco" - abbr_ "falco" |> should equal <| Text.abbr "falco" - b_ "falco" |> should equal <| Text.b "falco" - bdi_ "falco" |> should equal <| Text.bdi "falco" - bdo_ "falco" |> should equal <| Text.bdo "falco" - cite_ "falco" |> should equal <| Text.cite "falco" - code_ "falco" |> should equal <| Text.code "falco" - data_ "falco" |> should equal <| Text.data "falco" - dfn_ "falco" |> should equal <| Text.dfn "falco" - em_ "falco" |> should equal <| Text.em "falco" - i_ "falco" |> should equal <| Text.i "falco" - kbd_ "falco" |> should equal <| Text.kbd "falco" - mark_ "falco" |> should equal <| Text.mark "falco" - q_ "falco" |> should equal <| Text.q "falco" - rp_ "falco" |> should equal <| Text.rp "falco" - rt_ "falco" |> should equal <| Text.rt "falco" - ruby_ "falco" |> should equal <| Text.ruby "falco" - s_ "falco" |> should equal <| Text.s "falco" - samp_ "falco" |> should equal <| Text.samp "falco" - small_ "falco" |> should equal <| Text.small "falco" - span_ "falco" |> should equal <| Text.span "falco" - strong_ "falco" |> should equal <| Text.strong "falco" - sub_ "falco" |> should equal <| Text.sub "falco" - sup_ "falco" |> should equal <| Text.sup "falco" - time_ "falco" |> should equal <| Text.time "falco" - u_ "falco" |> should equal <| Text.u "falco" - var_ "falco" |> should equal <| Text.var "falco" + _text "falco" |> should equal <| Text.raw "falco" + _textf "falco %s" "rocks" |> should equal <| Text.rawf "falco %s" "rocks" + _textEnc "falco" |> should equal <| Text.enc "falco" + _h1' "falco" |> should equal <| Text.h1 "falco" + _h2' "falco" |> should equal <| Text.h2 "falco" + _h3' "falco" |> should equal <| Text.h3 "falco" + _h4' "falco" |> should equal <| Text.h4 "falco" + _h5' "falco" |> should equal <| Text.h5 "falco" + _h6' "falco" |> should equal <| Text.h6 "falco" + _p' "falco" |> should equal <| Text.p "falco" + _dd' "falco" |> should equal <| Text.dd "falco" + _dt' "falco" |> should equal <| Text.dt "falco" + _abbr' "falco" |> should equal <| Text.abbr "falco" + _b' "falco" |> should equal <| Text.b "falco" + _bdi' "falco" |> should equal <| Text.bdi "falco" + _bdo' "falco" |> should equal <| Text.bdo "falco" + _cite' "falco" |> should equal <| Text.cite "falco" + _code' "falco" |> should equal <| Text.code "falco" + _data' "falco" |> should equal <| Text.data "falco" + _dfn' "falco" |> should equal <| Text.dfn "falco" + _em' "falco" |> should equal <| Text.em "falco" + _i' "falco" |> should equal <| Text.i "falco" + _kbd' "falco" |> should equal <| Text.kbd "falco" + _mark' "falco" |> should equal <| Text.mark "falco" + _q' "falco" |> should equal <| Text.q "falco" + _rp' "falco" |> should equal <| Text.rp "falco" + _rt' "falco" |> should equal <| Text.rt "falco" + _ruby' "falco" |> should equal <| Text.ruby "falco" + _s' "falco" |> should equal <| Text.s "falco" + _samp' "falco" |> should equal <| Text.samp "falco" + _small' "falco" |> should equal <| Text.small "falco" + _span' "falco" |> should equal <| Text.span "falco" + _strong' "falco" |> should equal <| Text.strong "falco" + _sub' "falco" |> should equal <| Text.sub "falco" + _sup' "falco" |> should equal <| Text.sup "falco" + _time' "falco" |> should equal <| Text.time "falco" + _u' "falco" |> should equal <| Text.u "falco" + _var' "falco" |> should equal <| Text.var "falco" [] let ``Attributes`` () = - _div [ __accept "falco" ] [] |> should equal <| _div [ Attr.accept "falco" ] [] - _div [ __acceptCharset "falco" ] [] |> should equal <| _div [ Attr.acceptCharset "falco" ] [] - _div [ __accesskey "falco" ] [] |> should equal <| _div [ Attr.accesskey "falco" ] [] - _div [ __action "falco" ] [] |> should equal <| _div [ Attr.action "falco" ] [] - _div [ __align "falco" ] [] |> should equal <| _div [ Attr.align "falco" ] [] - _div [ __allow "falco" ] [] |> should equal <| _div [ Attr.allow "falco" ] [] - _div [ __alt "falco" ] [] |> should equal <| _div [ Attr.alt "falco" ] [] - _div [ __async ] [] |> should equal <| _div [ Attr.async ] [] - _div [ __autocapitalize "falco" ] [] |> should equal <| _div [ Attr.autocapitalize "falco" ] [] - _div [ __autocomplete "falco" ] [] |> should equal <| _div [ Attr.autocomplete "falco" ] [] - _div [ __autofocus ] [] |> should equal <| _div [ Attr.autofocus ] [] - _div [ __autoplay ] [] |> should equal <| _div [ Attr.autoplay ] [] - _div [ __background "falco" ] [] |> should equal <| _div [ Attr.background "falco" ] [] - _div [ __bgcolor "falco" ] [] |> should equal <| _div [ Attr.bgcolor "falco" ] [] - _div [ __border "falco" ] [] |> should equal <| _div [ Attr.border "falco" ] [] - _div [ __buffered "falco" ] [] |> should equal <| _div [ Attr.buffered "falco" ] [] - _div [ __capture "falco" ] [] |> should equal <| _div [ Attr.capture "falco" ] [] - _div [ __challenge "falco" ] [] |> should equal <| _div [ Attr.challenge "falco" ] [] - _div [ __charset "falco" ] [] |> should equal <| _div [ Attr.charset "falco" ] [] - _div [ __checked ] [] |> should equal <| _div [ Attr.checked' ] [] - _div [ __cite "falco" ] [] |> should equal <| _div [ Attr.cite "falco" ] [] - _div [ __class "falco" ] [] |> should equal <| _div [ Attr.class' "falco" ] [] - _div [ __code "falco" ] [] |> should equal <| _div [ Attr.code "falco" ] [] - _div [ __codebase "falco" ] [] |> should equal <| _div [ Attr.codebase "falco" ] [] - _div [ __color "falco" ] [] |> should equal <| _div [ Attr.color "falco" ] [] - _div [ __cols "falco" ] [] |> should equal <| _div [ Attr.cols "falco" ] [] - _div [ __colspan "falco" ] [] |> should equal <| _div [ Attr.colspan "falco" ] [] - _div [ __content "falco" ] [] |> should equal <| _div [ Attr.content "falco" ] [] - _div [ __contenteditable "falco" ] [] |> should equal <| _div [ Attr.contenteditable "falco" ] [] - _div [ __contextmenu "falco" ] [] |> should equal <| _div [ Attr.contextmenu "falco" ] [] - _div [ __controls ] [] |> should equal <| _div [ Attr.controls ] [] - _div [ __coords "falco" ] [] |> should equal <| _div [ Attr.coords "falco" ] [] - _div [ __crossorigin "falco" ] [] |> should equal <| _div [ Attr.crossorigin "falco" ] [] - _div [ __csp "falco" ] [] |> should equal <| _div [ Attr.csp "falco" ] [] - _div [ __data "falco" ] [] |> should equal <| _div [ Attr.data "falco" ] [] - _div [ __dataAttr "value" "falco" ] [] |> should equal <| _div [ Attr.dataAttr "value" "falco" ] [] - _div [ __datetime "falco" ] [] |> should equal <| _div [ Attr.datetime "falco" ] [] - _div [ __decoding "falco" ] [] |> should equal <| _div [ Attr.decoding "falco" ] [] - _div [ __default ] [] |> should equal <| _div [ Attr.default' ] [] - _div [ __defer ] [] |> should equal <| _div [ Attr.defer ] [] - _div [ __dir "falco" ] [] |> should equal <| _div [ Attr.dir "falco" ] [] - _div [ __dirname "falco" ] [] |> should equal <| _div [ Attr.dirname "falco" ] [] - _div [ __disabled ] [] |> should equal <| _div [ Attr.disabled ] [] - _div [ __download "falco" ] [] |> should equal <| _div [ Attr.download "falco" ] [] - _div [ __draggable "falco" ] [] |> should equal <| _div [ Attr.draggable "falco" ] [] - _div [ __enctype "falco" ] [] |> should equal <| _div [ Attr.enctype "falco" ] [] - _div [ __enterkeyhint "falco" ] [] |> should equal <| _div [ Attr.enterkeyhint "falco" ] [] - _div [ __for "falco" ] [] |> should equal <| _div [ Attr.for' "falco" ] [] - _div [ __form "falco" ] [] |> should equal <| _div [ Attr.form "falco" ] [] - _div [ __formaction "falco" ] [] |> should equal <| _div [ Attr.formaction "falco" ] [] - _div [ __formenctype "falco" ] [] |> should equal <| _div [ Attr.formenctype "falco" ] [] - _div [ __formmethod "falco" ] [] |> should equal <| _div [ Attr.formmethod "falco" ] [] - _div [ __formnovalidate ] [] |> should equal <| _div [ Attr.formnovalidate ] [] - _div [ __formtarget "falco" ] [] |> should equal <| _div [ Attr.formtarget "falco" ] [] - _div [ __headers "falco" ] [] |> should equal <| _div [ Attr.headers "falco" ] [] - _div [ __height "falco" ] [] |> should equal <| _div [ Attr.height "falco" ] [] - _div [ __hidden ] [] |> should equal <| _div [ Attr.hidden ] [] - _div [ __high "falco" ] [] |> should equal <| _div [ Attr.high "falco" ] [] - _div [ __href "falco" ] [] |> should equal <| _div [ Attr.href "falco" ] [] - _div [ __hreflang "falco" ] [] |> should equal <| _div [ Attr.hreflang "falco" ] [] - _div [ __httpEquiv "falco" ] [] |> should equal <| _div [ Attr.httpEquiv "falco" ] [] - _div [ __icon "falco" ] [] |> should equal <| _div [ Attr.icon "falco" ] [] - _div [ __id "falco" ] [] |> should equal <| _div [ Attr.id "falco" ] [] - _div [ __importance "falco" ] [] |> should equal <| _div [ Attr.importance "falco" ] [] - _div [ __integrity "falco" ] [] |> should equal <| _div [ Attr.integrity "falco" ] [] - _div [ __inputmode "falco" ] [] |> should equal <| _div [ Attr.inputmode "falco" ] [] - _div [ __ismap ] [] |> should equal <| _div [ Attr.ismap ] [] - _div [ __itemprop "falco" ] [] |> should equal <| _div [ Attr.itemprop "falco" ] [] - _div [ __keytype "falco" ] [] |> should equal <| _div [ Attr.keytype "falco" ] [] - _div [ __kind "falco" ] [] |> should equal <| _div [ Attr.kind "falco" ] [] - _div [ __label "falco" ] [] |> should equal <| _div [ Attr.label "falco" ] [] - _div [ __lang "falco" ] [] |> should equal <| _div [ Attr.lang "falco" ] [] - _div [ __loading "falco" ] [] |> should equal <| _div [ Attr.loading "falco" ] [] - _div [ __list "falco" ] [] |> should equal <| _div [ Attr.list "falco" ] [] - _div [ __loop ] [] |> should equal <| _div [ Attr.loop ] [] - _div [ __low "falco" ] [] |> should equal <| _div [ Attr.low "falco" ] [] - _div [ __max "falco" ] [] |> should equal <| _div [ Attr.max "falco" ] [] - _div [ __maxlength "falco" ] [] |> should equal <| _div [ Attr.maxlength "falco" ] [] - _div [ __minlength "falco" ] [] |> should equal <| _div [ Attr.minlength "falco" ] [] - _div [ __media "falco" ] [] |> should equal <| _div [ Attr.media "falco" ] [] - _div [ __method "falco" ] [] |> should equal <| _div [ Attr.method "falco" ] [] - _div [ __min "falco" ] [] |> should equal <| _div [ Attr.min "falco" ] [] - _div [ __multiple ] [] |> should equal <| _div [ Attr.multiple ] [] - _div [ __muted ] [] |> should equal <| _div [ Attr.muted ] [] - _div [ __name "falco" ] [] |> should equal <| _div [ Attr.name "falco" ] [] - _div [ __novalidate ] [] |> should equal <| _div [ Attr.novalidate ] [] - _div [ __open "falco" ] [] |> should equal <| _div [ Attr.open' "falco" ] [] - _div [ __optimum "falco" ] [] |> should equal <| _div [ Attr.optimum "falco" ] [] - _div [ __pattern "falco" ] [] |> should equal <| _div [ Attr.pattern "falco" ] [] - _div [ __ping "falco" ] [] |> should equal <| _div [ Attr.ping "falco" ] [] - _div [ __placeholder "falco" ] [] |> should equal <| _div [ Attr.placeholder "falco" ] [] - _div [ __poster "falco" ] [] |> should equal <| _div [ Attr.poster "falco" ] [] - _div [ __preload "falco" ] [] |> should equal <| _div [ Attr.preload "falco" ] [] - _div [ __radiogroup "falco" ] [] |> should equal <| _div [ Attr.radiogroup "falco" ] [] - _div [ __readonly ] [] |> should equal <| _div [ Attr.readonly ] [] - _div [ __referrerpolicy "falco" ] [] |> should equal <| _div [ Attr.referrerpolicy "falco" ] [] - _div [ __rel "falco" ] [] |> should equal <| _div [ Attr.rel "falco" ] [] - _div [ __required ] [] |> should equal <| _div [ Attr.required ] [] - _div [ __reversed ] [] |> should equal <| _div [ Attr.reversed ] [] - _div [ __role "falco" ] [] |> should equal <| _div [ Attr.role "falco" ] [] - _div [ __rows "falco" ] [] |> should equal <| _div [ Attr.rows "falco" ] [] - _div [ __rowspan "falco" ] [] |> should equal <| _div [ Attr.rowspan "falco" ] [] - _div [ __sandbox "falco" ] [] |> should equal <| _div [ Attr.sandbox "falco" ] [] - _div [ __scope "falco" ] [] |> should equal <| _div [ Attr.scope "falco" ] [] - _div [ __selected ] [] |> should equal <| _div [ Attr.selected ] [] - _div [ __shape "falco" ] [] |> should equal <| _div [ Attr.shape "falco" ] [] - _div [ __size "falco" ] [] |> should equal <| _div [ Attr.size "falco" ] [] - _div [ __sizes "falco" ] [] |> should equal <| _div [ Attr.sizes "falco" ] [] - _div [ __slot "falco" ] [] |> should equal <| _div [ Attr.slot "falco" ] [] - _div [ __span "falco" ] [] |> should equal <| _div [ Attr.span "falco" ] [] - _div [ __spellcheck "falco" ] [] |> should equal <| _div [ Attr.spellcheck "falco" ] [] - _div [ __src "falco" ] [] |> should equal <| _div [ Attr.src "falco" ] [] - _div [ __srcdoc "falco" ] [] |> should equal <| _div [ Attr.srcdoc "falco" ] [] - _div [ __srclang "falco" ] [] |> should equal <| _div [ Attr.srclang "falco" ] [] - _div [ __srcset "falco" ] [] |> should equal <| _div [ Attr.srcset "falco" ] [] - _div [ __start "falco" ] [] |> should equal <| _div [ Attr.start "falco" ] [] - _div [ __step "falco" ] [] |> should equal <| _div [ Attr.step "falco" ] [] - _div [ __style "falco" ] [] |> should equal <| _div [ Attr.style "falco" ] [] - _div [ __tabindex "falco" ] [] |> should equal <| _div [ Attr.tabindex "falco" ] [] - _div [ __target "falco" ] [] |> should equal <| _div [ Attr.target "falco" ] [] - _div [ __title "falco" ] [] |> should equal <| _div [ Attr.title "falco" ] [] - _div [ __translate "falco" ] [] |> should equal <| _div [ Attr.translate "falco" ] [] - _div [ __type "falco" ] [] |> should equal <| _div [ Attr.type' "falco" ] [] - _div [ __usemap "falco" ] [] |> should equal <| _div [ Attr.usemap "falco" ] [] - _div [ __value "falco" ] [] |> should equal <| _div [ Attr.value "falco" ] [] - _div [ __width "falco" ] [] |> should equal <| _div [ Attr.width "falco" ] [] - _div [ __wrap "falco" ] [] |> should equal <| _div [ Attr.wrap "falco" ] [] - _div [ __onabort "falco" ] [] |> should equal <| _div [ Attr.onabort "falco" ] [] - _div [ __onafterprint "falco" ] [] |> should equal <| _div [ Attr.onafterprint "falco" ] [] - _div [ __onanimationend "falco" ] [] |> should equal <| _div [ Attr.onanimationend "falco" ] [] - _div [ __onanimationiteration "falco" ] [] |> should equal <| _div [ Attr.onanimationiteration "falco" ] [] - _div [ __onanimationstart "falco" ] [] |> should equal <| _div [ Attr.onanimationstart "falco" ] [] - _div [ __onbeforeprint "falco" ] [] |> should equal <| _div [ Attr.onbeforeprint "falco" ] [] - _div [ __onbeforeunload "falco" ] [] |> should equal <| _div [ Attr.onbeforeunload "falco" ] [] - _div [ __onblur "falco" ] [] |> should equal <| _div [ Attr.onblur "falco" ] [] - _div [ __oncanplay "falco" ] [] |> should equal <| _div [ Attr.oncanplay "falco" ] [] - _div [ __oncanplaythrough "falco" ] [] |> should equal <| _div [ Attr.oncanplaythrough "falco" ] [] - _div [ __onchange "falco" ] [] |> should equal <| _div [ Attr.onchange "falco" ] [] - _div [ __onclick "falco" ] [] |> should equal <| _div [ Attr.onclick "falco" ] [] - _div [ __oncontextmenu "falco" ] [] |> should equal <| _div [ Attr.oncontextmenu "falco" ] [] - _div [ __oncopy "falco" ] [] |> should equal <| _div [ Attr.oncopy "falco" ] [] - _div [ __oncut "falco" ] [] |> should equal <| _div [ Attr.oncut "falco" ] [] - _div [ __ondblclick "falco" ] [] |> should equal <| _div [ Attr.ondblclick "falco" ] [] - _div [ __ondrag "falco" ] [] |> should equal <| _div [ Attr.ondrag "falco" ] [] - _div [ __ondragend "falco" ] [] |> should equal <| _div [ Attr.ondragend "falco" ] [] - _div [ __ondragenter "falco" ] [] |> should equal <| _div [ Attr.ondragenter "falco" ] [] - _div [ __ondragleave "falco" ] [] |> should equal <| _div [ Attr.ondragleave "falco" ] [] - _div [ __ondragover "falco" ] [] |> should equal <| _div [ Attr.ondragover "falco" ] [] - _div [ __ondragstart "falco" ] [] |> should equal <| _div [ Attr.ondragstart "falco" ] [] - _div [ __ondrop "falco" ] [] |> should equal <| _div [ Attr.ondrop "falco" ] [] - _div [ __ondurationchange "falco" ] [] |> should equal <| _div [ Attr.ondurationchange "falco" ] [] - _div [ __onemptied "falco" ] [] |> should equal <| _div [ Attr.onemptied "falco" ] [] - _div [ __onended "falco" ] [] |> should equal <| _div [ Attr.onended "falco" ] [] - _div [ __onerror "falco" ] [] |> should equal <| _div [ Attr.onerror "falco" ] [] - _div [ __onfocus "falco" ] [] |> should equal <| _div [ Attr.onfocus "falco" ] [] - _div [ __onformchange "falco" ] [] |> should equal <| _div [ Attr.onformchange "falco" ] [] - _div [ __onforminput "falco" ] [] |> should equal <| _div [ Attr.onforminput "falco" ] [] - _div [ __onfocusin "falco" ] [] |> should equal <| _div [ Attr.onfocusin "falco" ] [] - _div [ __onfocusout "falco" ] [] |> should equal <| _div [ Attr.onfocusout "falco" ] [] - _div [ __onfullscreenchange "falco" ] [] |> should equal <| _div [ Attr.onfullscreenchange "falco" ] [] - _div [ __onfullscreenerror "falco" ] [] |> should equal <| _div [ Attr.onfullscreenerror "falco" ] [] - _div [ __onhashchange "falco" ] [] |> should equal <| _div [ Attr.onhashchange "falco" ] [] - _div [ __oninput "falco" ] [] |> should equal <| _div [ Attr.oninput "falco" ] [] - _div [ __oninvalid "falco" ] [] |> should equal <| _div [ Attr.oninvalid "falco" ] [] - _div [ __onkeydown "falco" ] [] |> should equal <| _div [ Attr.onkeydown "falco" ] [] - _div [ __onkeypress "falco" ] [] |> should equal <| _div [ Attr.onkeypress "falco" ] [] - _div [ __onkeyup "falco" ] [] |> should equal <| _div [ Attr.onkeyup "falco" ] [] - _div [ __onload "falco" ] [] |> should equal <| _div [ Attr.onload "falco" ] [] - _div [ __onloadeddata "falco" ] [] |> should equal <| _div [ Attr.onloadeddata "falco" ] [] - _div [ __onloadedmetadata "falco" ] [] |> should equal <| _div [ Attr.onloadedmetadata "falco" ] [] - _div [ __onloadstart "falco" ] [] |> should equal <| _div [ Attr.onloadstart "falco" ] [] - _div [ __onmessage "falco" ] [] |> should equal <| _div [ Attr.onmessage "falco" ] [] - _div [ __onmousedown "falco" ] [] |> should equal <| _div [ Attr.onmousedown "falco" ] [] - _div [ __onmouseenter "falco" ] [] |> should equal <| _div [ Attr.onmouseenter "falco" ] [] - _div [ __onmouseleave "falco" ] [] |> should equal <| _div [ Attr.onmouseleave "falco" ] [] - _div [ __onmousemove "falco" ] [] |> should equal <| _div [ Attr.onmousemove "falco" ] [] - _div [ __onmouseover "falco" ] [] |> should equal <| _div [ Attr.onmouseover "falco" ] [] - _div [ __onmouseout "falco" ] [] |> should equal <| _div [ Attr.onmouseout "falco" ] [] - _div [ __onmouseup "falco" ] [] |> should equal <| _div [ Attr.onmouseup "falco" ] [] - _div [ __onmousewheel "falco" ] [] |> should equal <| _div [ Attr.onmousewheel "falco" ] [] - _div [ __onoffline "falco" ] [] |> should equal <| _div [ Attr.onoffline "falco" ] [] - _div [ __ononline "falco" ] [] |> should equal <| _div [ Attr.ononline "falco" ] [] - _div [ __onopen "falco" ] [] |> should equal <| _div [ Attr.onopen "falco" ] [] - _div [ __onpagehide "falco" ] [] |> should equal <| _div [ Attr.onpagehide "falco" ] [] - _div [ __onpageshow "falco" ] [] |> should equal <| _div [ Attr.onpageshow "falco" ] [] - _div [ __onpaste "falco" ] [] |> should equal <| _div [ Attr.onpaste "falco" ] [] - _div [ __onpause "falco" ] [] |> should equal <| _div [ Attr.onpause "falco" ] [] - _div [ __onplay "falco" ] [] |> should equal <| _div [ Attr.onplay "falco" ] [] - _div [ __onplaying "falco" ] [] |> should equal <| _div [ Attr.onplaying "falco" ] [] - _div [ __onpopstate "falco" ] [] |> should equal <| _div [ Attr.onpopstate "falco" ] [] - _div [ __onprogress "falco" ] [] |> should equal <| _div [ Attr.onprogress "falco" ] [] - _div [ __onratechange "falco" ] [] |> should equal <| _div [ Attr.onratechange "falco" ] [] - _div [ __onresize "falco" ] [] |> should equal <| _div [ Attr.onresize "falco" ] [] - _div [ __onreset "falco" ] [] |> should equal <| _div [ Attr.onreset "falco" ] [] - _div [ __onscroll "falco" ] [] |> should equal <| _div [ Attr.onscroll "falco" ] [] - _div [ __onsearch "falco" ] [] |> should equal <| _div [ Attr.onsearch "falco" ] [] - _div [ __onseeked "falco" ] [] |> should equal <| _div [ Attr.onseeked "falco" ] [] - _div [ __onseeking "falco" ] [] |> should equal <| _div [ Attr.onseeking "falco" ] [] - _div [ __onselect "falco" ] [] |> should equal <| _div [ Attr.onselect "falco" ] [] - _div [ __onshow "falco" ] [] |> should equal <| _div [ Attr.onshow "falco" ] [] - _div [ __onstalled "falco" ] [] |> should equal <| _div [ Attr.onstalled "falco" ] [] - _div [ __onstorage "falco" ] [] |> should equal <| _div [ Attr.onstorage "falco" ] [] - _div [ __onsubmit "falco" ] [] |> should equal <| _div [ Attr.onsubmit "falco" ] [] - _div [ __onsuspend "falco" ] [] |> should equal <| _div [ Attr.onsuspend "falco" ] [] - _div [ __ontimeupdate "falco" ] [] |> should equal <| _div [ Attr.ontimeupdate "falco" ] [] - _div [ __ontoggle "falco" ] [] |> should equal <| _div [ Attr.ontoggle "falco" ] [] - _div [ __ontouchcancel "falco" ] [] |> should equal <| _div [ Attr.ontouchcancel "falco" ] [] - _div [ __ontouchend "falco" ] [] |> should equal <| _div [ Attr.ontouchend "falco" ] [] - _div [ __ontouchmove "falco" ] [] |> should equal <| _div [ Attr.ontouchmove "falco" ] [] - _div [ __ontouchstart "falco" ] [] |> should equal <| _div [ Attr.ontouchstart "falco" ] [] - _div [ __ontransitionend "falco" ] [] |> should equal <| _div [ Attr.ontransitionend "falco" ] [] - _div [ __onunload "falco" ] [] |> should equal <| _div [ Attr.onunload "falco" ] [] - _div [ __onvolumechange "falco" ] [] |> should equal <| _div [ Attr.onvolumechange "falco" ] [] - _div [ __onwaiting "falco" ] [] |> should equal <| _div [ Attr.onwaiting "falco" ] [] - _div [ __onwheel "falco" ] [] |> should equal <| _div [ Attr.onwheel "falco" ] [] + _div [ _accept_ "falco" ] [] |> should equal <| _div [ Attr.accept "falco" ] [] + _div [ _acceptCharset_ "falco" ] [] |> should equal <| _div [ Attr.acceptCharset "falco" ] [] + _div [ _accesskey_ "falco" ] [] |> should equal <| _div [ Attr.accesskey "falco" ] [] + _div [ _action_ "falco" ] [] |> should equal <| _div [ Attr.action "falco" ] [] + _div [ _align_ "falco" ] [] |> should equal <| _div [ Attr.align "falco" ] [] + _div [ _allow_ "falco" ] [] |> should equal <| _div [ Attr.allow "falco" ] [] + _div [ _alt_ "falco" ] [] |> should equal <| _div [ Attr.alt "falco" ] [] + _div [ _async_ ] [] |> should equal <| _div [ Attr.async ] [] + _div [ _autocapitalize_ "falco" ] [] |> should equal <| _div [ Attr.autocapitalize "falco" ] [] + _div [ _autocomplete_ "falco" ] [] |> should equal <| _div [ Attr.autocomplete "falco" ] [] + _div [ _autofocus_ ] [] |> should equal <| _div [ Attr.autofocus ] [] + _div [ _autoplay_ ] [] |> should equal <| _div [ Attr.autoplay ] [] + _div [ _background_ "falco" ] [] |> should equal <| _div [ Attr.background "falco" ] [] + _div [ _bgcolor_ "falco" ] [] |> should equal <| _div [ Attr.bgcolor "falco" ] [] + _div [ _border_ "falco" ] [] |> should equal <| _div [ Attr.border "falco" ] [] + _div [ _buffered_ "falco" ] [] |> should equal <| _div [ Attr.buffered "falco" ] [] + _div [ _capture_ "falco" ] [] |> should equal <| _div [ Attr.capture "falco" ] [] + _div [ _challenge_ "falco" ] [] |> should equal <| _div [ Attr.challenge "falco" ] [] + _div [ _charset_ "falco" ] [] |> should equal <| _div [ Attr.charset "falco" ] [] + _div [ _checked_ ] [] |> should equal <| _div [ Attr.checked' ] [] + _div [ _cite_ "falco" ] [] |> should equal <| _div [ Attr.cite "falco" ] [] + _div [ _class_ "falco" ] [] |> should equal <| _div [ Attr.class' "falco" ] [] + _div [ _code_ "falco" ] [] |> should equal <| _div [ Attr.code "falco" ] [] + _div [ _codebase_ "falco" ] [] |> should equal <| _div [ Attr.codebase "falco" ] [] + _div [ _color_ "falco" ] [] |> should equal <| _div [ Attr.color "falco" ] [] + _div [ _cols_ "falco" ] [] |> should equal <| _div [ Attr.cols "falco" ] [] + _div [ _colspan_ "falco" ] [] |> should equal <| _div [ Attr.colspan "falco" ] [] + _div [ _content_ "falco" ] [] |> should equal <| _div [ Attr.content "falco" ] [] + _div [ _contenteditable_ "falco" ] [] |> should equal <| _div [ Attr.contenteditable "falco" ] [] + _div [ _contextmenu_ "falco" ] [] |> should equal <| _div [ Attr.contextmenu "falco" ] [] + _div [ _controls_ ] [] |> should equal <| _div [ Attr.controls ] [] + _div [ _coords_ "falco" ] [] |> should equal <| _div [ Attr.coords "falco" ] [] + _div [ _crossorigin_ "falco" ] [] |> should equal <| _div [ Attr.crossorigin "falco" ] [] + _div [ _csp_ "falco" ] [] |> should equal <| _div [ Attr.csp "falco" ] [] + _div [ _data_ "falco" ] [] |> should equal <| _div [ Attr.data "falco" ] [] + _div [ _dataAttr_ "value" "falco" ] [] |> should equal <| _div [ Attr.dataAttr "value" "falco" ] [] + _div [ _datetime_ "falco" ] [] |> should equal <| _div [ Attr.datetime "falco" ] [] + _div [ _decoding_ "falco" ] [] |> should equal <| _div [ Attr.decoding "falco" ] [] + _div [ _default_ ] [] |> should equal <| _div [ Attr.default' ] [] + _div [ _defer_ ] [] |> should equal <| _div [ Attr.defer ] [] + _div [ _dir_ "falco" ] [] |> should equal <| _div [ Attr.dir "falco" ] [] + _div [ _dirname_ "falco" ] [] |> should equal <| _div [ Attr.dirname "falco" ] [] + _div [ _disabled_ ] [] |> should equal <| _div [ Attr.disabled ] [] + _div [ _download_ "falco" ] [] |> should equal <| _div [ Attr.download "falco" ] [] + _div [ _draggable_ "falco" ] [] |> should equal <| _div [ Attr.draggable "falco" ] [] + _div [ _enctype_ "falco" ] [] |> should equal <| _div [ Attr.enctype "falco" ] [] + _div [ _enterkeyhint_ "falco" ] [] |> should equal <| _div [ Attr.enterkeyhint "falco" ] [] + _div [ _for_ "falco" ] [] |> should equal <| _div [ Attr.for' "falco" ] [] + _div [ _form_ "falco" ] [] |> should equal <| _div [ Attr.form "falco" ] [] + _div [ _formaction_ "falco" ] [] |> should equal <| _div [ Attr.formaction "falco" ] [] + _div [ _formenctype_ "falco" ] [] |> should equal <| _div [ Attr.formenctype "falco" ] [] + _div [ _formmethod_ "falco" ] [] |> should equal <| _div [ Attr.formmethod "falco" ] [] + _div [ _formnovalidate_ ] [] |> should equal <| _div [ Attr.formnovalidate ] [] + _div [ _formtarget_ "falco" ] [] |> should equal <| _div [ Attr.formtarget "falco" ] [] + _div [ _headers_ "falco" ] [] |> should equal <| _div [ Attr.headers "falco" ] [] + _div [ _height_ "falco" ] [] |> should equal <| _div [ Attr.height "falco" ] [] + _div [ _hidden_ ] [] |> should equal <| _div [ Attr.hidden ] [] + _div [ _high_ "falco" ] [] |> should equal <| _div [ Attr.high "falco" ] [] + _div [ _href_ "falco" ] [] |> should equal <| _div [ Attr.href "falco" ] [] + _div [ _hreflang_ "falco" ] [] |> should equal <| _div [ Attr.hreflang "falco" ] [] + _div [ _httpEquiv_ "falco" ] [] |> should equal <| _div [ Attr.httpEquiv "falco" ] [] + _div [ _icon_ "falco" ] [] |> should equal <| _div [ Attr.icon "falco" ] [] + _div [ _id_ "falco" ] [] |> should equal <| _div [ Attr.id "falco" ] [] + _div [ _importance_ "falco" ] [] |> should equal <| _div [ Attr.importance "falco" ] [] + _div [ _integrity_ "falco" ] [] |> should equal <| _div [ Attr.integrity "falco" ] [] + _div [ _inputmode_ "falco" ] [] |> should equal <| _div [ Attr.inputmode "falco" ] [] + _div [ _ismap_ ] [] |> should equal <| _div [ Attr.ismap ] [] + _div [ _itemprop_ "falco" ] [] |> should equal <| _div [ Attr.itemprop "falco" ] [] + _div [ _keytype_ "falco" ] [] |> should equal <| _div [ Attr.keytype "falco" ] [] + _div [ _kind_ "falco" ] [] |> should equal <| _div [ Attr.kind "falco" ] [] + _div [ _label_ "falco" ] [] |> should equal <| _div [ Attr.label "falco" ] [] + _div [ _lang_ "falco" ] [] |> should equal <| _div [ Attr.lang "falco" ] [] + _div [ _loading_ "falco" ] [] |> should equal <| _div [ Attr.loading "falco" ] [] + _div [ _list_ "falco" ] [] |> should equal <| _div [ Attr.list "falco" ] [] + _div [ _loop_ ] [] |> should equal <| _div [ Attr.loop ] [] + _div [ _low_ "falco" ] [] |> should equal <| _div [ Attr.low "falco" ] [] + _div [ _max_ "falco" ] [] |> should equal <| _div [ Attr.max "falco" ] [] + _div [ _maxlength_ "falco" ] [] |> should equal <| _div [ Attr.maxlength "falco" ] [] + _div [ _minlength_ "falco" ] [] |> should equal <| _div [ Attr.minlength "falco" ] [] + _div [ _media_ "falco" ] [] |> should equal <| _div [ Attr.media "falco" ] [] + _div [ _method_ "falco" ] [] |> should equal <| _div [ Attr.method "falco" ] [] + _div [ _min_ "falco" ] [] |> should equal <| _div [ Attr.min "falco" ] [] + _div [ _multiple_ ] [] |> should equal <| _div [ Attr.multiple ] [] + _div [ _muted_ ] [] |> should equal <| _div [ Attr.muted ] [] + _div [ _name_ "falco" ] [] |> should equal <| _div [ Attr.name "falco" ] [] + _div [ _novalidate_ ] [] |> should equal <| _div [ Attr.novalidate ] [] + _div [ _open_ "falco" ] [] |> should equal <| _div [ Attr.open' "falco" ] [] + _div [ _optimum_ "falco" ] [] |> should equal <| _div [ Attr.optimum "falco" ] [] + _div [ _pattern_ "falco" ] [] |> should equal <| _div [ Attr.pattern "falco" ] [] + _div [ _ping_ "falco" ] [] |> should equal <| _div [ Attr.ping "falco" ] [] + _div [ _placeholder_ "falco" ] [] |> should equal <| _div [ Attr.placeholder "falco" ] [] + _div [ _poster_ "falco" ] [] |> should equal <| _div [ Attr.poster "falco" ] [] + _div [ _preload_ "falco" ] [] |> should equal <| _div [ Attr.preload "falco" ] [] + _div [ _radiogroup_ "falco" ] [] |> should equal <| _div [ Attr.radiogroup "falco" ] [] + _div [ _readonly_ ] [] |> should equal <| _div [ Attr.readonly ] [] + _div [ _referrerpolicy_ "falco" ] [] |> should equal <| _div [ Attr.referrerpolicy "falco" ] [] + _div [ _rel_ "falco" ] [] |> should equal <| _div [ Attr.rel "falco" ] [] + _div [ _required_ ] [] |> should equal <| _div [ Attr.required ] [] + _div [ _reversed_ ] [] |> should equal <| _div [ Attr.reversed ] [] + _div [ _role_ "falco" ] [] |> should equal <| _div [ Attr.role "falco" ] [] + _div [ _rows_ "falco" ] [] |> should equal <| _div [ Attr.rows "falco" ] [] + _div [ _rowspan_ "falco" ] [] |> should equal <| _div [ Attr.rowspan "falco" ] [] + _div [ _sandbox_ "falco" ] [] |> should equal <| _div [ Attr.sandbox "falco" ] [] + _div [ _scope_ "falco" ] [] |> should equal <| _div [ Attr.scope "falco" ] [] + _div [ _selected_ ] [] |> should equal <| _div [ Attr.selected ] [] + _div [ _shape_ "falco" ] [] |> should equal <| _div [ Attr.shape "falco" ] [] + _div [ _size_ "falco" ] [] |> should equal <| _div [ Attr.size "falco" ] [] + _div [ _sizes_ "falco" ] [] |> should equal <| _div [ Attr.sizes "falco" ] [] + _div [ _slot_ "falco" ] [] |> should equal <| _div [ Attr.slot "falco" ] [] + _div [ _span_ "falco" ] [] |> should equal <| _div [ Attr.span "falco" ] [] + _div [ _spellcheck_ "falco" ] [] |> should equal <| _div [ Attr.spellcheck "falco" ] [] + _div [ _src_ "falco" ] [] |> should equal <| _div [ Attr.src "falco" ] [] + _div [ _srcdoc_ "falco" ] [] |> should equal <| _div [ Attr.srcdoc "falco" ] [] + _div [ _srclang_ "falco" ] [] |> should equal <| _div [ Attr.srclang "falco" ] [] + _div [ _srcset_ "falco" ] [] |> should equal <| _div [ Attr.srcset "falco" ] [] + _div [ _start_ "falco" ] [] |> should equal <| _div [ Attr.start "falco" ] [] + _div [ _step_ "falco" ] [] |> should equal <| _div [ Attr.step "falco" ] [] + _div [ _style_ "falco" ] [] |> should equal <| _div [ Attr.style "falco" ] [] + _div [ _tabindex_ "falco" ] [] |> should equal <| _div [ Attr.tabindex "falco" ] [] + _div [ _target_ "falco" ] [] |> should equal <| _div [ Attr.target "falco" ] [] + _div [ _title_ "falco" ] [] |> should equal <| _div [ Attr.title "falco" ] [] + _div [ _translate_ "falco" ] [] |> should equal <| _div [ Attr.translate "falco" ] [] + _div [ _type_ "falco" ] [] |> should equal <| _div [ Attr.type' "falco" ] [] + _div [ _usemap_ "falco" ] [] |> should equal <| _div [ Attr.usemap "falco" ] [] + _div [ _value_ "falco" ] [] |> should equal <| _div [ Attr.value "falco" ] [] + _div [ _width_ "falco" ] [] |> should equal <| _div [ Attr.width "falco" ] [] + _div [ _wrap_ "falco" ] [] |> should equal <| _div [ Attr.wrap "falco" ] [] + _div [ _onabort_ "falco" ] [] |> should equal <| _div [ Attr.onabort "falco" ] [] + _div [ _onafterprint_ "falco" ] [] |> should equal <| _div [ Attr.onafterprint "falco" ] [] + _div [ _onanimationend_ "falco" ] [] |> should equal <| _div [ Attr.onanimationend "falco" ] [] + _div [ _onanimationiteration_ "falco" ] [] |> should equal <| _div [ Attr.onanimationiteration "falco" ] [] + _div [ _onanimationstart_ "falco" ] [] |> should equal <| _div [ Attr.onanimationstart "falco" ] [] + _div [ _onbeforeprint_ "falco" ] [] |> should equal <| _div [ Attr.onbeforeprint "falco" ] [] + _div [ _onbeforeunload_ "falco" ] [] |> should equal <| _div [ Attr.onbeforeunload "falco" ] [] + _div [ _onblur_ "falco" ] [] |> should equal <| _div [ Attr.onblur "falco" ] [] + _div [ _oncanplay_ "falco" ] [] |> should equal <| _div [ Attr.oncanplay "falco" ] [] + _div [ _oncanplaythrough_ "falco" ] [] |> should equal <| _div [ Attr.oncanplaythrough "falco" ] [] + _div [ _onchange_ "falco" ] [] |> should equal <| _div [ Attr.onchange "falco" ] [] + _div [ _onclick_ "falco" ] [] |> should equal <| _div [ Attr.onclick "falco" ] [] + _div [ _oncontextmenu_ "falco" ] [] |> should equal <| _div [ Attr.oncontextmenu "falco" ] [] + _div [ _oncopy_ "falco" ] [] |> should equal <| _div [ Attr.oncopy "falco" ] [] + _div [ _oncut_ "falco" ] [] |> should equal <| _div [ Attr.oncut "falco" ] [] + _div [ _ondblclick_ "falco" ] [] |> should equal <| _div [ Attr.ondblclick "falco" ] [] + _div [ _ondrag_ "falco" ] [] |> should equal <| _div [ Attr.ondrag "falco" ] [] + _div [ _ondragend_ "falco" ] [] |> should equal <| _div [ Attr.ondragend "falco" ] [] + _div [ _ondragenter_ "falco" ] [] |> should equal <| _div [ Attr.ondragenter "falco" ] [] + _div [ _ondragleave_ "falco" ] [] |> should equal <| _div [ Attr.ondragleave "falco" ] [] + _div [ _ondragover_ "falco" ] [] |> should equal <| _div [ Attr.ondragover "falco" ] [] + _div [ _ondragstart_ "falco" ] [] |> should equal <| _div [ Attr.ondragstart "falco" ] [] + _div [ _ondrop_ "falco" ] [] |> should equal <| _div [ Attr.ondrop "falco" ] [] + _div [ _ondurationchange_ "falco" ] [] |> should equal <| _div [ Attr.ondurationchange "falco" ] [] + _div [ _onemptied_ "falco" ] [] |> should equal <| _div [ Attr.onemptied "falco" ] [] + _div [ _onended_ "falco" ] [] |> should equal <| _div [ Attr.onended "falco" ] [] + _div [ _onerror_ "falco" ] [] |> should equal <| _div [ Attr.onerror "falco" ] [] + _div [ _onfocus_ "falco" ] [] |> should equal <| _div [ Attr.onfocus "falco" ] [] + _div [ _onformchange_ "falco" ] [] |> should equal <| _div [ Attr.onformchange "falco" ] [] + _div [ _onforminput_ "falco" ] [] |> should equal <| _div [ Attr.onforminput "falco" ] [] + _div [ _onfocusin_ "falco" ] [] |> should equal <| _div [ Attr.onfocusin "falco" ] [] + _div [ _onfocusout_ "falco" ] [] |> should equal <| _div [ Attr.onfocusout "falco" ] [] + _div [ _onfullscreenchange_ "falco" ] [] |> should equal <| _div [ Attr.onfullscreenchange "falco" ] [] + _div [ _onfullscreenerror_ "falco" ] [] |> should equal <| _div [ Attr.onfullscreenerror "falco" ] [] + _div [ _onhashchange_ "falco" ] [] |> should equal <| _div [ Attr.onhashchange "falco" ] [] + _div [ _oninput_ "falco" ] [] |> should equal <| _div [ Attr.oninput "falco" ] [] + _div [ _oninvalid_ "falco" ] [] |> should equal <| _div [ Attr.oninvalid "falco" ] [] + _div [ _onkeydown_ "falco" ] [] |> should equal <| _div [ Attr.onkeydown "falco" ] [] + _div [ _onkeypress_ "falco" ] [] |> should equal <| _div [ Attr.onkeypress "falco" ] [] + _div [ _onkeyup_ "falco" ] [] |> should equal <| _div [ Attr.onkeyup "falco" ] [] + _div [ _onload_ "falco" ] [] |> should equal <| _div [ Attr.onload "falco" ] [] + _div [ _onloadeddata_ "falco" ] [] |> should equal <| _div [ Attr.onloadeddata "falco" ] [] + _div [ _onloadedmetadata_ "falco" ] [] |> should equal <| _div [ Attr.onloadedmetadata "falco" ] [] + _div [ _onloadstart_ "falco" ] [] |> should equal <| _div [ Attr.onloadstart "falco" ] [] + _div [ _onmessage_ "falco" ] [] |> should equal <| _div [ Attr.onmessage "falco" ] [] + _div [ _onmousedown_ "falco" ] [] |> should equal <| _div [ Attr.onmousedown "falco" ] [] + _div [ _onmouseenter_ "falco" ] [] |> should equal <| _div [ Attr.onmouseenter "falco" ] [] + _div [ _onmouseleave_ "falco" ] [] |> should equal <| _div [ Attr.onmouseleave "falco" ] [] + _div [ _onmousemove_ "falco" ] [] |> should equal <| _div [ Attr.onmousemove "falco" ] [] + _div [ _onmouseover_ "falco" ] [] |> should equal <| _div [ Attr.onmouseover "falco" ] [] + _div [ _onmouseout_ "falco" ] [] |> should equal <| _div [ Attr.onmouseout "falco" ] [] + _div [ _onmouseup_ "falco" ] [] |> should equal <| _div [ Attr.onmouseup "falco" ] [] + _div [ _onmousewheel_ "falco" ] [] |> should equal <| _div [ Attr.onmousewheel "falco" ] [] + _div [ _onoffline_ "falco" ] [] |> should equal <| _div [ Attr.onoffline "falco" ] [] + _div [ _ononline_ "falco" ] [] |> should equal <| _div [ Attr.ononline "falco" ] [] + _div [ _onopen_ "falco" ] [] |> should equal <| _div [ Attr.onopen "falco" ] [] + _div [ _onpagehide_ "falco" ] [] |> should equal <| _div [ Attr.onpagehide "falco" ] [] + _div [ _onpageshow_ "falco" ] [] |> should equal <| _div [ Attr.onpageshow "falco" ] [] + _div [ _onpaste_ "falco" ] [] |> should equal <| _div [ Attr.onpaste "falco" ] [] + _div [ _onpause_ "falco" ] [] |> should equal <| _div [ Attr.onpause "falco" ] [] + _div [ _onplay_ "falco" ] [] |> should equal <| _div [ Attr.onplay "falco" ] [] + _div [ _onplaying_ "falco" ] [] |> should equal <| _div [ Attr.onplaying "falco" ] [] + _div [ _onpopstate_ "falco" ] [] |> should equal <| _div [ Attr.onpopstate "falco" ] [] + _div [ _onprogress_ "falco" ] [] |> should equal <| _div [ Attr.onprogress "falco" ] [] + _div [ _onratechange_ "falco" ] [] |> should equal <| _div [ Attr.onratechange "falco" ] [] + _div [ _onresize_ "falco" ] [] |> should equal <| _div [ Attr.onresize "falco" ] [] + _div [ _onreset_ "falco" ] [] |> should equal <| _div [ Attr.onreset "falco" ] [] + _div [ _onscroll_ "falco" ] [] |> should equal <| _div [ Attr.onscroll "falco" ] [] + _div [ _onsearch_ "falco" ] [] |> should equal <| _div [ Attr.onsearch "falco" ] [] + _div [ _onseeked_ "falco" ] [] |> should equal <| _div [ Attr.onseeked "falco" ] [] + _div [ _onseeking_ "falco" ] [] |> should equal <| _div [ Attr.onseeking "falco" ] [] + _div [ _onselect_ "falco" ] [] |> should equal <| _div [ Attr.onselect "falco" ] [] + _div [ _onshow_ "falco" ] [] |> should equal <| _div [ Attr.onshow "falco" ] [] + _div [ _onstalled_ "falco" ] [] |> should equal <| _div [ Attr.onstalled "falco" ] [] + _div [ _onstorage_ "falco" ] [] |> should equal <| _div [ Attr.onstorage "falco" ] [] + _div [ _onsubmit_ "falco" ] [] |> should equal <| _div [ Attr.onsubmit "falco" ] [] + _div [ _onsuspend_ "falco" ] [] |> should equal <| _div [ Attr.onsuspend "falco" ] [] + _div [ _ontimeupdate_ "falco" ] [] |> should equal <| _div [ Attr.ontimeupdate "falco" ] [] + _div [ _ontoggle_ "falco" ] [] |> should equal <| _div [ Attr.ontoggle "falco" ] [] + _div [ _ontouchcancel_ "falco" ] [] |> should equal <| _div [ Attr.ontouchcancel "falco" ] [] + _div [ _ontouchend_ "falco" ] [] |> should equal <| _div [ Attr.ontouchend "falco" ] [] + _div [ _ontouchmove_ "falco" ] [] |> should equal <| _div [ Attr.ontouchmove "falco" ] [] + _div [ _ontouchstart_ "falco" ] [] |> should equal <| _div [ Attr.ontouchstart "falco" ] [] + _div [ _ontransitionend_ "falco" ] [] |> should equal <| _div [ Attr.ontransitionend "falco" ] [] + _div [ _onunload_ "falco" ] [] |> should equal <| _div [ Attr.onunload "falco" ] [] + _div [ _onvolumechange_ "falco" ] [] |> should equal <| _div [ Attr.onvolumechange "falco" ] [] + _div [ _onwaiting_ "falco" ] [] |> should equal <| _div [ Attr.onwaiting "falco" ] [] + _div [ _onwheel_ "falco" ] [] |> should equal <| _div [ Attr.onwheel "falco" ] []