mirror of
https://github.com/divkit/divkit.git
synced 2026-06-06 20:07:59 +00:00
26 lines
672 B
Swift
26 lines
672 B
Swift
import Foundation
|
|
|
|
public final class DivVariableTracker {
|
|
private var usedVariables: [DivCardID: Set<DivVariableName>] = [:]
|
|
|
|
init() {}
|
|
|
|
func onModelingStarted(cardId: DivCardID) {
|
|
usedVariables[cardId] = []
|
|
}
|
|
|
|
func onVariablesUsed(cardId: DivCardID, variables: Set<DivVariableName>) {
|
|
usedVariables[cardId] = (usedVariables[cardId] ?? []).union(variables)
|
|
}
|
|
|
|
func getAffectedCards(variables: Set<DivVariableName>) -> Set<DivCardID> {
|
|
var cardIds = Set<DivCardID>()
|
|
usedVariables.forEach { cardId, usedVariables in
|
|
if (!usedVariables.isDisjoint(with: variables)) {
|
|
cardIds.insert(cardId)
|
|
}
|
|
}
|
|
return cardIds
|
|
}
|
|
}
|