Lorem ipsum
-Dolor sit amet
-diff --git a/Package.swift b/Package.swift index e230425..5d688df 100644 --- a/Package.swift +++ b/Package.swift @@ -7,18 +7,41 @@ let package = Package( .macOS(.v10_15) ], products: [ + .library(name: "SwiftSgml", targets: ["SwiftSgml"]), .library(name: "SwiftHtml", targets: ["SwiftHtml"]), + .library(name: "SwiftSvg", targets: ["SwiftSvg"]), + .library(name: "SwiftSitemap", targets: ["SwiftSitemap"]), + .library(name: "SwiftRss", targets: ["SwiftRss"]), ], dependencies: [ ], targets: [ + .target(name: "SwiftSgml", dependencies: []), .target(name: "SwiftHtml", dependencies: [ - + .target(name: "SwiftSgml") + ]), + .target(name: "SwiftSvg", dependencies: [ + .target(name: "SwiftSgml") + ]), + .target(name: "SwiftSitemap", dependencies: [ + .target(name: "SwiftSgml") + ]), + .target(name: "SwiftRss", dependencies: [ + .target(name: "SwiftSgml") ]), .testTarget(name: "SwiftHtmlTests", dependencies: [ .target(name: "SwiftHtml"), ]), + .testTarget(name: "SwiftSvgTests", dependencies: [ + .target(name: "SwiftSvg"), + ]), + .testTarget(name: "SwiftSitemapTests", dependencies: [ + .target(name: "SwiftSitemap"), + ]), + .testTarget(name: "SwiftRssTests", dependencies: [ + .target(name: "SwiftRss"), + ]), ] ) diff --git a/README.md b/README.md index b55321e..e531969 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ An awesome Swift HTML DSL library using result builders. ```swift import SwiftHtml -let doc = Document { +let doc = Document(.html) { Html { Head { Title("Hello Swift HTML DSL") diff --git a/Sources/SwiftHtml/Html/Attributes/Crossorigin.swift b/Sources/SwiftHtml/Attributes/Crossorigin.swift similarity index 100% rename from Sources/SwiftHtml/Html/Attributes/Crossorigin.swift rename to Sources/SwiftHtml/Attributes/Crossorigin.swift diff --git a/Sources/SwiftHtml/Html/Attributes/Enctype.swift b/Sources/SwiftHtml/Attributes/Enctype.swift similarity index 100% rename from Sources/SwiftHtml/Html/Attributes/Enctype.swift rename to Sources/SwiftHtml/Attributes/Enctype.swift diff --git a/Sources/SwiftHtml/Html/Attributes/Events.swift b/Sources/SwiftHtml/Attributes/Events.swift similarity index 100% rename from Sources/SwiftHtml/Html/Attributes/Events.swift rename to Sources/SwiftHtml/Attributes/Events.swift diff --git a/Sources/SwiftHtml/Html/Attributes/Global.swift b/Sources/SwiftHtml/Attributes/Global.swift similarity index 100% rename from Sources/SwiftHtml/Html/Attributes/Global.swift rename to Sources/SwiftHtml/Attributes/Global.swift diff --git a/Sources/SwiftHtml/Html/Attributes/Loading.swift b/Sources/SwiftHtml/Attributes/Loading.swift similarity index 100% rename from Sources/SwiftHtml/Html/Attributes/Loading.swift rename to Sources/SwiftHtml/Attributes/Loading.swift diff --git a/Sources/SwiftHtml/Html/Attributes/Method.swift b/Sources/SwiftHtml/Attributes/Method.swift similarity index 100% rename from Sources/SwiftHtml/Html/Attributes/Method.swift rename to Sources/SwiftHtml/Attributes/Method.swift diff --git a/Sources/SwiftHtml/Html/Attributes/RefererPolicy.swift b/Sources/SwiftHtml/Attributes/RefererPolicy.swift similarity index 100% rename from Sources/SwiftHtml/Html/Attributes/RefererPolicy.swift rename to Sources/SwiftHtml/Attributes/RefererPolicy.swift diff --git a/Sources/SwiftHtml/Html/Attributes/Target.swift b/Sources/SwiftHtml/Attributes/Target.swift similarity index 100% rename from Sources/SwiftHtml/Html/Attributes/Target.swift rename to Sources/SwiftHtml/Attributes/Target.swift diff --git a/Sources/SwiftHtml/Exported.swift b/Sources/SwiftHtml/Exported.swift new file mode 100644 index 0000000..cf2977f --- /dev/null +++ b/Sources/SwiftHtml/Exported.swift @@ -0,0 +1,8 @@ +// +// Exported.swift +// SwiftHtml +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +@_exported import SwiftSgml diff --git a/Sources/SwiftHtml/Html/Tags/A.swift b/Sources/SwiftHtml/Tags/A.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/A.swift rename to Sources/SwiftHtml/Tags/A.swift diff --git a/Sources/SwiftHtml/Html/Tags/Abbr.swift b/Sources/SwiftHtml/Tags/Abbr.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Abbr.swift rename to Sources/SwiftHtml/Tags/Abbr.swift diff --git a/Sources/SwiftHtml/Html/Tags/Address.swift b/Sources/SwiftHtml/Tags/Address.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Address.swift rename to Sources/SwiftHtml/Tags/Address.swift diff --git a/Sources/SwiftHtml/Html/Tags/Area.swift b/Sources/SwiftHtml/Tags/Area.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Area.swift rename to Sources/SwiftHtml/Tags/Area.swift diff --git a/Sources/SwiftHtml/Html/Tags/Article.swift b/Sources/SwiftHtml/Tags/Article.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Article.swift rename to Sources/SwiftHtml/Tags/Article.swift diff --git a/Sources/SwiftHtml/Html/Tags/Aside.swift b/Sources/SwiftHtml/Tags/Aside.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Aside.swift rename to Sources/SwiftHtml/Tags/Aside.swift diff --git a/Sources/SwiftHtml/Html/Tags/Audio.swift b/Sources/SwiftHtml/Tags/Audio.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Audio.swift rename to Sources/SwiftHtml/Tags/Audio.swift diff --git a/Sources/SwiftHtml/Html/Tags/B.swift b/Sources/SwiftHtml/Tags/B.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/B.swift rename to Sources/SwiftHtml/Tags/B.swift diff --git a/Sources/SwiftHtml/Html/Tags/Base.swift b/Sources/SwiftHtml/Tags/Base.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Base.swift rename to Sources/SwiftHtml/Tags/Base.swift diff --git a/Sources/SwiftHtml/Html/Tags/Bdi.swift b/Sources/SwiftHtml/Tags/Bdi.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Bdi.swift rename to Sources/SwiftHtml/Tags/Bdi.swift diff --git a/Sources/SwiftHtml/Html/Tags/Bdo.swift b/Sources/SwiftHtml/Tags/Bdo.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Bdo.swift rename to Sources/SwiftHtml/Tags/Bdo.swift diff --git a/Sources/SwiftHtml/Html/Tags/Blockquote.swift b/Sources/SwiftHtml/Tags/Blockquote.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Blockquote.swift rename to Sources/SwiftHtml/Tags/Blockquote.swift diff --git a/Sources/SwiftHtml/Html/Tags/Body.swift b/Sources/SwiftHtml/Tags/Body.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Body.swift rename to Sources/SwiftHtml/Tags/Body.swift diff --git a/Sources/SwiftHtml/Html/Tags/Br.swift b/Sources/SwiftHtml/Tags/Br.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Br.swift rename to Sources/SwiftHtml/Tags/Br.swift diff --git a/Sources/SwiftHtml/Html/Tags/Button.swift b/Sources/SwiftHtml/Tags/Button.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Button.swift rename to Sources/SwiftHtml/Tags/Button.swift diff --git a/Sources/SwiftHtml/Html/Tags/Canvas.swift b/Sources/SwiftHtml/Tags/Canvas.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Canvas.swift rename to Sources/SwiftHtml/Tags/Canvas.swift diff --git a/Sources/SwiftHtml/Html/Tags/Caption.swift b/Sources/SwiftHtml/Tags/Caption.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Caption.swift rename to Sources/SwiftHtml/Tags/Caption.swift diff --git a/Sources/SwiftHtml/Html/Tags/Cite.swift b/Sources/SwiftHtml/Tags/Cite.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Cite.swift rename to Sources/SwiftHtml/Tags/Cite.swift diff --git a/Sources/SwiftHtml/Html/Tags/Code.swift b/Sources/SwiftHtml/Tags/Code.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Code.swift rename to Sources/SwiftHtml/Tags/Code.swift diff --git a/Sources/SwiftHtml/Html/Tags/Col.swift b/Sources/SwiftHtml/Tags/Col.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Col.swift rename to Sources/SwiftHtml/Tags/Col.swift diff --git a/Sources/SwiftHtml/Html/Tags/Colgroup.swift b/Sources/SwiftHtml/Tags/Colgroup.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Colgroup.swift rename to Sources/SwiftHtml/Tags/Colgroup.swift diff --git a/Sources/SwiftHtml/Html/Tags/Comment.swift b/Sources/SwiftHtml/Tags/Comment.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Comment.swift rename to Sources/SwiftHtml/Tags/Comment.swift diff --git a/Sources/SwiftHtml/Html/Tags/Data.swift b/Sources/SwiftHtml/Tags/Data.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Data.swift rename to Sources/SwiftHtml/Tags/Data.swift diff --git a/Sources/SwiftHtml/Html/Tags/Datalist.swift b/Sources/SwiftHtml/Tags/Datalist.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Datalist.swift rename to Sources/SwiftHtml/Tags/Datalist.swift diff --git a/Sources/SwiftHtml/Html/Tags/Dd.swift b/Sources/SwiftHtml/Tags/Dd.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Dd.swift rename to Sources/SwiftHtml/Tags/Dd.swift diff --git a/Sources/SwiftHtml/Html/Tags/Del.swift b/Sources/SwiftHtml/Tags/Del.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Del.swift rename to Sources/SwiftHtml/Tags/Del.swift diff --git a/Sources/SwiftHtml/Html/Tags/Details.swift b/Sources/SwiftHtml/Tags/Details.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Details.swift rename to Sources/SwiftHtml/Tags/Details.swift diff --git a/Sources/SwiftHtml/Html/Tags/Dfn.swift b/Sources/SwiftHtml/Tags/Dfn.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Dfn.swift rename to Sources/SwiftHtml/Tags/Dfn.swift diff --git a/Sources/SwiftHtml/Html/Tags/Dialog.swift b/Sources/SwiftHtml/Tags/Dialog.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Dialog.swift rename to Sources/SwiftHtml/Tags/Dialog.swift diff --git a/Sources/SwiftHtml/Html/Tags/Div.swift b/Sources/SwiftHtml/Tags/Div.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Div.swift rename to Sources/SwiftHtml/Tags/Div.swift diff --git a/Sources/SwiftHtml/Html/Tags/Dl.swift b/Sources/SwiftHtml/Tags/Dl.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Dl.swift rename to Sources/SwiftHtml/Tags/Dl.swift diff --git a/Sources/SwiftHtml/Html/Tags/Dt.swift b/Sources/SwiftHtml/Tags/Dt.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Dt.swift rename to Sources/SwiftHtml/Tags/Dt.swift diff --git a/Sources/SwiftHtml/Html/Tags/Em.swift b/Sources/SwiftHtml/Tags/Em.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Em.swift rename to Sources/SwiftHtml/Tags/Em.swift diff --git a/Sources/SwiftHtml/Html/Tags/Embed.swift b/Sources/SwiftHtml/Tags/Embed.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Embed.swift rename to Sources/SwiftHtml/Tags/Embed.swift diff --git a/Sources/SwiftHtml/Html/Tags/Fieldset.swift b/Sources/SwiftHtml/Tags/Fieldset.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Fieldset.swift rename to Sources/SwiftHtml/Tags/Fieldset.swift diff --git a/Sources/SwiftHtml/Html/Tags/Figcaption.swift b/Sources/SwiftHtml/Tags/Figcaption.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Figcaption.swift rename to Sources/SwiftHtml/Tags/Figcaption.swift diff --git a/Sources/SwiftHtml/Html/Tags/Figure.swift b/Sources/SwiftHtml/Tags/Figure.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Figure.swift rename to Sources/SwiftHtml/Tags/Figure.swift diff --git a/Sources/SwiftHtml/Html/Tags/Footer.swift b/Sources/SwiftHtml/Tags/Footer.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Footer.swift rename to Sources/SwiftHtml/Tags/Footer.swift diff --git a/Sources/SwiftHtml/Html/Tags/Form.swift b/Sources/SwiftHtml/Tags/Form.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Form.swift rename to Sources/SwiftHtml/Tags/Form.swift diff --git a/Sources/SwiftHtml/Html/Tags/H1.swift b/Sources/SwiftHtml/Tags/H1.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/H1.swift rename to Sources/SwiftHtml/Tags/H1.swift diff --git a/Sources/SwiftHtml/Html/Tags/H2.swift b/Sources/SwiftHtml/Tags/H2.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/H2.swift rename to Sources/SwiftHtml/Tags/H2.swift diff --git a/Sources/SwiftHtml/Html/Tags/H3.swift b/Sources/SwiftHtml/Tags/H3.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/H3.swift rename to Sources/SwiftHtml/Tags/H3.swift diff --git a/Sources/SwiftHtml/Html/Tags/H4.swift b/Sources/SwiftHtml/Tags/H4.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/H4.swift rename to Sources/SwiftHtml/Tags/H4.swift diff --git a/Sources/SwiftHtml/Html/Tags/H5.swift b/Sources/SwiftHtml/Tags/H5.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/H5.swift rename to Sources/SwiftHtml/Tags/H5.swift diff --git a/Sources/SwiftHtml/Html/Tags/H6.swift b/Sources/SwiftHtml/Tags/H6.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/H6.swift rename to Sources/SwiftHtml/Tags/H6.swift diff --git a/Sources/SwiftHtml/Html/Tags/Head.swift b/Sources/SwiftHtml/Tags/Head.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Head.swift rename to Sources/SwiftHtml/Tags/Head.swift diff --git a/Sources/SwiftHtml/Html/Tags/Header.swift b/Sources/SwiftHtml/Tags/Header.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Header.swift rename to Sources/SwiftHtml/Tags/Header.swift diff --git a/Sources/SwiftHtml/Html/Tags/Hr.swift b/Sources/SwiftHtml/Tags/Hr.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Hr.swift rename to Sources/SwiftHtml/Tags/Hr.swift diff --git a/Sources/SwiftHtml/Html/Tags/Html.swift b/Sources/SwiftHtml/Tags/Html.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Html.swift rename to Sources/SwiftHtml/Tags/Html.swift diff --git a/Sources/SwiftHtml/Html/Tags/I.swift b/Sources/SwiftHtml/Tags/I.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/I.swift rename to Sources/SwiftHtml/Tags/I.swift diff --git a/Sources/SwiftHtml/Html/Tags/Iframe.swift b/Sources/SwiftHtml/Tags/Iframe.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Iframe.swift rename to Sources/SwiftHtml/Tags/Iframe.swift diff --git a/Sources/SwiftHtml/Html/Tags/Img.swift b/Sources/SwiftHtml/Tags/Img.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Img.swift rename to Sources/SwiftHtml/Tags/Img.swift diff --git a/Sources/SwiftHtml/Html/Tags/Input.swift b/Sources/SwiftHtml/Tags/Input.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Input.swift rename to Sources/SwiftHtml/Tags/Input.swift diff --git a/Sources/SwiftHtml/Html/Tags/Ins.swift b/Sources/SwiftHtml/Tags/Ins.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Ins.swift rename to Sources/SwiftHtml/Tags/Ins.swift diff --git a/Sources/SwiftHtml/Html/Tags/Kbd.swift b/Sources/SwiftHtml/Tags/Kbd.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Kbd.swift rename to Sources/SwiftHtml/Tags/Kbd.swift diff --git a/Sources/SwiftHtml/Html/Tags/Label.swift b/Sources/SwiftHtml/Tags/Label.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Label.swift rename to Sources/SwiftHtml/Tags/Label.swift diff --git a/Sources/SwiftHtml/Html/Tags/Legend.swift b/Sources/SwiftHtml/Tags/Legend.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Legend.swift rename to Sources/SwiftHtml/Tags/Legend.swift diff --git a/Sources/SwiftHtml/Html/Tags/Li.swift b/Sources/SwiftHtml/Tags/Li.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Li.swift rename to Sources/SwiftHtml/Tags/Li.swift diff --git a/Sources/SwiftHtml/Html/Tags/Link.swift b/Sources/SwiftHtml/Tags/Link.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Link.swift rename to Sources/SwiftHtml/Tags/Link.swift diff --git a/Sources/SwiftHtml/Html/Tags/MainTag.swift b/Sources/SwiftHtml/Tags/MainTag.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/MainTag.swift rename to Sources/SwiftHtml/Tags/MainTag.swift diff --git a/Sources/SwiftHtml/Html/Tags/Map.swift b/Sources/SwiftHtml/Tags/Map.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Map.swift rename to Sources/SwiftHtml/Tags/Map.swift diff --git a/Sources/SwiftHtml/Html/Tags/Mark.swift b/Sources/SwiftHtml/Tags/Mark.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Mark.swift rename to Sources/SwiftHtml/Tags/Mark.swift diff --git a/Sources/SwiftHtml/Html/Tags/Meta.swift b/Sources/SwiftHtml/Tags/Meta.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Meta.swift rename to Sources/SwiftHtml/Tags/Meta.swift diff --git a/Sources/SwiftHtml/Html/Tags/Meter.swift b/Sources/SwiftHtml/Tags/Meter.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Meter.swift rename to Sources/SwiftHtml/Tags/Meter.swift diff --git a/Sources/SwiftHtml/Html/Tags/Nav.swift b/Sources/SwiftHtml/Tags/Nav.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Nav.swift rename to Sources/SwiftHtml/Tags/Nav.swift diff --git a/Sources/SwiftHtml/Html/Tags/Noscript.swift b/Sources/SwiftHtml/Tags/Noscript.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Noscript.swift rename to Sources/SwiftHtml/Tags/Noscript.swift diff --git a/Sources/SwiftHtml/Html/Tags/Object.swift b/Sources/SwiftHtml/Tags/Object.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Object.swift rename to Sources/SwiftHtml/Tags/Object.swift diff --git a/Sources/SwiftHtml/Html/Tags/Ol.swift b/Sources/SwiftHtml/Tags/Ol.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Ol.swift rename to Sources/SwiftHtml/Tags/Ol.swift diff --git a/Sources/SwiftHtml/Html/Tags/Optgroup.swift b/Sources/SwiftHtml/Tags/Optgroup.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Optgroup.swift rename to Sources/SwiftHtml/Tags/Optgroup.swift diff --git a/Sources/SwiftHtml/Html/Tags/Option.swift b/Sources/SwiftHtml/Tags/Option.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Option.swift rename to Sources/SwiftHtml/Tags/Option.swift diff --git a/Sources/SwiftHtml/Html/Tags/Output.swift b/Sources/SwiftHtml/Tags/Output.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Output.swift rename to Sources/SwiftHtml/Tags/Output.swift diff --git a/Sources/SwiftHtml/Html/Tags/P.swift b/Sources/SwiftHtml/Tags/P.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/P.swift rename to Sources/SwiftHtml/Tags/P.swift diff --git a/Sources/SwiftHtml/Html/Tags/Param.swift b/Sources/SwiftHtml/Tags/Param.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Param.swift rename to Sources/SwiftHtml/Tags/Param.swift diff --git a/Sources/SwiftHtml/Html/Tags/Picture.swift b/Sources/SwiftHtml/Tags/Picture.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Picture.swift rename to Sources/SwiftHtml/Tags/Picture.swift diff --git a/Sources/SwiftHtml/Html/Tags/Pre.swift b/Sources/SwiftHtml/Tags/Pre.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Pre.swift rename to Sources/SwiftHtml/Tags/Pre.swift diff --git a/Sources/SwiftHtml/Html/Tags/Progress.swift b/Sources/SwiftHtml/Tags/Progress.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Progress.swift rename to Sources/SwiftHtml/Tags/Progress.swift diff --git a/Sources/SwiftHtml/Html/Tags/Q.swift b/Sources/SwiftHtml/Tags/Q.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Q.swift rename to Sources/SwiftHtml/Tags/Q.swift diff --git a/Sources/SwiftHtml/Html/Tags/Rp.swift b/Sources/SwiftHtml/Tags/Rp.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Rp.swift rename to Sources/SwiftHtml/Tags/Rp.swift diff --git a/Sources/SwiftHtml/Html/Tags/Rt.swift b/Sources/SwiftHtml/Tags/Rt.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Rt.swift rename to Sources/SwiftHtml/Tags/Rt.swift diff --git a/Sources/SwiftHtml/Html/Tags/Ruby.swift b/Sources/SwiftHtml/Tags/Ruby.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Ruby.swift rename to Sources/SwiftHtml/Tags/Ruby.swift diff --git a/Sources/SwiftHtml/Html/Tags/S.swift b/Sources/SwiftHtml/Tags/S.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/S.swift rename to Sources/SwiftHtml/Tags/S.swift diff --git a/Sources/SwiftHtml/Html/Tags/Samp.swift b/Sources/SwiftHtml/Tags/Samp.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Samp.swift rename to Sources/SwiftHtml/Tags/Samp.swift diff --git a/Sources/SwiftHtml/Html/Tags/Script.swift b/Sources/SwiftHtml/Tags/Script.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Script.swift rename to Sources/SwiftHtml/Tags/Script.swift diff --git a/Sources/SwiftHtml/Html/Tags/Section.swift b/Sources/SwiftHtml/Tags/Section.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Section.swift rename to Sources/SwiftHtml/Tags/Section.swift diff --git a/Sources/SwiftHtml/Html/Tags/Select.swift b/Sources/SwiftHtml/Tags/Select.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Select.swift rename to Sources/SwiftHtml/Tags/Select.swift diff --git a/Sources/SwiftHtml/Html/Tags/Small.swift b/Sources/SwiftHtml/Tags/Small.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Small.swift rename to Sources/SwiftHtml/Tags/Small.swift diff --git a/Sources/SwiftHtml/Html/Tags/Source.swift b/Sources/SwiftHtml/Tags/Source.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Source.swift rename to Sources/SwiftHtml/Tags/Source.swift diff --git a/Sources/SwiftHtml/Html/Tags/Span.swift b/Sources/SwiftHtml/Tags/Span.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Span.swift rename to Sources/SwiftHtml/Tags/Span.swift diff --git a/Sources/SwiftHtml/Html/Tags/Strong.swift b/Sources/SwiftHtml/Tags/Strong.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Strong.swift rename to Sources/SwiftHtml/Tags/Strong.swift diff --git a/Sources/SwiftHtml/Html/Tags/Style.swift b/Sources/SwiftHtml/Tags/Style.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Style.swift rename to Sources/SwiftHtml/Tags/Style.swift diff --git a/Sources/SwiftHtml/Html/Tags/Sub.swift b/Sources/SwiftHtml/Tags/Sub.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Sub.swift rename to Sources/SwiftHtml/Tags/Sub.swift diff --git a/Sources/SwiftHtml/Html/Tags/Summary.swift b/Sources/SwiftHtml/Tags/Summary.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Summary.swift rename to Sources/SwiftHtml/Tags/Summary.swift diff --git a/Sources/SwiftHtml/Html/Tags/Sup.swift b/Sources/SwiftHtml/Tags/Sup.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Sup.swift rename to Sources/SwiftHtml/Tags/Sup.swift diff --git a/Sources/SwiftHtml/Html/Tags/Table.swift b/Sources/SwiftHtml/Tags/Table.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Table.swift rename to Sources/SwiftHtml/Tags/Table.swift diff --git a/Sources/SwiftHtml/Html/Tags/Tbody.swift b/Sources/SwiftHtml/Tags/Tbody.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Tbody.swift rename to Sources/SwiftHtml/Tags/Tbody.swift diff --git a/Sources/SwiftHtml/Html/Tags/Td.swift b/Sources/SwiftHtml/Tags/Td.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Td.swift rename to Sources/SwiftHtml/Tags/Td.swift diff --git a/Sources/SwiftHtml/Html/Tags/Template.swift b/Sources/SwiftHtml/Tags/Template.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Template.swift rename to Sources/SwiftHtml/Tags/Template.swift diff --git a/Sources/SwiftHtml/Html/Tags/Textarea.swift b/Sources/SwiftHtml/Tags/Textarea.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Textarea.swift rename to Sources/SwiftHtml/Tags/Textarea.swift diff --git a/Sources/SwiftHtml/Html/Tags/Tfoot.swift b/Sources/SwiftHtml/Tags/Tfoot.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Tfoot.swift rename to Sources/SwiftHtml/Tags/Tfoot.swift diff --git a/Sources/SwiftHtml/Html/Tags/Th.swift b/Sources/SwiftHtml/Tags/Th.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Th.swift rename to Sources/SwiftHtml/Tags/Th.swift diff --git a/Sources/SwiftHtml/Html/Tags/Thead.swift b/Sources/SwiftHtml/Tags/Thead.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Thead.swift rename to Sources/SwiftHtml/Tags/Thead.swift diff --git a/Sources/SwiftHtml/Html/Tags/Time.swift b/Sources/SwiftHtml/Tags/Time.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Time.swift rename to Sources/SwiftHtml/Tags/Time.swift diff --git a/Sources/SwiftHtml/Html/Tags/Title.swift b/Sources/SwiftHtml/Tags/Title.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Title.swift rename to Sources/SwiftHtml/Tags/Title.swift diff --git a/Sources/SwiftHtml/Html/Tags/Tr.swift b/Sources/SwiftHtml/Tags/Tr.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Tr.swift rename to Sources/SwiftHtml/Tags/Tr.swift diff --git a/Sources/SwiftHtml/Html/Tags/Track.swift b/Sources/SwiftHtml/Tags/Track.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Track.swift rename to Sources/SwiftHtml/Tags/Track.swift diff --git a/Sources/SwiftHtml/Html/Tags/U.swift b/Sources/SwiftHtml/Tags/U.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/U.swift rename to Sources/SwiftHtml/Tags/U.swift diff --git a/Sources/SwiftHtml/Html/Tags/Ul.swift b/Sources/SwiftHtml/Tags/Ul.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Ul.swift rename to Sources/SwiftHtml/Tags/Ul.swift diff --git a/Sources/SwiftHtml/Html/Tags/Var.swift b/Sources/SwiftHtml/Tags/Var.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Var.swift rename to Sources/SwiftHtml/Tags/Var.swift diff --git a/Sources/SwiftHtml/Html/Tags/Video.swift b/Sources/SwiftHtml/Tags/Video.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Video.swift rename to Sources/SwiftHtml/Tags/Video.swift diff --git a/Sources/SwiftHtml/Html/Tags/Wbr.swift b/Sources/SwiftHtml/Tags/Wbr.swift similarity index 100% rename from Sources/SwiftHtml/Html/Tags/Wbr.swift rename to Sources/SwiftHtml/Tags/Wbr.swift diff --git a/Sources/SwiftHtml/Text.swift b/Sources/SwiftHtml/Text.swift index 6a5d8c1..bf0263f 100644 --- a/Sources/SwiftHtml/Text.swift +++ b/Sources/SwiftHtml/Text.swift @@ -1,11 +1,11 @@ // -// File.swift -// +// Text.swift +// SwiftHtml // // Created by Tibor Bodecs on 2021. 11. 29.. // - +/// a plain text node to write simple textual content into the html tree public final class Text: Tag { public init(_ contents: String) { diff --git a/Sources/SwiftRss/Channel.swift b/Sources/SwiftRss/Channel.swift new file mode 100644 index 0000000..b19b925 --- /dev/null +++ b/Sources/SwiftRss/Channel.swift @@ -0,0 +1,12 @@ +// +// Channel.swift +// SwiftRss +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +public class Channel: Tag { + public init(@TagBuilder _ builder: () -> [Tag]) { + super.init(Node(type: .standard, name: "channel"), children: builder()) + } +} diff --git a/Sources/SwiftRss/Description.swift b/Sources/SwiftRss/Description.swift new file mode 100644 index 0000000..36dec8c --- /dev/null +++ b/Sources/SwiftRss/Description.swift @@ -0,0 +1,13 @@ +// +// Description.swift +// SwiftRss +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +public final class Description: Tag { + + public init(_ contents: String) { + super.init(Node(type: .standard, name: "description", contents: "")) + } +} diff --git a/Sources/SwiftRss/Exported.swift b/Sources/SwiftRss/Exported.swift new file mode 100644 index 0000000..9bef728 --- /dev/null +++ b/Sources/SwiftRss/Exported.swift @@ -0,0 +1,8 @@ +// +// Exported.swift +// SwiftRss +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +@_exported import SwiftSgml diff --git a/Sources/SwiftRss/Guid.swift b/Sources/SwiftRss/Guid.swift new file mode 100644 index 0000000..f3b99ce --- /dev/null +++ b/Sources/SwiftRss/Guid.swift @@ -0,0 +1,21 @@ +// +// Guid.swift +// SwiftRss +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +public final class Guid: Tag { + + public init(_ contents: String) { + super.init(Node(type: .standard, name: "guid", contents: contents)) + } +} + +public extension Guid { + + func isPermalink(_ value: Bool = true) -> Self { + node.upsert(Attribute(key: "isPermalink", value: String(value))) + return self + } +} diff --git a/Sources/SwiftRss/Item.swift b/Sources/SwiftRss/Item.swift new file mode 100644 index 0000000..c1675ab --- /dev/null +++ b/Sources/SwiftRss/Item.swift @@ -0,0 +1,13 @@ +// +// Item.swift +// SwiftRss +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + + +public class Item: Tag { + public init(@TagBuilder _ builder: () -> [Tag]) { + super.init(Node(type: .standard, name: "item"), children: builder()) + } +} diff --git a/Sources/SwiftRss/Language.swift b/Sources/SwiftRss/Language.swift new file mode 100644 index 0000000..31af4a7 --- /dev/null +++ b/Sources/SwiftRss/Language.swift @@ -0,0 +1,13 @@ +// +// Language.swift +// SwiftRss +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +public final class Language: Tag { + + public init(_ contents: String) { + super.init(Node(type: .standard, name: "language", contents: contents)) + } +} diff --git a/Sources/SwiftRss/LastBuildDate.swift b/Sources/SwiftRss/LastBuildDate.swift new file mode 100644 index 0000000..e07f207 --- /dev/null +++ b/Sources/SwiftRss/LastBuildDate.swift @@ -0,0 +1,14 @@ +// +// LastBuildDate.swift +// SwiftRss +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + + +public final class LastBuildDate: Tag { + + public init(_ contents: String) { + super.init(Node(type: .standard, name: "lastBuildDate", contents: contents)) + } +} diff --git a/Sources/SwiftRss/Link.swift b/Sources/SwiftRss/Link.swift new file mode 100644 index 0000000..75097c5 --- /dev/null +++ b/Sources/SwiftRss/Link.swift @@ -0,0 +1,13 @@ +// +// Link.swift +// SwiftRss +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +public final class Link: Tag { + + public init(_ contents: String) { + super.init(Node(type: .standard, name: "link", contents: contents)) + } +} diff --git a/Sources/SwiftRss/PubDate.swift b/Sources/SwiftRss/PubDate.swift new file mode 100644 index 0000000..2f1b8a5 --- /dev/null +++ b/Sources/SwiftRss/PubDate.swift @@ -0,0 +1,13 @@ +// +// PubDate.swift +// SwiftRss +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +public final class PubDate: Tag { + + public init(_ contents: String) { + super.init(Node(type: .standard, name: "pubDate", contents: contents)) + } +} diff --git a/Sources/SwiftRss/Rss.swift b/Sources/SwiftRss/Rss.swift new file mode 100644 index 0000000..e07b41e --- /dev/null +++ b/Sources/SwiftRss/Rss.swift @@ -0,0 +1,17 @@ +// +// Rss.swift +// SwiftRss +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +// https://validator.w3.org/feed/docs/rss2.html#ltttlgtSubelementOfLtchannelgt +public final class Rss: Tag { + + public init(@TagBuilder _ builder: () -> [Tag]) { + super.init(Node(type: .standard, name: "rss", attributes: [ + .init(key: "version", value: "2.0"), +// .init(key: "xmlns:atom", value: "http://www.w3.org/2005/Atom"), + ]), children: builder()) + } +} diff --git a/Sources/SwiftRss/Title.swift b/Sources/SwiftRss/Title.swift new file mode 100644 index 0000000..ab5b90c --- /dev/null +++ b/Sources/SwiftRss/Title.swift @@ -0,0 +1,13 @@ +// +// Title.swift +// SwiftRss +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +public final class Title: Tag { + + public init(_ contents: String) { + super.init(Node(type: .standard, name: "title", contents: "")) + } +} diff --git a/Sources/SwiftRss/Ttl.swift b/Sources/SwiftRss/Ttl.swift new file mode 100644 index 0000000..cbb5bb6 --- /dev/null +++ b/Sources/SwiftRss/Ttl.swift @@ -0,0 +1,13 @@ +// +// Ttl.swift +// SwiftRss +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +public final class Ttl: Tag { + + public init(_ value: Int) { + super.init(Node(type: .standard, name: "ttl", contents: String(value))) + } +} diff --git a/Sources/SwiftHtml/Components/Attribute.swift b/Sources/SwiftSgml/Attribute.swift similarity index 95% rename from Sources/SwiftHtml/Components/Attribute.swift rename to Sources/SwiftSgml/Attribute.swift index 65e6bd3..1242cde 100644 --- a/Sources/SwiftHtml/Components/Attribute.swift +++ b/Sources/SwiftSgml/Attribute.swift @@ -1,6 +1,6 @@ // // Attribute.swift -// SwiftHtml +// SwiftSgml // // Created by Tibor Bodecs on 2021. 07. 19.. // diff --git a/Sources/SwiftHtml/Components/Document.swift b/Sources/SwiftSgml/Document.swift similarity index 80% rename from Sources/SwiftHtml/Components/Document.swift rename to Sources/SwiftSgml/Document.swift index e2bfb7f..7736dfe 100644 --- a/Sources/SwiftHtml/Components/Document.swift +++ b/Sources/SwiftSgml/Document.swift @@ -1,6 +1,6 @@ // // Document.swift -// SwiftHtml +// SwiftSgml // // Created by Tibor Bodecs on 2021. 07. 19.. // @@ -17,7 +17,7 @@ public struct Document { public let type: `Type` public let root: Tag - public init(_ type: `Type` = .html, _ builder: () -> Tag) { + public init(_ type: `Type` = .unspecified, _ builder: () -> Tag) { self.type = type self.root = builder() } diff --git a/Sources/SwiftHtml/Components/DocumentRenderer.swift b/Sources/SwiftSgml/DocumentRenderer.swift similarity index 99% rename from Sources/SwiftHtml/Components/DocumentRenderer.swift rename to Sources/SwiftSgml/DocumentRenderer.swift index 89344ec..a4528c6 100644 --- a/Sources/SwiftHtml/Components/DocumentRenderer.swift +++ b/Sources/SwiftSgml/DocumentRenderer.swift @@ -1,6 +1,6 @@ // // DocumentRenderer.swift -// SwiftHtml +// SwiftSgml // // Created by Tibor Bodecs on 2021. 11. 19.. // @@ -24,7 +24,6 @@ public struct DocumentRenderer { // MARK: - private render methods private func renderDocumentType(_ type: Document.`Type`) -> String { - switch type { case .unspecified: return "" diff --git a/Sources/SwiftHtml/Components/Node.swift b/Sources/SwiftSgml/Node.swift similarity index 98% rename from Sources/SwiftHtml/Components/Node.swift rename to Sources/SwiftSgml/Node.swift index 52947f7..2e546e8 100644 --- a/Sources/SwiftHtml/Components/Node.swift +++ b/Sources/SwiftSgml/Node.swift @@ -1,6 +1,6 @@ // // Node.swift -// SwiftHtml +// SwiftSgml // // Created by Tibor Bodecs on 2021. 07. 19.. // diff --git a/Sources/SwiftHtml/Components/Tag.swift b/Sources/SwiftSgml/Tag.swift similarity index 95% rename from Sources/SwiftHtml/Components/Tag.swift rename to Sources/SwiftSgml/Tag.swift index eb2b8ee..b0a2669 100644 --- a/Sources/SwiftHtml/Components/Tag.swift +++ b/Sources/SwiftSgml/Tag.swift @@ -1,6 +1,6 @@ // // Tag.swift -// SwiftHtml +// SwiftSgml // // Created by Tibor Bodecs on 2021. 11. 19.. // diff --git a/Sources/SwiftHtml/Components/TagBuilder.swift b/Sources/SwiftSgml/TagBuilder.swift similarity index 98% rename from Sources/SwiftHtml/Components/TagBuilder.swift rename to Sources/SwiftSgml/TagBuilder.swift index 75821d9..39f91eb 100644 --- a/Sources/SwiftHtml/Components/TagBuilder.swift +++ b/Sources/SwiftSgml/TagBuilder.swift @@ -1,6 +1,6 @@ // // TagBuilder.swift -// SwiftHtml +// SwiftSgml // // Created by Tibor Bodecs on 2021. 07. 19.. // diff --git a/Sources/SwiftSitemap/ChangeFreq.swift b/Sources/SwiftSitemap/ChangeFreq.swift new file mode 100644 index 0000000..2a608d2 --- /dev/null +++ b/Sources/SwiftSitemap/ChangeFreq.swift @@ -0,0 +1,23 @@ +// +// Changefreq.swift +// SwiftSitemap +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +public final class ChangeFreq: Tag { + + public enum Value: String { + case always + case hourly + case daily + case weekly + case monthly + case yearly + case never + } + + public init(_ value: Value) { + super.init(Node(type: .standard, name: "changefreq", contents: value.rawValue)) + } +} diff --git a/Sources/SwiftSitemap/Exported.swift b/Sources/SwiftSitemap/Exported.swift new file mode 100644 index 0000000..f05ba1d --- /dev/null +++ b/Sources/SwiftSitemap/Exported.swift @@ -0,0 +1,8 @@ +// +// Exported.swift +// SwiftSitemap +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +@_exported import SwiftSgml diff --git a/Sources/SwiftSitemap/LastMod.swift b/Sources/SwiftSitemap/LastMod.swift new file mode 100644 index 0000000..6243014 --- /dev/null +++ b/Sources/SwiftSitemap/LastMod.swift @@ -0,0 +1,13 @@ +// +// LastMod.swift +// SwiftSitemap +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +public final class LastMod: Tag { + + public init(_ contents: String) { + super.init(Node(type: .standard, name: "lastmod", contents: contents)) + } +} diff --git a/Sources/SwiftSitemap/Loc.swift b/Sources/SwiftSitemap/Loc.swift new file mode 100644 index 0000000..a9678b6 --- /dev/null +++ b/Sources/SwiftSitemap/Loc.swift @@ -0,0 +1,13 @@ +// +// Loc.swift +// SwiftSitemap +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +public final class Loc: Tag { + + public init(_ contents: String) { + super.init(Node(type: .standard, name: "loc", contents: contents)) + } +} diff --git a/Sources/SwiftSitemap/Priority.swift b/Sources/SwiftSitemap/Priority.swift new file mode 100644 index 0000000..89b6dc4 --- /dev/null +++ b/Sources/SwiftSitemap/Priority.swift @@ -0,0 +1,13 @@ +// +// Priority.swift +// SwiftSitemap +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +public final class Priority: Tag { + + public init(_ value: Double) { + super.init(Node(type: .standard, name: "priority", contents: String(value))) + } +} diff --git a/Sources/SwiftSitemap/Sitemap.swift b/Sources/SwiftSitemap/Sitemap.swift new file mode 100644 index 0000000..57e723f --- /dev/null +++ b/Sources/SwiftSitemap/Sitemap.swift @@ -0,0 +1,15 @@ +// +// Sitemap.swift +// SwiftSitemap +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +// https://www.sitemaps.org/protocol.html +public final class Sitemap: Tag { + + public init(@TagBuilder _ builder: () -> [Tag]) { + super.init(Node(type: .standard, name: "sitemap"), children: builder()) + + } +} diff --git a/Sources/SwiftSitemap/SitemapIndex.swift b/Sources/SwiftSitemap/SitemapIndex.swift new file mode 100644 index 0000000..462c768 --- /dev/null +++ b/Sources/SwiftSitemap/SitemapIndex.swift @@ -0,0 +1,16 @@ +// +// SitemapIndex.swift +// SwiftSitemap +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +public final class SitemapIndex: Tag { + + public init(@TagBuilder _ builder: () -> [Tag]) { + super.init(Node(type: .standard, name: "sitemapindex", attributes: [ + .init(key: "xmlns", value: "http://www.sitemaps.org/schemas/sitemap/0.9"), + ]), children: builder()) + + } +} diff --git a/Sources/SwiftSitemap/Url.swift b/Sources/SwiftSitemap/Url.swift new file mode 100644 index 0000000..0abec00 --- /dev/null +++ b/Sources/SwiftSitemap/Url.swift @@ -0,0 +1,14 @@ +// +// Url.swift +// SwiftSitemap +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +public final class Url: Tag { + + public init(@TagBuilder _ builder: () -> [Tag]) { + super.init(Node(type: .standard, name: "url"), children: builder()) + + } +} diff --git a/Sources/SwiftSitemap/UrlSet.swift b/Sources/SwiftSitemap/UrlSet.swift new file mode 100644 index 0000000..4edb0b2 --- /dev/null +++ b/Sources/SwiftSitemap/UrlSet.swift @@ -0,0 +1,16 @@ +// +// UrlSet.swift +// SwiftSitemap +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +public final class UrlSet: Tag { + + public init(@TagBuilder _ builder: () -> [Tag]) { + super.init(Node(type: .standard, name: "urlset", attributes: [ + .init(key: "xmlns", value: "http://www.sitemaps.org/schemas/sitemap/0.9"), + ]), children: builder()) + + } +} diff --git a/Sources/SwiftHtml/Svg/Circle.swift b/Sources/SwiftSvg/Circle.swift similarity index 92% rename from Sources/SwiftHtml/Svg/Circle.swift rename to Sources/SwiftSvg/Circle.swift index a5a069f..e4ca47d 100644 --- a/Sources/SwiftHtml/Svg/Circle.swift +++ b/Sources/SwiftSvg/Circle.swift @@ -1,6 +1,6 @@ // -// File.swift -// +// Circle.swift +// SwiftSvg // // Created by Tibor Bodecs on 2021. 11. 29.. // diff --git a/Sources/SwiftSvg/Ellipse.swift b/Sources/SwiftSvg/Ellipse.swift new file mode 100644 index 0000000..339ea79 --- /dev/null +++ b/Sources/SwiftSvg/Ellipse.swift @@ -0,0 +1,19 @@ +// +// Ellipse.swift +// SwiftSvg +// +// Created by Tibor Bodecs on 2021. 12. 21.. +// + +public final class Ellipse: Tag { + + public init(cx: Int, cy: Int, rx: Int, ry: Int) { + super.init(Node(type: .standard, name: "ellipse", attributes: [ + .init(key: "cx", value: String(cx)), + .init(key: "cy", value: String(cy)), + .init(key: "rx", value: String(rx)), + .init(key: "ry", value: String(ry)), + ])) + + } +} diff --git a/Sources/SwiftSvg/Exported.swift b/Sources/SwiftSvg/Exported.swift new file mode 100644 index 0000000..dc8f213 --- /dev/null +++ b/Sources/SwiftSvg/Exported.swift @@ -0,0 +1,8 @@ +// +// Exported.swift +// SwiftSvg +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +@_exported import SwiftSgml diff --git a/Sources/SwiftHtml/Svg/Line.swift b/Sources/SwiftSvg/Line.swift similarity index 93% rename from Sources/SwiftHtml/Svg/Line.swift rename to Sources/SwiftSvg/Line.swift index 7da853d..9dbb7ed 100644 --- a/Sources/SwiftHtml/Svg/Line.swift +++ b/Sources/SwiftSvg/Line.swift @@ -1,6 +1,6 @@ // -// File.swift -// +// Line.swift +// SwiftSvg // // Created by Tibor Bodecs on 2021. 11. 29.. // diff --git a/Sources/SwiftSvg/Path.swift b/Sources/SwiftSvg/Path.swift new file mode 100644 index 0000000..2212941 --- /dev/null +++ b/Sources/SwiftSvg/Path.swift @@ -0,0 +1,16 @@ +// +// Path.swift +// SwiftSvg +// +// Created by Tibor Bodecs on 2021. 12. 21.. +// + + +public final class Path: Tag { + + public init(_ d: String) { + super.init(Node(type: .standard, name: "path", attributes: [ + .init(key: "d", value: d), + ])) + } +} diff --git a/Sources/SwiftSvg/Polygon.swift b/Sources/SwiftSvg/Polygon.swift new file mode 100644 index 0000000..cfab277 --- /dev/null +++ b/Sources/SwiftSvg/Polygon.swift @@ -0,0 +1,15 @@ +// +// Polygon.swift +// SwiftSvg +// +// Created by Tibor Bodecs on 2021. 12. 21.. +// + +public final class Polygon: Tag { + + public init(_ points: [Int]) { + super.init(Node(type: .standard, name: "polygon", attributes: [ + .init(key: "points", value: points.map { String($0) }.joined(separator: " ")), + ])) + } +} diff --git a/Sources/SwiftSvg/Polyline.swift b/Sources/SwiftSvg/Polyline.swift new file mode 100644 index 0000000..b67ae86 --- /dev/null +++ b/Sources/SwiftSvg/Polyline.swift @@ -0,0 +1,15 @@ +// +// Polyline.swift +// SwiftSvg +// +// Created by Tibor Bodecs on 2021. 12. 21.. +// + +public final class Polyline: Tag { + + public init(_ points: [Int]) { + super.init(Node(type: .standard, name: "polyline", attributes: [ + .init(key: "points", value: points.map { String($0) }.joined(separator: " ")), + ])) + } +} diff --git a/Sources/SwiftSvg/Rect.swift b/Sources/SwiftSvg/Rect.swift new file mode 100644 index 0000000..9740ea5 --- /dev/null +++ b/Sources/SwiftSvg/Rect.swift @@ -0,0 +1,18 @@ +// +// Rect.swift +// SwiftSvg +// +// Created by Tibor Bodecs on 2021. 12. 21.. +// + +public final class Rect: Tag { + + public init(x: Int, y: Int, width: Int, height: Int) { + super.init(Node(type: .standard, name: "rect", attributes: [ + .init(key: "x", value: String(x)), + .init(key: "y", value: String(y)), + .init(key: "width", value: String(width)), + .init(key: "height", value: String(height)), + ])) + } +} diff --git a/Sources/SwiftHtml/Svg/Svg.swift b/Sources/SwiftSvg/Svg.swift similarity index 98% rename from Sources/SwiftHtml/Svg/Svg.swift rename to Sources/SwiftSvg/Svg.swift index f58bec0..ba716cc 100644 --- a/Sources/SwiftHtml/Svg/Svg.swift +++ b/Sources/SwiftSvg/Svg.swift @@ -1,6 +1,6 @@ // -// File.swift -// +// Svg.swift +// SwiftSvg // // Created by Tibor Bodecs on 2021. 11. 29.. // diff --git a/Tests/SwiftHtmlTests/SvgTests.swift b/Tests/SwiftHtmlTests/SvgTests.swift deleted file mode 100644 index 15c09ea..0000000 --- a/Tests/SwiftHtmlTests/SvgTests.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// File.swift -// -// -// Created by Tibor Bodecs on 2021. 11. 29.. -// - -import XCTest -@testable import SwiftHtml - -final class SvgTests: XCTestCase { - - func testSvgWithLine() { - let doc = Document(.unspecified) { - Svg { - Line(x1: 1, y1: 2, x2: 3, y2: 4) - } - .width(24) - .height(24) - .viewBox(minX: 0, minY: 0, width: 24, height: 24) - .fill("none") - .strokeWidth(2) - .strokeLinecap("round") - .strokeLinejoin("round") - - } - XCTAssertEqual(DocumentRenderer(minify: true).render(doc), #""#) - } - - func testSvgWithCircle() { - let doc = Document(.unspecified) { - Svg { - Circle(cx: 1, cy: 2, r: 3) - } - } - XCTAssertEqual(DocumentRenderer(minify: true).render(doc), #""#) - } - -} diff --git a/Tests/SwiftHtmlTests/TagBuilderTests.swift b/Tests/SwiftHtmlTests/TagBuilderTests.swift deleted file mode 100644 index bb68439..0000000 --- a/Tests/SwiftHtmlTests/TagBuilderTests.swift +++ /dev/null @@ -1,112 +0,0 @@ -// -// TagBuilderTests.swift -// SwiftHtmlTests -// -// Created by Tibor Bodecs on 2021. 07. 11.. -// - -import XCTest -@testable import SwiftHtml - -final class TagBuilderTests: XCTestCase { - - func testOptionalBuilder() { - let condition: Bool = false - let doc = Document(.unspecified) { - Div { - if condition { - H1("a") - } - P("b") - } - } - - XCTAssertEqual(DocumentRenderer().render(doc), """ -
b
-c
-c
-1
-2
-3
-Dolor sit amet
-Hello, world!
"#) + XCTAssertEqual(DocumentRenderer(minify: true).render(Document { tag } ), #"Hello, world!
"#) } func testParagraphWithLink() { @@ -24,6 +24,6 @@ final class PTagTests: XCTestCase { Text("ipsum") } - XCTAssertEqual(DocumentRenderer(minify: true).render(Document(.unspecified) { tag } ), #"loremHello, world!ipsum
"#) + XCTAssertEqual(DocumentRenderer(minify: true).render(Document { tag } ), #"loremHello, world!ipsum
"#) } } diff --git a/Tests/SwiftHtmlTests/Tags/UlTagTests.swift b/Tests/SwiftHtmlTests/Tags/UlTagTests.swift index f97adaf..9f58e6b 100644 --- a/Tests/SwiftHtmlTests/Tags/UlTagTests.swift +++ b/Tests/SwiftHtmlTests/Tags/UlTagTests.swift @@ -11,7 +11,7 @@ import XCTest final class UlTagTests: XCTestCase { func testUl() { - let doc = Document(.unspecified) { + let doc = Document { Ul { Li("a") Li("b") diff --git a/Tests/SwiftRssTests/SwiftRssTests.swift b/Tests/SwiftRssTests/SwiftRssTests.swift new file mode 100644 index 0000000..83c09a1 --- /dev/null +++ b/Tests/SwiftRssTests/SwiftRssTests.swift @@ -0,0 +1,58 @@ +// +// SwiftRssTests.swift +// SwiftRssTests +// +// Created by Tibor Bodecs on 2021. 12. 19.. +// + +import XCTest +@testable import SwiftRss + +final class SwiftRssTests: XCTestCase { + + func testA() { + let doc = Document(.xml) { + Rss { + Channel { + Title("lorem") + Description("ipsum") + Link("") + Language("en_US") + LastBuildDate("2021-12-19") + PubDate("2021-12-19") + Ttl(250) + + Item { + Guid("http://localhost/") + .isPermalink() + Title("lorem") + Description("ipsum") + PubDate("lorem") + + } + } + } + } + XCTAssertEqual(DocumentRenderer().render(doc), """ + +