StencilTemplateEngine

public class StencilTemplateEngine: TemplateEngine

A TemplateEngine for Kitura that uses Stencil for templating.

The file extension for templates using this engine is stencil. If the file extension of the template specified in the call to response.render matches, this template engine will be invoked. If no extension is specified, and this engine has been set as the default via router.setDefault(templateEngine:), the extension will be applied automatically.

Usage Example:

   router.add(templateEngine: StencilTemplateEngine())

   // An example of using a dictionary of [String: Any] parameters to be rendered
   router.get("/hello") { request, response, next in
       try response.render("StencilExample.stencil", context: ["name": "World!"]])
       next()
   }

A second example, using type-safe templating. For more information, see: https://developer.ibm.com/swift/2018/05/31/type-safe-templating/

   // A codable type containing structured data to be used in our template
   struct Friend: Codable {
       let firstName: String
       let lastName: String
   }

   // Structured data that we wish to render
   let friends = [Friend(firstName: "Jack", lastName: "Sparrow"), Friend(firstName: "Captain", lastName: "America")]

   // An example of using type-safe templating to render data from a Swift type
   router.get("/friends") { request, response, next in
       try response.render("MyStencil.stencil", with: friends, forKey: "friends")
       next()
   }
  • The file extension of files rendered by the KituraStencil template engine.

    Declaration

    Swift

    public let fileExtension = "stencil"
  • Initializes a KituraStencil template engine.

    Declaration

    Swift

    public init(extension: Extension = Extension())

    Parameters

    extension

    An optional Stencil Extension for customizing the underlying template engine.

  • Defines the filesystem paths where your Stencil templates can be located. Note that Kitura calls this function for you with a default path of ./Views/ or you can customize this by setting the router.viewsPath property.

    Declaration

    Swift

    public func setRootPaths(rootPaths: [String])

    Parameters

    rootPaths

    The paths to be searched for Stencil templates.

  • This function is deprecated. Use render(filePath:context:options:templateName:) instead.

    Declaration

    Swift

    public func render(filePath: String, context: [String: Any]) throws -> String
  • Take a template file and a set of variables in the form of a context and generate content to be sent back to the client. Note that this function is called by Kitura when you call response.render(_:context:options:).

    Declaration

    Swift

    public func render(filePath: String, context: [String: Any], options: RenderingOptions,
                       templateName: String) throws -> String

    Parameters

    filePath

    The path of the template file to use when generating the content.

    context

    A set of variables in the form of a Dictionary of Key/Value pairs, that can be used when generating the content.

    options

    Unused by this templating engine.

    templateName

    The name of the template.

  • Take a template file and an Encodable type and generate the content to be sent back to the client. Note that this function is called by Kitura when you call response.render(_:with:forKey:options:).

    Declaration

    Swift

    public func render<T: Encodable>(filePath: String, with value: T, forKey key: String?,
                                   options: RenderingOptions, templateName: String) throws -> String

    Parameters

    filePath

    The path of the template file to use when generating the content.

    with

    A value that conforms to Encodable which is used to generate the content.

    forKey

    A value used to match the Encodable values to the correct variable in a template file. The forKey value should match the desired variable in the template file.

    options

    Unused by this templating engine.

    templateName

    The name of the template.