Create mechanism for providing lazily evaluated context data

This commit is contained in:
David Jennes
2022-07-28 00:33:36 +02:00
parent 0d8fdbc3aa
commit 1072e919a3
3 changed files with 81 additions and 8 deletions

View File

@@ -11,19 +11,21 @@ public class Context {
/// The context's environment, such as registered extensions, classes,
public let environment: Environment
init(dictionaries: [[String: Any?]], environment: Environment) {
self.dictionaries = dictionaries
self.environment = environment
}
/// Create a context from a dictionary (and an env.)
///
/// - Parameters:
/// - dictionary: The context's data
/// - environment: Environment such as extensions,
public init(dictionary: [String: Any] = [:], environment: Environment? = nil) {
if !dictionary.isEmpty {
dictionaries = [dictionary]
} else {
dictionaries = []
}
self.environment = environment ?? Environment()
public convenience init(dictionary: [String: Any] = [:], environment: Environment? = nil) {
self.init(
dictionaries: dictionary.isEmpty ? [] : [dictionary],
environment: environment ?? Environment()
)
}
/// Access variables in this context by name