Swiftpack.co - Alja7dali/swift-web-page-vapor as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by Alja7dali.
Alja7dali/swift-web-page-vapor 0.0.1
💧 Vapor plugin for type-safe HTML/CSS views.
⭐️ 3
🕓 2 years ago
iOS macOS watchOS tvOS linux macOS iOS
.package(url: "https://github.com/Alja7dali/swift-web-page-vapor.git", from: "0.0.1")

💧 swift-web-page-vapor

Swift Version: 5.1 Swift Package Manager Swift Package Manager

Vapor plugin for type-safe HTML/CSS views using Swep.

Motivation

The most popular choice for rendering HTML/CSS in a Vapor web app is to use the Leaf templating language, but it exposes your application to runtime errors and invalid HTML/CSS. Our plugin prevents these runtime issues at compile-time by embedding HTML/CSS directly into Swift’s powerful type system. It uses the Swep DSL for constructing HTML/CSS documents using plain Swift data structures.

Usage

To use the plugin all you have to do is return a Document or Stylesheet value from your router callback:

import Swep
import Vapor
import SwepVaporSupport

var env = try Environment.detect()
let app = Application(env)
defer { app.shutdown() }

app.get { _ in
  document {
    head {
      style {
        selector("*") {
          margin(.px(5))
          backgroundColor(.hex(0xd1d1d1))
        }
      }
      link()
        .rel(.stylesheet)
        .href("style.min.css")
    }
    body {
      h1("Hello, type-safe HTML/CSS on Vapor!")
        .color(.green)
    }
  }
}

app.get("style.min.css") {
  stylesheet {
    selector("body") {
      padding(.rem(0.5))
      lineHeight(1.35)
      fontFamily("SanFranciscoDisplay-Regular")
    }
    selector("h1") {
      marginTop(.rem(2))
      marginBottom(.px(0))
    }
  }
}

try app.run()

Take it for a spin

We've included a sample Vapor application in this repo to show off its usage. To run the app immediately, simply do:

  • swift run SwepVaporSupportExample
  • Open your browser to http://localhost:8080

The HTML/CSS for that page is constructed and rendered with Swep!!

Installation

Swift Package Manager (SPM)

If you want to use swift-web-page-vapor in a project that uses SPM, it's as simple as adding a dependencies clause to your Package.swift:

dependencies: [
  .package(url: "https://github.com/alja7dali/swift-web-page-vapor.git", from: "0.0.1")
]

From there you can add SwepVaporSupport as target dependencies.

let SwepVaporSupport: Target.Dependency = .product(name: "SwepVaporSupport", package: "swift-web-page-vapor")
...
targets: [
  .target(name: "yourProject", dependencies: [SwepVaporSupport]),
]

License

All modules are released under the MIT license. See LICENSE for details.

GitHub

link
Stars: 3
Last commit: 2 years ago
Advertisement: IndiePitcher.com - Cold Email Software for Startups

Release Notes

v0.0.1
2 years ago

SwepVaporSupport initial release

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