Move function for scoping purposes

This commit is contained in:
Scott Pfeil 2022-05-02 17:51:08 -04:00
parent d1239eda74
commit 48388343ef

View File

@ -23,3 +23,19 @@ public extension PageBehaviorHandlerModelProtocol {
self.behaviors = newBehaviors
}
}
public extension PageBehaviorHandlerModelProtocol where Self: MoleculeTreeTraversalProtocol {
/// Traverses all models and adds any required behavior models.
mutating func traverseAndAddRequiredBehaviors() {
let behaviorModels: [PageBehaviorModelProtocol] = reduceDepthFirstTraverse(options: .childFirst, depth: 0, initialResult: []) { (accumulator, molecule, depth) in
if let behaviorRequirer = molecule as? PageBehaviorProtocolRequirer {
return accumulator + behaviorRequirer.getRequiredBehaviors()
}
return accumulator
}
for behavior in behaviorModels {
add(behavior: behavior)
}
}
}