@@ -4,24 +4,25 @@ import xyz.javecs.tools.expr.Calculator
44import xyz.javecs.tools.text2expr.parsers.RuleBuilder
55import xyz.javecs.tools.text2expr.parsers.RuleRenderer
66import xyz.javecs.tools.text2expr.parsers.Variable
7+ import xyz.javecs.tools.text2expr.utils.TemplateLoader
78import xyz.javecs.tools.text2expr.utils.normalize
89import xyz.javecs.tools.text2expr.utils.read
910import xyz.javecs.tools.text2expr.utils.resources
1011
1112class Text2Expr (rulePath : String = " rules" ) {
1213 private val rules = ArrayList <RuleBuilder >()
13- private val calc = Calculator ()
14- private val renderer = RuleRenderer (read(" templates/reply.st" ))
14+ private val templates = TemplateLoader (defaultTemplate = read(" templates/reply.st" ))
1515
1616 init {
17- resources(rulePath).forEach { rules.add(RuleBuilder (read(it))) }
17+ resources(rulePath).forEach { rules.add(RuleBuilder (source = read(it), name = it )) }
1818 }
1919
2020 fun eval (text : String , rendered : Boolean = false): String {
2121 rules.forEach {
2222 try {
2323 val evaluation = it.eval(text)
2424 if (evaluation.value != Double .NaN ) return if (rendered) {
25+ val renderer = RuleRenderer (templates.templateOf(it.name))
2526 renderer.add(" variables" , evaluation.variables.map { Variable (it.key, it.value) }.toList())
2627 renderer.add(" expr" , evaluation.expr)
2728 renderer.add(" text" , text)
@@ -33,6 +34,6 @@ class Text2Expr(rulePath: String = "rules") {
3334 } catch (e: Exception ) {
3435 }
3536 }
36- return calc .eval(normalize(text)).value.toString()
37+ return Calculator () .eval(normalize(text)).value.toString()
3738 }
3839}
0 commit comments