Moving stuff about/renaming
This commit is contained in:
@@ -2,4 +2,9 @@
|
||||
struct HBMustacheContext {
|
||||
let first: Bool
|
||||
let last: Bool
|
||||
|
||||
init(first: Bool = false, last: Bool = false) {
|
||||
self.first = first
|
||||
self.last = last
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,23 +1,9 @@
|
||||
|
||||
protocol HBMustacheBaseMethods {
|
||||
protocol HBMustacheMethods {
|
||||
func runMethod(_ name: String) -> Any?
|
||||
}
|
||||
protocol HBMustacheMethods {
|
||||
typealias Method = (Self) -> Any
|
||||
static var methods: [String: Method] { get set }
|
||||
}
|
||||
|
||||
extension HBMustacheMethods {
|
||||
static func addMethod(named name: String, method: @escaping Method) {
|
||||
Self.methods[name] = method
|
||||
}
|
||||
func runMethod(_ name: String) -> Any? {
|
||||
guard let method = Self.methods[name] else { return nil }
|
||||
return method(self)
|
||||
}
|
||||
}
|
||||
|
||||
extension String: HBMustacheBaseMethods {
|
||||
extension String: HBMustacheMethods {
|
||||
func runMethod(_ name: String) -> Any? {
|
||||
switch name {
|
||||
case "lowercased":
|
||||
@@ -30,7 +16,7 @@ extension String: HBMustacheBaseMethods {
|
||||
}
|
||||
}
|
||||
|
||||
extension Array: HBMustacheBaseMethods {
|
||||
extension Array: HBMustacheMethods {
|
||||
func runMethod(_ name: String) -> Any? {
|
||||
switch name {
|
||||
case "reversed":
|
||||
@@ -43,7 +29,7 @@ extension Array: HBMustacheBaseMethods {
|
||||
}
|
||||
}
|
||||
|
||||
extension Dictionary: HBMustacheBaseMethods {
|
||||
extension Dictionary: HBMustacheMethods {
|
||||
func runMethod(_ name: String) -> Any? {
|
||||
switch name {
|
||||
case "enumerated":
|
||||
|
||||
14
Sources/HummingbirdMustache/Parent.swift
Normal file
14
Sources/HummingbirdMustache/Parent.swift
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
protocol HBMustacheParent {
|
||||
func child(named: String) -> Any?
|
||||
}
|
||||
|
||||
extension HBMustacheParent {
|
||||
// default child to nil
|
||||
func child(named: String) -> Any? { return nil }
|
||||
}
|
||||
|
||||
extension Dictionary: HBMustacheParent where Key == String {
|
||||
func child(named: String) -> Any? { return self[named] }
|
||||
}
|
||||
|
||||
28
Sources/HummingbirdMustache/Sequence.swift
Normal file
28
Sources/HummingbirdMustache/Sequence.swift
Normal file
@@ -0,0 +1,28 @@
|
||||
|
||||
protocol HBMustacheSequence {
|
||||
func renderSection(with template: HBMustacheTemplate) -> String
|
||||
func renderInvertedSection(with template: HBMustacheTemplate) -> String
|
||||
}
|
||||
|
||||
extension Sequence {
|
||||
func renderSection(with template: HBMustacheTemplate) -> String {
|
||||
var string = ""
|
||||
for obj in self {
|
||||
string += template.render(obj)
|
||||
}
|
||||
return string
|
||||
}
|
||||
|
||||
func renderInvertedSection(with template: HBMustacheTemplate) -> String {
|
||||
var iterator = makeIterator()
|
||||
if iterator.next() == nil {
|
||||
return template.render(self)
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension Array: HBMustacheSequence {}
|
||||
extension ReversedCollection: HBMustacheSequence {}
|
||||
extension EnumeratedSequence: HBMustacheSequence {}
|
||||
@@ -37,7 +37,7 @@ extension HBMustacheTemplate {
|
||||
|
||||
func renderSection(_ child: Any?, parent: Any, with template: HBMustacheTemplate) -> String {
|
||||
switch child {
|
||||
case let array as HBSequence:
|
||||
case let array as HBMustacheSequence:
|
||||
return array.renderSection(with: template)
|
||||
case let bool as Bool:
|
||||
return bool ? template.render(parent) : ""
|
||||
@@ -52,7 +52,7 @@ extension HBMustacheTemplate {
|
||||
|
||||
func renderInvertedSection(_ child: Any?, parent: Any, with template: HBMustacheTemplate) -> String {
|
||||
switch child {
|
||||
case let array as HBSequence:
|
||||
case let array as HBMustacheSequence:
|
||||
return array.renderInvertedSection(with: template)
|
||||
case let bool as Bool:
|
||||
return bool ? "" : template.render(parent)
|
||||
@@ -86,7 +86,7 @@ extension HBMustacheTemplate {
|
||||
child = _getChild(named: nameSplit[...], from: object)
|
||||
}
|
||||
if let method = method,
|
||||
let runnable = child as? HBMustacheBaseMethods {
|
||||
let runnable = child as? HBMustacheMethods {
|
||||
if let result = runnable.runMethod(method) {
|
||||
return result
|
||||
}
|
||||
@@ -113,71 +113,3 @@ extension HBMustacheTemplate {
|
||||
}
|
||||
}
|
||||
|
||||
protocol HBMustacheParent {
|
||||
func child(named: String) -> Any?
|
||||
}
|
||||
|
||||
extension HBMustacheParent {
|
||||
// default child to nil
|
||||
func child(named: String) -> Any? { return nil }
|
||||
}
|
||||
|
||||
extension Dictionary: HBMustacheParent where Key == String {
|
||||
func child(named: String) -> Any? { return self[named] }
|
||||
}
|
||||
|
||||
protocol HBSequence {
|
||||
func renderSection(with template: HBMustacheTemplate) -> String
|
||||
func renderInvertedSection(with template: HBMustacheTemplate) -> String
|
||||
}
|
||||
|
||||
extension Array: HBSequence {
|
||||
func renderSection(with template: HBMustacheTemplate) -> String {
|
||||
var string = ""
|
||||
for obj in self {
|
||||
string += template.render(obj)
|
||||
}
|
||||
return string
|
||||
}
|
||||
|
||||
func renderInvertedSection(with template: HBMustacheTemplate) -> String {
|
||||
if count == 0 {
|
||||
return template.render(self)
|
||||
}
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
extension ReversedCollection: HBSequence {
|
||||
func renderSection(with template: HBMustacheTemplate) -> String {
|
||||
var string = ""
|
||||
for obj in self {
|
||||
string += template.render(obj)
|
||||
}
|
||||
return string
|
||||
}
|
||||
|
||||
func renderInvertedSection(with template: HBMustacheTemplate) -> String {
|
||||
if count == 0 {
|
||||
return template.render(self)
|
||||
}
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
extension EnumeratedSequence: HBSequence {
|
||||
func renderSection(with template: HBMustacheTemplate) -> String {
|
||||
var string = ""
|
||||
for obj in self {
|
||||
string += template.render(obj)
|
||||
}
|
||||
return string
|
||||
}
|
||||
|
||||
func renderInvertedSection(with template: HBMustacheTemplate) -> String {
|
||||
if self.underestimatedCount == 0 {
|
||||
return template.render(self)
|
||||
}
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user