Skip to content

Alexander-Ignition/swift-template-dsl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Swift TemplateDSL

SPM compatible GitHub license

Swift template engine

TemplateDSL will help you

  • code generation
  • html pages
  • any complex strings

Template Example

Instalation

Add dependency to Package.swift...

.package(url: "https://github.com/Alexander-Ignition/swift-template-dsl", from: "0.0.1"),

... and your target

.target(name: "ExampleApp", dependencies: [
    .product(name: "TemplateDSL", package: "swift-template-dsl")
]),

Usage

Two simple steps:

  1. write yout Template.
import TemplateDSL

struct Page: Template {
    let items = Array(0..<3)

    var body: [Template] {
        Text("Header")
        ForEach(items) { item in
            Indent {
                Text("- item: \(item)")
            }
        }
        Text("Footer")
    }
}
  1. render Template.
let page = Page()
let string = page.render()
print(string)
/*
Header
    - item: 0
    - item: 1
    - item: 2
Footer
*/

Preview

You can use the SwiftUI preview to quickly view the templates.

See the more complex example in Sources/TemplateExample/Colors.swift

#if canImport(SwiftUI) && DEBUG
import SwiftUI

struct Page_Previews: PreviewProvider {
    private static let string = Page().render()
    
    static var previews: some View {
        TextField("None", text: .constant(string)).padding()
    }
}
#endif