Swiftpack.co - robb/Swim as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by robb.
robb/Swim 0.4.0
A DSL for writing HTML in Swift
⭐️ 302
🕓 2 years ago
iOS macOS
.package(url: "https://github.com/robb/Swim.git", from: "0.4.0")

Swim – Swift Markup

A DSL for building HTML documents with Swift function builders.

Currently in use on my personal website.

import Swim
import HTML

let myDocument = html(lang: "en-US") {
    head {
        meta(charset: "utf-8", content: "text/html", httpEquiv: "Content-Type")
    }
    body(customAttributes: [ "data-foo": "bar" ]) {
        article(classes: "readme", "modern") {
            header {
                h1 {
                    "This is a great article."
                }
            }

            p {
                "Hello World!"
                br()
                "How are you?"
            }

            p {
                "This is a"
                a(href: "https://swift.org") { "link to the Swift website" }
                "."
            }
        }
    }
}

By generating all words in the language according to the HTML specification, we can make sure that only valid HTML can be expressed.

For example, the above would generate this HTML:

<html lang="en-US">
  <head>
    <meta http-equiv="Content-Type" charset="utf-8" content="text/html" />
  </head>
  <body data-foo="bar">
    <article class="readme modern">
      <header>
        <h1>
          This is a great article.
        </h1>
      </header>
      <p>
        Hello World!
        <br/>
        How are you?
      </p>
      <p>
        This is a
        <a href="https://swift.org">
          link to the Swift website
        </a>
        .
      </p>
    </article>
  </body>
</html>

GitHub

link
Stars: 302
Last commit: 1 year ago
Advertisement: IndiePitcher.com - Cold Email Software for Startups

Release Notes

0.4.0: Explicit Void
2 years ago
  • Fixes support for Swift 5.6 thanks to @kevinrenskers in #40.

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics