LeafConfiguration Formatting Options
Pre-release
Pre-release
This release exposes configuration methods for setting the default presentation output of data in rendered Leaf templates.
Static options are settable only until app.leaf.renderer
is accessed or a render(...)
call is made.
Property Options
Stored property options in a LeafConfiguration
may be used in various ways by a LeafRenderer
which the configuration object was for, and changes to them after the object was provided to a specific LeafRenderer
will have no affect.
.rootDirectory: String // The default file directory used for file-system based `LeafSource`s
Static Options
Static options on LeafConfiguration
are effectively constant once any LeafRenderer
has been instantiated and attempts to change them will assert in Debug
and silently fail in Release
to prevent inconsistent behavior.
// The global tag indicator for LeafKit
.tagIndicator: Character == "#"
// Encoding used when a template is serialized
.encoding: String.Encoding == .utf8
// Formatters for converting the base internal data types to Strings for serialization
.boolFormatter: (Bool) -> String = { $0.description } // Bool.description
.intFormatter: (Int) -> String = { $0.description } // Int.description
.doubleFormatter: (Double) -> String = { $0.description } // Double.description
.nilFormatter: () -> String = { "" } // Empty string (Optional containing .none)
.voidFormatter: () -> String = { "" } // Empty string (Tag with no return value)
.stringFormatter: (String) -> String = { $0 } // Identity return
.dataFormatter: (Data) -> String? =
{ String(data: $0, encoding: Self._encoding) } // Data using .encoding
// Note: Array & Dictionaries elements will already have been converted to Strings
.arrayFormatter: ([String]) -> String = // Array: [element, ..., element]
{ "[\($0.map {"\"\($0)\""}.joined(separator: ", "))]" }
.dictFormatter: ([String: String]) -> String = // Dictionary: [key: value, ..., key: value]
{ "[\($0.map { "\($0): \"\($1)\"" }.joined(separator: ", "))]" }