Swiftpack.co -  hummingbird-project/hummingbird-mustache as Swift Package
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
hummingbird-project/hummingbird-mustache
Mustache template engine for Hummingbird server framework
.package(url: "https://github.com/hummingbird-project/hummingbird-mustache.git", from: "0.6.1")

HummingbirdMustache

Package for rendering Mustache templates. Mustache is a "logic-less" templating language commonly used in web and mobile platforms. You can find out more about Mustache here.

While Hummingbird Mustache has been designed to be used with the Hummingbird server framework it has no dependencies and can be used as a standalone library.

Usage

Load your templates from the filesystem

let library = HBMustacheLibrary("folder/my/templates/are/in")

This will look for all the files with the extension ".mustache" in the specified folder and subfolders and attempt to load them. Each file is registed with the name of the file (with subfolder, if inside a subfolder) minus the "mustache" extension.

Render an object with a template

let output = library.render(object, withTemplate: "myTemplate")

HummingbirdMustache treats an object as a set of key/value pairs when rendering and will render both dictionaries and objects via Mirror reflection. Find out more on how Mustache renders objects here.

Using with Hummingbird

HummingbirdMustache doesn't have any integration with Hummingbird as I wanted to keep the library dependency free. But if you are going to use the library with Hummingbird it is recommended you extend HBApplication to store an instance of your library.

extension HBApplication {
    var mustache: HBMustacheLibrary {
        get { self.extensions.get(\.mustache) }
        set { self.extensions.set(\.mustache, value: newValue) }
    }
}

extension HBRequest {
    var mustache: HBMustacheLibrary { self.application.mustache }
}
// load mustache templates from templates folder
application.mustache = try .init(directory: "templates")

You can now access your mustache templates via HBRequest eg HBRequest.mustache.render(obj, withTemplate: "myTemplate")

Support

Hummingbird Mustache supports all standard Mustache tags and is fully compliant with the Mustache spec with the exception of the Lambda support.

Additional features

Hummingbird Mustache includes some features that are specific to its implementation. Please follow the links below to find out more.

GitHub

link
Stars: 1
Last commit: 2 days ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Release Notes

v0.6.1
2 days ago
  • Make HBMustacheCustomRenderable public
  • Add tests for HBMustacheCustomRenderable

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