diff --git a/Build.ps1 b/Build.ps1 index d9d42a7..9cefc85 100644 --- a/Build.ps1 +++ b/Build.ps1 @@ -9,7 +9,7 @@ param ( [string] $Configuration = "Debug", [switch] $NoRestore, - + [switch] $Clean ) @@ -24,24 +24,21 @@ $srcDir = Join-Path -Path $rootDir -ChildPath 'src' $testDir = Join-Path -Path $rootDir -ChildPath 'test' switch ($Action) { - "Test" { $projectdir = Join-Path -Path $testDir -ChildPath 'Falco.Markup.Tests' } - "Pack" { $projectDir = Join-Path -Path $srcDir -ChildPath 'Falco.Markup' } - "BuildSite" { $projectDir = Join-Path -Path $rootDir -ChildPath 'site' } - "DevelopSite" { $projectDir = Join-Path -Path $rootDir -ChildPath 'site' } - Default { $projectDir = Join-Path -Path $srcDir -ChildPath 'Falco.Markup' } + "Test" { $projectdir = Join-Path -Path $testDir -ChildPath 'Falco.Tests' } + "Pack" { $projectDir = Join-Path -Path $srcDir -ChildPath 'Falco' } + Default { $projectDir = Join-Path -Path $srcDir -ChildPath 'Falco' } } if(!$NoRestore.IsPresent) { RunCommand "dotnet restore $projectDir --force --force-evaluate --nologo --verbosity quiet" } -if ($Clean) -{ +if ($Clean) { RunCommand "dotnet clean $projectDir -c $Configuration --nologo --verbosity quiet" } switch ($Action) { - "Test" { RunCommand "dotnet test `"$projectDir`"" } - "Pack" { RunCommand "dotnet pack `"$projectDir`" -c $Configuration --include-symbols --include-source" } - Default { RunCommand "dotnet build `"$projectDir`" -c $Configuration" } -} \ No newline at end of file + "Test" { RunCommand "dotnet test `"$projectDir`"" } + "Pack" { RunCommand "dotnet pack `"$projectDir`" -c $Configuration --include-symbols --include-source" } + Default { RunCommand "dotnet build `"$projectDir`" -c $Configuration" } +} 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/Attr.fs b/src/Falco.Markup/Attr.fs index d373348..547d75e 100644 --- a/src/Falco.Markup/Attr.fs +++ b/src/Falco.Markup/Attr.fs @@ -18,7 +18,7 @@ module Attr = "class", " " "style", "; " "accept", ", " ] - + /// Merge two XmlAttribute lists let merge (attrs1 : XmlAttribute list) (attrs2 : XmlAttribute list) = @@ -446,7 +446,7 @@ module Attr = /// Alias for `enctype=multipart/form-data` let enctypeMultipart = enctype "multipart/form-data" - + // Alias for `method=post` let methodPost = method "post" @@ -470,7 +470,7 @@ module Attr = /// Alias for `target=_unfencedTop` let targetUnfencedTop = target "_unfencedTop" - + /// Alias for `type=button` let typeButton = type' "button" @@ -545,7 +545,7 @@ module Attr = value (x.ToString()) /// Alias for `value={str}` by invoking `_.ToString(format)` on input - let inline valueStringf format (x : ^T when ^T : (member ToString : string -> string)) = + let inline valueStringf format (x : ^T when ^T : (member ToString : string -> string)) = value (x.ToString(format)) /// Alias for `Attr.valueStringf "yyyy-MM-dd" dt` @@ -553,27 +553,27 @@ module Attr = valueStringf "yyyy-MM-dd" dt /// Alias for `Attr.valueStringf "s" dt` - let valueDatetimeLocal (dt : DateTime) = - valueStringf "s" dt + let valueDatetimeLocal (dt : DateTime) = + valueStringf "s" dt /// Alias for `Attr.valueStringf "yyyy-MM"` let valueMonth (dt : DateTime) = valueStringf "yyyy-MM" dt - /// Alias for `Attr.valueStringf "hh\:mm" time` - let valueTime (time : TimeSpan) = + /// Alias for `Attr.valueStringf "hh\:mm" time` + let valueTime (time : TimeSpan) = valueStringf "hh\:mm" time - - let private cal = System.Globalization.GregorianCalendar(GregorianCalendarTypes.USEnglish) + + let private cal = GregorianCalendar(GregorianCalendarTypes.USEnglish) /// Alias for `value={yyyy-W#}` (ex: `value=1986-W50`) - let valueWeek (dt : DateTime) = + let valueWeek (dt : DateTime) = let wk = cal.GetWeekOfYear(dt, CalendarWeekRule.FirstDay, DayOfWeek.Monday).ToString("00") let yr = dt.ToString("yyyy") value (sprintf "%s-W%s" yr wk) - + /// Invoke `fn` if `Some` otherwise return `value=""` - let valueOption fn opt = + let valueOption fn opt = match opt with Some x -> fn x | None -> valueEmpty // @@ -841,4 +841,4 @@ module Attr = let onwaiting = create "onwaiting" /// `wheel={value}` event - let onwheel = create "wheel" \ No newline at end of file + let onwheel = create "wheel" diff --git a/src/Falco.Markup/Falco.Markup.fsproj b/src/Falco.Markup/Falco.Markup.fsproj index 1e01d2f..7070faa 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..58b7f50 --- /dev/null +++ b/src/Falco.Markup/Html.fs @@ -0,0 +1,408 @@ +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 + let inline _link attr = Elem.link attr + let inline _meta attr = Elem.meta attr + let inline _style attr content = Elem.style attr content + let inline _title attr content = Elem.title attr content + let inline _body attr content = Elem.body attr content + let inline _address attr content = Elem.address attr content + let inline _article attr content = Elem.article attr content + let inline _aside attr content = Elem.aside attr content + let inline _footer attr content = Elem.footer attr content + let inline _header attr content = Elem.header attr content + let inline _h1 attr content = Elem.h1 attr content + let inline _h2 attr content = Elem.h2 attr content + let inline _h3 attr content = Elem.h3 attr content + let inline _h4 attr content = Elem.h4 attr content + let inline _h5 attr content = Elem.h5 attr content + let inline _h6 attr content = Elem.h6 attr content + let inline _main attr content = Elem.main attr content + let inline _nav attr content = Elem.nav attr content + let inline _section attr content = Elem.section attr content + let inline _blockquote attr content = Elem.blockquote attr content + let inline _dd attr content = Elem.dd attr content + let inline _div attr content = Elem.div attr content + let inline _dl attr content = Elem.dl attr content + let inline _dt attr content = Elem.dt attr content + let inline _figcaption attr content = Elem.figcaption attr content + let inline _figure attr content = Elem.figure attr content + let inline _hr attr = Elem.hr attr + let inline _li attr content = Elem.li attr content + let inline _menu attr content = Elem.menu attr content + let inline _ol attr content = Elem.ol attr content + let inline _p attr content = Elem.p attr content + let inline _pre attr content = Elem.pre attr content + let inline _ul attr content = Elem.ul attr content + let inline _a attr content = Elem.a attr content + let inline _abbr attr content = Elem.abbr attr content + let inline _b attr content = Elem.b attr content + let inline _bdi attr content = Elem.bdi attr content + let inline _bdo attr content = Elem.bdo attr content + let inline _br attr = Elem.br attr + let inline _cite attr content = Elem.cite attr content + let inline _code attr content = Elem.code attr content + let inline _data attr content = Elem.data attr content + let inline _dfn attr content = Elem.dfn attr content + let inline _em attr content = Elem.em attr content + let inline _i attr content = Elem.i attr content + let inline _kbd attr content = Elem.kbd attr content + let inline _mark attr content = Elem.mark attr content + let inline _q attr content = Elem.q attr content + let inline _rp attr content = Elem.rp attr content + let inline _rt attr content = Elem.rt attr content + let inline _ruby attr content = Elem.ruby attr content + let inline _s attr content = Elem.s attr content + let inline _samp attr content = Elem.samp attr content + let inline _small attr content = Elem.small attr content + let inline _span attr content = Elem.span attr content + let inline _strong attr content = Elem.strong attr content + let inline _sub attr content = Elem.sub attr content + let inline _sup attr content = Elem.sup attr content + let inline _time attr content = Elem.time attr content + let inline _u attr content = Elem.u attr content + let inline _var attr content = Elem.var attr content + let inline _wbr attr = Elem.wbr attr + let inline _area attr content = Elem.area attr content + let inline _audio attr content = Elem.audio attr content + let inline _img attr = Elem.img attr + let inline _map attr content = Elem.map attr content + let inline _track attr = Elem.track attr + let inline _video attr content = Elem.video attr content + let inline _embed attr = Elem.embed attr + let inline _iframe attr content = Elem.iframe attr content + let inline _object attr content = Elem.object attr content + let inline _picture attr content = Elem.picture attr content + let inline _portal attr content = Elem.portal attr content + let inline _source attr = Elem.source attr + let inline _canvas attr content = Elem.canvas attr content + let inline _noscript attr content = Elem.noscript attr content + let inline _script attr content = Elem.script attr content + let inline _del attr content = Elem.del attr content + let inline _ins attr content = Elem.ins attr content + let inline _caption attr content = Elem.caption attr content + let inline _col attr = Elem.col attr + let inline _colgroup attr content = Elem.colgroup attr content + let inline _table attr content = Elem.table attr content + let inline _tbody attr content = Elem.tbody attr content + let inline _td attr content = Elem.td attr content + let inline _tfoot attr content = Elem.tfoot attr content + let inline _th attr content = Elem.th attr content + let inline _thead attr content = Elem.thead attr content + let inline _tr attr content = Elem.tr attr content + let inline _button attr content = Elem.button attr content + let inline _datalist attr content = Elem.datalist attr content + let inline _fieldset attr content = Elem.fieldset attr content + let inline _form attr content = Elem.form attr content + let inline _input attr = Elem.input attr + let inline _label attr content = Elem.label attr content + let inline _legend attr content = Elem.legend attr content + let inline _meter attr content = Elem.meter attr content + let inline _optgroup attr content = Elem.optgroup attr content + let inline _option attr content = Elem.option attr content + let inline _output attr content = Elem.output attr content + let inline _progress attr content = Elem.progress attr content + let inline _select attr content = Elem.select attr content + let inline _textarea attr content = Elem.textarea attr content + let inline _control name attr labelElement = Elem.control name attr labelElement + let inline _controlSelect name attr labelElement options = Elem.controlSelect name attr labelElement options + let inline _controlTextarea name attr labelElement content = Elem.controlTextarea name attr labelElement content + let inline _details attr content = Elem.details attr content + let inline _dialog attr content = Elem.dialog attr content + let inline _summary attr content = Elem.summary attr content + let inline _slot attr content = Elem.slot attr content + let inline _template attr content = Elem.template attr content + let inline _math attr content = Elem.math attr content + let inline _svg attr content = Elem.svg attr 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 diff --git a/test/Falco.Markup.Tests/AttrTests.fs b/test/Falco.Markup.Tests/AttrTests.fs index c670110..8921574 100644 --- a/test/Falco.Markup.Tests/AttrTests.fs +++ b/test/Falco.Markup.Tests/AttrTests.fs @@ -51,3 +51,221 @@ let ``Attr.merge should combine two XmlAttribute lists factoring additive attrib [ Attr.name "test"; Attr.class' "ma2"; Attr.style "background: red"; Attr.accept "image/jpeg" ] [ Attr.name "expected"; Attr.class' "pa2"; Attr.style "color: white"; Attr.accept "image/png" ] |> should equal [ Attr.name "expected"; Attr.class' "ma2 pa2"; Attr.style "background: red; color: white"; Attr.accept "image/jpeg, image/png" ] + +[] +let ``HTML Spec`` () = + Elem.div [ Attr.accept "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.acceptCharset "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.accesskey "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.action "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.align "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.allow "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.alt "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.async ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.autocapitalize "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.autocomplete "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.autofocus ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.autoplay ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.background "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.bgcolor "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.border "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.buffered "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.capture "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.challenge "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.charset "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.checked' ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.cite "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.class' "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.code "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.codebase "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.color "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.cols "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.colspan "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.content "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.contenteditable "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.contextmenu "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.controls ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.coords "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.crossorigin "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.csp "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.data "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.dataAttr "value" "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.datetime "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.decoding "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.default' ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.defer ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.dir "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.dirname "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.disabled ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.download "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.draggable "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.enctype "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.enterkeyhint "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.for' "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.form "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.formaction "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.formenctype "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.formmethod "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.formnovalidate ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.formtarget "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.headers "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.height "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.hidden ] [] |> renderNode |> should equal "" + Elem.div [ Attr.high "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.href "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.hreflang "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.httpEquiv "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.icon "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.id "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.importance "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.integrity "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.inputmode "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ismap ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.itemprop "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.keytype "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.kind "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.label "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.lang "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.loading "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.list "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.loop ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.low "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.max "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.maxlength "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.minlength "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.media "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.method "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.min "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.multiple ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.muted ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.name "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.novalidate ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.open' "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.optimum "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.pattern "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ping "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.placeholder "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.poster "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.preload "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.radiogroup "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.readonly ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.referrerpolicy "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.rel "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.required ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.reversed ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.role "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.rows "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.rowspan "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.sandbox "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.scope "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.selected ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.shape "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.size "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.sizes "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.slot "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.span "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.spellcheck "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.src "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.srcdoc "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.srclang "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.srcset "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.start "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.step "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.style "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.tabindex "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.target "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.title "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.translate "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.type' "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.usemap "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.value "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.width "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.wrap "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onabort "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onafterprint "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onanimationend "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onanimationiteration "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onanimationstart "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onbeforeprint "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onbeforeunload "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onblur "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.oncanplay "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.oncanplaythrough "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onchange "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onclick "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.oncontextmenu "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.oncopy "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.oncut "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ondblclick "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ondrag "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ondragend "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ondragenter "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ondragleave "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ondragover "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ondragstart "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ondrop "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ondurationchange "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onemptied "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onended "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onerror "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onfocus "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onformchange "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onforminput "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onfocusin "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onfocusout "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onfullscreenchange "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onfullscreenerror "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onhashchange "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.oninput "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.oninvalid "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onkeydown "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onkeypress "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onkeyup "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onload "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onloadeddata "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onloadedmetadata "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onloadstart "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onmessage "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onmousedown "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onmouseenter "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onmouseleave "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onmousemove "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onmouseover "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onmouseout "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onmouseup "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onmousewheel "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onoffline "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ononline "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onopen "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onpagehide "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onpageshow "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onpaste "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onpause "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onplay "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onplaying "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onpopstate "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onprogress "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onratechange "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onresize "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onreset "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onscroll "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onsearch "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onseeked "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onseeking "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onselect "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onshow "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onstalled "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onstorage "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onsubmit "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onsuspend "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ontimeupdate "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ontoggle "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ontouchcancel "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ontouchend "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ontouchmove "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ontouchstart "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.ontransitionend "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onunload "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onvolumechange "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onwaiting "falco" ] [] |> renderNode |> should equal "
" + Elem.div [ Attr.onwheel "falco" ] [] |> renderNode |> should equal "
" diff --git a/test/Falco.Markup.Tests/ElemTests.fs b/test/Falco.Markup.Tests/ElemTests.fs index f150aa0..ac94f8c 100644 --- a/test/Falco.Markup.Tests/ElemTests.fs +++ b/test/Falco.Markup.Tests/ElemTests.fs @@ -93,3 +93,119 @@ let ``Should produce valid html doc for large result`` () = let render = renderHtml doc render |> fun s -> s.Substring(0, 27) |> should equal "" render |> fun s -> s.Substring(s.Length - 14, 14) |> should equal "" + +[] +let ``HTML Spec`` () = + Elem.html [] [] |> renderNode |> should equal "" + Elem.base' [] |> renderNode |> should equal "" + Elem.head [] [] |> renderNode |> should equal "" + Elem.link [] |> renderNode |> should equal "" + Elem.meta [] |> renderNode |> should equal "" + Elem.style [] [] |> renderNode |> should equal "" + Elem.title [] [] |> renderNode |> should equal "" + Elem.body [] [] |> renderNode |> should equal "" + Elem.address [] [] |> renderNode |> should equal "
" + Elem.article [] [] |> renderNode |> should equal "
" + Elem.aside [] [] |> renderNode |> should equal "" + Elem.footer [] [] |> renderNode |> should equal "
" + Elem.header [] [] |> renderNode |> should equal "
" + Elem.h1 [] [] |> renderNode |> should equal "

