一个简单、通用、可扩展的 Swift 规则引擎。
# Podfile
use_frameworks!
target 'YOUR_TARGET_NAME' do
pod 'AEPRulesEngine'
end
替换 YOUR_TARGET_NAME
,然后在 Podfile
目录中输入
$ pod install
要将 AEPRulesEngine 包添加到您的应用程序,请从 Xcode 菜单中选择
File > Swift Packages > Add Package Dependency...
输入 AEPRulesEngine 包存储库的 URL:https://github.com/adobe/aepsdk-rulesengine-ios.git
。
出现提示时,输入特定版本或版本范围。
或者,如果您的项目有一个 Package.swift
文件,您可以直接将 AEPRulesEngine 添加到您的依赖项中
dependencies: [
.package(url: "https://github.com/adobe/aepsdk-rulesengine-ios.git", .upToNextMajor(from: "5.0.0"))
]
要创建 RulesEngine
实例,请定义一个 Evaluator
并将其传递给 RulesEngine
的初始化器
let evaluator = ConditionEvaluator(options: .caseInsensitive)
let rulesEngine = RulesEngine(evaluator: evaluator)
任何符合 Rule
协议的内容都可以用作规则
public class MobileRule: Rule {
init(condition: Evaluable) { self.condition = condition }
var condition: Evaluable
}
let condition = ComparisonExpression(lhs: "abc", operationName: "equals", rhs: "abc")
let rule = MobileRule(condition: condition)
rulesEngine.addRules(rules: [rule])
没有动态获取值的灵活性的规则将始终评估为 true 或 false。 要在运行时获取规则的值,请使用 Mustache Token
let mustache = Operand<String>(mustache: "{{company}}")
let condition = ComparisonExpression(lhs: mustache, operationName: "equals", rhs: "adobe")
let rule = MobileRule(condition: condition)
rulesEngine.addRules(rules: [rule])
使用 evaluate
方法通过 RulesEngine
处理 Traversable
数据
let matchedRules = rulesEngine.evaluate(data: ["company":"adobe"])
欢迎贡献! 阅读 贡献指南 获取更多信息。
此项目在 Apache V2 许可下获得许可。 有关更多信息,请参见 LICENSE。