This commit is contained in:
Adam Fowler
2021-03-19 17:49:02 +00:00
parent 66cbb25e16
commit 3c50d1c15c
4 changed files with 15 additions and 7 deletions

View File

@@ -2,7 +2,8 @@
/// Lambda function. Can add this to object being rendered to filter contents of objects.
///
/// See http://mustache.github.io/mustache.5.html for more details on
/// mustache lambdas
/// mustache lambdas. Lambdas work slightly differently in HummingbirdMustache though
/// as they are passed a template representing the contained text and not the raw text
/// e.g
/// ```
/// struct Object {

View File

@@ -261,6 +261,7 @@ extension HBParser {
}
extension HBParser {
/// context used in parser error
public struct Context {
public let line: String
public let lineNumber: Int

View File

@@ -1,14 +1,20 @@
extension HBMustacheTemplate {
/// Error return by `HBMustacheTemplate.parse`. Includes information about where error occurred
public struct ParserError: Swift.Error {
public let context: HBParser.Context
public let error: Swift.Error
}
/// Error generated by `HBMustacheTemplate.parse`
public enum Error: Swift.Error {
/// the end section does not match the name of the start section
case sectionCloseNameIncorrect
/// tag was badly formatted
case unfinishedName
/// was not expecting a section end
case expectedSectionEnd
/// set delimiter tag badly formatted
case invalidSetDelimiter
}

View File

@@ -1,17 +1,17 @@
/// Objects that can have a methods run on them. Mustache methods are specific to this implementation
/// Objects that can have a transforms run on them. Mustache transforms are specific to this implementation
/// of Mustache. They allow you to process objects before they are rendered.
///
/// The syntax for applying methods is `{{method(variable)}}`. Methods can be applied to both
/// variables and sections.
/// The syntax for applying transforms is `{{method(variable)}}`. Transforms can be applied to both
/// variables, sections and inverted sections.
///
/// A simple example would be ensuring a string is lowercase.
/// ```
/// {{lowercased(myString)}}
/// ```
/// If applying a method to a sequence then the closing element of the sequence should not include the
/// method name eg
/// If applying a transform to a sequence then the closing element of the sequence should include the
/// transform name eg
/// ```
/// {{#reversed(sequence)}}{{.}}{{\sequence}}
/// {{#reversed(sequence)}}{{.}}{{\reversed(sequence)}}
/// ```
public protocol HBMustacheTransformable {
func transform(_ name: String) -> Any?