" + Elem.h2 [] [] |> renderNode |> should equal "

" + Elem.h3 [] [] |> renderNode |> should equal "

" + Elem.h4 [] [] |> renderNode |> should equal "

" + Elem.h5 [] [] |> renderNode |> should equal "
" + Elem.h6 [] [] |> renderNode |> should equal "
" + Elem.main [] [] |> renderNode |> should equal "
" + Elem.nav [] [] |> renderNode |> should equal "" + Elem.section [] [] |> renderNode |> should equal "
" + Elem.blockquote [] [] |> renderNode |> should equal "
" + Elem.dd [] [] |> renderNode |> should equal "
" + Elem.div [] [] |> renderNode |> should equal "
" + Elem.dl [] [] |> renderNode |> should equal "
" + Elem.dt [] [] |> renderNode |> should equal "
" + Elem.figcaption [] [] |> renderNode |> should equal "
" + Elem.figure [] [] |> renderNode |> should equal "
" + Elem.hr [] |> renderNode |> should equal "
" + Elem.li [] [] |> renderNode |> should equal "
  • " + Elem.menu [] [] |> renderNode |> should equal "" + Elem.ol [] [] |> renderNode |> should equal "
      " + Elem.p [] [] |> renderNode |> should equal "

      " + Elem.pre [] [] |> renderNode |> should equal "
      "
      +    Elem.ul [] [] |> renderNode |> should equal "
        " + Elem.a [] [] |> renderNode |> should equal "" + Elem.abbr [] [] |> renderNode |> should equal "" + Elem.b [] [] |> renderNode |> should equal "" + Elem.bdi [] [] |> renderNode |> should equal "" + Elem.bdo [] [] |> renderNode |> should equal "" + Elem.br [] |> renderNode |> should equal "
        " + Elem.cite [] [] |> renderNode |> should equal "" + Elem.code [] [] |> renderNode |> should equal "" + Elem.data [] [] |> renderNode |> should equal "" + Elem.dfn [] [] |> renderNode |> should equal "" + Elem.em [] [] |> renderNode |> should equal "" + Elem.i [] [] |> renderNode |> should equal "" + Elem.kbd [] [] |> renderNode |> should equal "" + Elem.mark [] [] |> renderNode |> should equal "" + Elem.q [] [] |> renderNode |> should equal "" + Elem.rp [] [] |> renderNode |> should equal "" + Elem.rt [] [] |> renderNode |> should equal "" + Elem.ruby [] [] |> renderNode |> should equal "" + Elem.s [] [] |> renderNode |> should equal "" + Elem.samp [] [] |> renderNode |> should equal "" + Elem.small [] [] |> renderNode |> should equal "" + Elem.span [] [] |> renderNode |> should equal "" + Elem.strong [] [] |> renderNode |> should equal "" + Elem.sub [] [] |> renderNode |> should equal "" + Elem.sup [] [] |> renderNode |> should equal "" + Elem.time [] [] |> renderNode |> should equal "" + Elem.u [] [] |> renderNode |> should equal "" + Elem.var [] [] |> renderNode |> should equal "" + Elem.wbr [] |> renderNode |> should equal "" + Elem.area [] [] |> renderNode |> should equal "" + Elem.audio [] [] |> renderNode |> should equal "" + Elem.img [] |> renderNode |> should equal "" + Elem.map [] [] |> renderNode |> should equal "" + Elem.track [] |> renderNode |> should equal "" + Elem.video [] [] |> renderNode |> should equal "" + Elem.embed [] |> renderNode |> should equal "" + Elem.iframe [] [] |> renderNode |> should equal "" + Elem.object [] [] |> renderNode |> should equal "" + Elem.picture [] [] |> renderNode |> should equal "" + Elem.portal [] [] |> renderNode |> should equal "" + Elem.source [] |> renderNode |> should equal "" + Elem.canvas [] [] |> renderNode |> should equal "" + Elem.noscript [] [] |> renderNode |> should equal "" + Elem.script [] [] |> renderNode |> should equal "" + Elem.del [] [] |> renderNode |> should equal "" + Elem.ins [] [] |> renderNode |> should equal "" + Elem.caption [] [] |> renderNode |> should equal "" + Elem.col [] |> renderNode |> should equal "" + Elem.colgroup [] [] |> renderNode |> should equal "" + Elem.table [] [] |> renderNode |> should equal "
        " + Elem.tbody [] [] |> renderNode |> should equal "" + Elem.td [] [] |> renderNode |> should equal "" + Elem.tfoot [] [] |> renderNode |> should equal "" + Elem.th [] [] |> renderNode |> should equal "" + Elem.thead [] [] |> renderNode |> should equal "" + Elem.tr [] [] |> renderNode |> should equal "" + Elem.button [] [] |> renderNode |> should equal "" + Elem.datalist [] [] |> renderNode |> should equal "" + Elem.fieldset [] [] |> renderNode |> should equal "
        " + Elem.form [] [] |> renderNode |> should equal "
        " + Elem.input [] |> renderNode |> should equal "" + Elem.label [] [] |> renderNode |> should equal "" + Elem.legend [] [] |> renderNode |> should equal "" + Elem.meter [] [] |> renderNode |> should equal "" + Elem.optgroup [] [] |> renderNode |> should equal "" + Elem.option [] [] |> renderNode |> should equal "" + Elem.output [] [] |> renderNode |> should equal "" + Elem.progress [] [] |> renderNode |> should equal "" + Elem.select [] [] |> renderNode |> should equal "" + Elem.textarea [] [] |> renderNode |> should equal "" + Elem.details [] [] |> renderNode |> should equal "
        " + Elem.dialog [] [] |> renderNode |> should equal "" + Elem.summary [] [] |> renderNode |> should equal "" + Elem.slot [] [] |> renderNode |> should equal "" + Elem.template [] [] |> renderNode |> should equal "" + Elem.math [] [] |> renderNode |> should equal "" + Elem.svg [] [] |> renderNode |> should equal "" diff --git a/test/Falco.Markup.Tests/Falco.Markup.Tests.fsproj b/test/Falco.Markup.Tests/Falco.Markup.Tests.fsproj index daffdb8..f542b66 100644 --- a/test/Falco.Markup.Tests/Falco.Markup.Tests.fsproj +++ b/test/Falco.Markup.Tests/Falco.Markup.Tests.fsproj @@ -25,6 +25,7 @@ + diff --git a/test/Falco.Markup.Tests/HtmlTests.fs b/test/Falco.Markup.Tests/HtmlTests.fs new file mode 100644 index 0000000..6bed6df --- /dev/null +++ b/test/Falco.Markup.Tests/HtmlTests.fs @@ -0,0 +1,381 @@ +module Falco.Tests.Html + +open Falco.Markup +open FsUnit.Xunit +open Xunit + +[] +let ``Elements`` () = + + _html [] [] |> should equal <| Elem.html [] [] + _base [] |> should equal <| Elem.base' [] + _head [] [] |> should equal <| Elem.head [] [] + _link [] |> should equal <| Elem.link [] + _meta [] |> should equal <| Elem.meta [] + _style [] [] |> should equal <| Elem.style [] [] + _title [] [] |> should equal <| Elem.title [] [] + _body [] [] |> should equal <| Elem.body [] [] + _address [] [] |> should equal <| Elem.address [] [] + _article [] [] |> should equal <| Elem.article [] [] + _aside [] [] |> should equal <| Elem.aside [] [] + _footer [] [] |> should equal <| Elem.footer [] [] + _header [] [] |> should equal <| Elem.header [] [] + _h1 [] [] |> should equal <| Elem.h1 [] [] + _h2 [] [] |> should equal <| Elem.h2 [] [] + _h3 [] [] |> should equal <| Elem.h3 [] [] + _h4 [] [] |> should equal <| Elem.h4 [] [] + _h5 [] [] |> should equal <| Elem.h5 [] [] + _h6 [] [] |> should equal <| Elem.h6 [] [] + _main [] [] |> should equal <| Elem.main [] [] + _nav [] [] |> should equal <| Elem.nav [] [] + _section [] [] |> should equal <| Elem.section [] [] + _blockquote [] [] |> should equal <| Elem.blockquote [] [] + _dd [] [] |> should equal <| Elem.dd [] [] + _div [] [] |> should equal <| Elem.div [] [] + _dl [] [] |> should equal <| Elem.dl [] [] + _dt [] [] |> should equal <| Elem.dt [] [] + _figcaption [] [] |> should equal <| Elem.figcaption [] [] + _figure [] [] |> should equal <| Elem.figure [] [] + _hr [] |> should equal <| Elem.hr [] + _li [] [] |> should equal <| Elem.li [] [] + _menu [] [] |> should equal <| Elem.menu [] [] + _ol [] [] |> should equal <| Elem.ol [] [] + _p [] [] |> should equal <| Elem.p [] [] + _pre [] [] |> should equal <| Elem.pre [] [] + _ul [] [] |> should equal <| Elem.ul [] [] + _a [] [] |> should equal <| Elem.a [] [] + _abbr [] [] |> should equal <| Elem.abbr [] [] + _b [] [] |> should equal <| Elem.b [] [] + _bdi [] [] |> should equal <| Elem.bdi [] [] + _bdo [] [] |> should equal <| Elem.bdo [] [] + _br [] |> should equal <| Elem.br [] + _cite [] [] |> should equal <| Elem.cite [] [] + _code [] [] |> should equal <| Elem.code [] [] + _data [] [] |> should equal <| Elem.data [] [] + _dfn [] [] |> should equal <| Elem.dfn [] [] + _em [] [] |> should equal <| Elem.em [] [] + _i [] [] |> should equal <| Elem.i [] [] + _kbd [] [] |> should equal <| Elem.kbd [] [] + _mark [] [] |> should equal <| Elem.mark [] [] + _q [] [] |> should equal <| Elem.q [] [] + _rp [] [] |> should equal <| Elem.rp [] [] + _rt [] [] |> should equal <| Elem.rt [] [] + _ruby [] [] |> should equal <| Elem.ruby [] [] + _s [] [] |> should equal <| Elem.s [] [] + _samp [] [] |> should equal <| Elem.samp [] [] + _small [] [] |> should equal <| Elem.small [] [] + _span [] [] |> should equal <| Elem.span [] [] + _strong [] [] |> should equal <| Elem.strong [] [] + _sub [] [] |> should equal <| Elem.sub [] [] + _sup [] [] |> should equal <| Elem.sup [] [] + _time [] [] |> should equal <| Elem.time [] [] + _u [] [] |> should equal <| Elem.u [] [] + _var [] [] |> should equal <| Elem.var [] [] + _wbr [] |> should equal <| Elem.wbr [] + _area [] [] |> should equal <| Elem.area [] [] + _audio [] [] |> should equal <| Elem.audio [] [] + _img [] |> should equal <| Elem.img [] + _map [] [] |> should equal <| Elem.map [] [] + _track [] |> should equal <| Elem.track [] + _video [] [] |> should equal <| Elem.video [] [] + _embed [] |> should equal <| Elem.embed [] + _iframe [] [] |> should equal <| Elem.iframe [] [] + _object [] [] |> should equal <| Elem.object [] [] + _picture [] [] |> should equal <| Elem.picture [] [] + _portal [] [] |> should equal <| Elem.portal [] [] + _source [] |> should equal <| Elem.source [] + _canvas [] [] |> should equal <| Elem.canvas [] [] + _noscript [] [] |> should equal <| Elem.noscript [] [] + _script [] [] |> should equal <| Elem.script [] [] + _del [] [] |> should equal <| Elem.del [] [] + _ins [] [] |> should equal <| Elem.ins [] [] + _caption [] [] |> should equal <| Elem.caption [] [] + _col [] |> should equal <| Elem.col [] + _colgroup [] [] |> should equal <| Elem.colgroup [] [] + _table [] [] |> should equal <| Elem.table [] [] + _tbody [] [] |> should equal <| Elem.tbody [] [] + _td [] [] |> should equal <| Elem.td [] [] + _tfoot [] [] |> should equal <| Elem.tfoot [] [] + _th [] [] |> should equal <| Elem.th [] [] + _thead [] [] |> should equal <| Elem.thead [] [] + _tr [] [] |> should equal <| Elem.tr [] [] + _button [] [] |> should equal <| Elem.button [] [] + _datalist [] [] |> should equal <| Elem.datalist [] [] + _fieldset [] [] |> should equal <| Elem.fieldset [] [] + _form [] [] |> should equal <| Elem.form [] [] + _input [] |> should equal <| Elem.input [] + _label [] [] |> should equal <| Elem.label [] [] + _legend [] [] |> should equal <| Elem.legend [] [] + _meter [] [] |> should equal <| Elem.meter [] [] + _optgroup [] [] |> should equal <| Elem.optgroup [] [] + _option [] [] |> should equal <| Elem.option [] [] + _output [] [] |> should equal <| Elem.output [] [] + _progress [] [] |> should equal <| Elem.progress [] [] + _select [] [] |> should equal <| Elem.select [] [] + _textarea [] [] |> should equal <| Elem.textarea [] [] + _details [] [] |> should equal <| Elem.details [] [] + _dialog [] [] |> should equal <| Elem.dialog [] [] + _summary [] [] |> should equal <| Elem.summary [] [] + _slot [] [] |> should equal <| Elem.slot [] [] + _template [] [] |> should equal <| Elem.template [] [] + _math [] [] |> should equal <| Elem.math [] [] + _svg [] [] |> should equal <| Elem.svg [] [] + +[] +let ``Text`` () = + _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" ] [] diff --git a/test/Falco.Markup.Tests/TestHelperTests.fs b/test/Falco.Markup.Tests/TestHelperTests.fs index cc79dc1..aa8fb22 100644 --- a/test/Falco.Markup.Tests/TestHelperTests.fs +++ b/test/Falco.Markup.Tests/TestHelperTests.fs @@ -2,7 +2,6 @@ module Falco.Tests.TestHelpersTests open System open Falco.Markup -open Falco.Markup.Svg open FsUnit.Xunit open Xunit @@ -218,4 +217,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" \ 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" diff --git a/test/Falco.Markup.Tests/TextTests.fs b/test/Falco.Markup.Tests/TextTests.fs index 24d865d..ad6278a 100644 --- a/test/Falco.Markup.Tests/TextTests.fs +++ b/test/Falco.Markup.Tests/TextTests.fs @@ -32,38 +32,38 @@ let ``Text.comment should equal HTML comment`` () = [] let ``Text shortcuts should produce valid XmlNode`` () = - Text.h1 "falco" |> should equal <| Elem.h1 [] [ Text.raw "falco" ] - Text.h2 "falco" |> should equal <| Elem.h2 [] [ Text.raw "falco" ] - Text.h3 "falco" |> should equal <| Elem.h3 [] [ Text.raw "falco" ] - Text.h4 "falco" |> should equal <| Elem.h4 [] [ Text.raw "falco" ] - Text.h5 "falco" |> should equal <| Elem.h5 [] [ Text.raw "falco" ] - Text.h6 "falco" |> should equal <| Elem.h6 [] [ Text.raw "falco" ] - Text.p "falco" |> should equal <| Elem.p [] [ Text.raw "falco" ] - Text.dd "falco" |> should equal <| Elem.dd [] [ Text.raw "falco" ] - Text.dt "falco" |> should equal <| Elem.dt [] [ Text.raw "falco" ] - Text.abbr "falco" |> should equal <| Elem.abbr [] [ Text.raw "falco" ] - Text.b "falco" |> should equal <| Elem.b [] [ Text.raw "falco" ] - Text.bdi "falco" |> should equal <| Elem.bdi [] [ Text.raw "falco" ] - Text.bdo "falco" |> should equal <| Elem.bdo [] [ Text.raw "falco" ] - Text.cite "falco" |> should equal <| Elem.cite [] [ Text.raw "falco" ] - Text.code "falco" |> should equal <| Elem.code [] [ Text.raw "falco" ] - Text.data "falco" |> should equal <| Elem.data [] [ Text.raw "falco" ] - Text.dfn "falco" |> should equal <| Elem.dfn [] [ Text.raw "falco" ] - Text.em "falco" |> should equal <| Elem.em [] [ Text.raw "falco" ] - Text.i "falco" |> should equal <| Elem.i [] [ Text.raw "falco" ] - Text.kbd "falco" |> should equal <| Elem.kbd [] [ Text.raw "falco" ] - Text.mark "falco" |> should equal <| Elem.mark [] [ Text.raw "falco" ] - Text.q "falco" |> should equal <| Elem.q [] [ Text.raw "falco" ] - Text.rp "falco" |> should equal <| Elem.rp [] [ Text.raw "falco" ] - Text.rt "falco" |> should equal <| Elem.rt [] [ Text.raw "falco" ] - Text.ruby "falco" |> should equal <| Elem.ruby [] [ Text.raw "falco" ] - Text.s "falco" |> should equal <| Elem.s [] [ Text.raw "falco" ] - Text.samp "falco" |> should equal <| Elem.samp [] [ Text.raw "falco" ] - Text.small "falco" |> should equal <| Elem.small [] [ Text.raw "falco" ] - Text.span "falco" |> should equal <| Elem.span [] [ Text.raw "falco" ] - Text.strong "falco" |> should equal <| Elem.strong [] [ Text.raw "falco" ] - Text.sub "falco" |> should equal <| Elem.sub [] [ Text.raw "falco" ] - Text.sup "falco" |> should equal <| Elem.sup [] [ Text.raw "falco" ] - Text.time "falco" |> should equal <| Elem.time [] [ Text.raw "falco" ] - Text.u "falco" |> should equal <| Elem.u [] [ Text.raw "falco" ] - Text.var "falco" |> should equal <| Elem.var [] [ Text.raw "falco" ] + Text.h1 "falco" |> renderNode |> should equal "

        falco

        " + Text.h2 "falco" |> renderNode |> should equal "

        falco

        " + Text.h3 "falco" |> renderNode |> should equal "

        falco

        " + Text.h4 "falco" |> renderNode |> should equal "

        falco

        " + Text.h5 "falco" |> renderNode |> should equal "
        falco
        " + Text.h6 "falco" |> renderNode |> should equal "
        falco
        " + Text.p "falco" |> renderNode |> should equal "

        falco

        " + Text.dd "falco" |> renderNode |> should equal "
        falco
        " + Text.dt "falco" |> renderNode |> should equal "
        falco
        " + Text.abbr "falco" |> renderNode |> should equal "falco" + Text.b "falco" |> renderNode |> should equal "falco" + Text.bdi "falco" |> renderNode |> should equal "falco" + Text.bdo "falco" |> renderNode |> should equal "falco" + Text.cite "falco" |> renderNode |> should equal "falco" + Text.code "falco" |> renderNode |> should equal "falco" + Text.data "falco" |> renderNode |> should equal "falco" + Text.dfn "falco" |> renderNode |> should equal "falco" + Text.em "falco" |> renderNode |> should equal "falco" + Text.i "falco" |> renderNode |> should equal "falco" + Text.kbd "falco" |> renderNode |> should equal "falco" + Text.mark "falco" |> renderNode |> should equal "falco" + Text.q "falco" |> renderNode |> should equal "falco" + Text.rp "falco" |> renderNode |> should equal "falco" + Text.rt "falco" |> renderNode |> should equal "falco" + Text.ruby "falco" |> renderNode |> should equal "falco" + Text.s "falco" |> renderNode |> should equal "falco" + Text.samp "falco" |> renderNode |> should equal "falco" + Text.small "falco" |> renderNode |> should equal "falco" + Text.span "falco" |> renderNode |> should equal "falco" + Text.strong "falco" |> renderNode |> should equal "falco" + Text.sub "falco" |> renderNode |> should equal "falco" + Text.sup "falco" |> renderNode |> should equal "falco" + Text.time "falco" |> renderNode |> should equal "" + Text.u "falco" |> renderNode |> should equal "falco" + Text.var "falco" |> renderNode |> should equal "falco"