Vaux
Vaux is a library that allows you to generate HTML using Swift. It includes a domain-specific language written in Swift for HTML, and its purpose is to allow developers to write HTML, but in Swift.
Warning: If you are reading this, this is alpha software based on Swift 5.1, which is currently only downloadable from swift.org or in Xcode 11 Beta. This is a work in progress in every sense of the phrase.
Requirements
Motivation
At WWDC2019, Apple announced functionality for a new feature in Swift called Function Builders. The core functionality of Vaux, which includes a Swift DSL for HTML, is heavily inspired by this proposal and corresponding examples. As such, this library exists with two primary goals:
- Provide an underpinning for future potential opinionated frameworks for web interfaces written in Swift (for example, this).
- Learn more about function builders.
At the time of this library’s first open source release, it is standing tall on the shoulders of giants, and gratitude is in order.
Example
Let’s say you want to write the following HTML:
<html>
<head>
<title>
Page title
</title>
</head>
<body>
<div>
Page body
</div>
</body>
</html>
Rather than write this out by hand, you can first write a function that will return HTML using Vaux:
var pageTitle = "Page title"
var pageBody = "Page body"
func simplePage() -> HTML {
html {
head {
title(pageTitle)
}
body {
div {
pageBody
}
}
}
}
Then, you can render the function result into a static html file using Vaux like so:
let vaux = Vaux()
vaux.outputLocation = .file(name: "testing", path: "/tmp/")
do {
try vaux.render(html)
} catch let error {
print("Uh-oh, something happened: \(error.localizedDescription)")
}
The end result is that you have a file called testing.html
in your /tmp/
directory.
Creating HTML elements
Note: For a series of real use cases for Vaux, check out VauxTests.swift
to see examples of different tags.
Write a function that returns HTML
, and add your builders inside this function:
func buildPage() -> HTML {
}
Documentation
Coming soon…
Importing This Library
Vaux is available as a Swift package on GitHub. If you are using the Xcode 11 beta, you can simply add this url (https://github.com/dokun1/Vaux) as a dependency. Otherwise, you must include this as a dependency in your Package.swift
file and use the command line to to create a project for this.
Vaux
Vaux is a library that allows you to generate HTML using Swift. It includes a domain-specific language written in Swift for HTML, and its purpose is to allow developers to write HTML, but in Swift.
Warning: If you are reading this, this is alpha software based on Swift 5.1, which is currently only downloadable from swift.org or in Xcode 11 Beta. This is a work in progress in every sense of the phrase.
Requirements
Motivation
At WWDC2019, Apple announced functionality for a new feature in Swift called Function Builders. The core functionality of Vaux, which includes a Swift DSL for HTML, is heavily inspired by this proposal and corresponding examples. As such, this library exists with two primary goals:
At the time of this library’s first open source release, it is standing tall on the shoulders of giants, and gratitude is in order.
Example
Let’s say you want to write the following HTML:
Rather than write this out by hand, you can first write a function that will return HTML using Vaux:
Then, you can render the function result into a static html file using Vaux like so:
The end result is that you have a file called
testing.html
in your/tmp/
directory.Creating HTML elements
Note: For a series of real use cases for Vaux, check out
VauxTests.swift
to see examples of different tags.Write a function that returns
HTML
, and add your builders inside this function:Documentation
Coming soon…
Importing This Library
Vaux is available as a Swift package on GitHub. If you are using the Xcode 11 beta, you can simply add this url (https://github.com/dokun1/Vaux) as a dependency. Otherwise, you must include this as a dependency in your
Package.swift
file and use the command line to to create a project for this.