@@ -2,18 +2,14 @@ package xyz.javecs.tools.text2expr.parsers
22
33import com.atilika.kuromoji.ipadic.Token
44import com.atilika.kuromoji.ipadic.Tokenizer
5- import org.stringtemplate.v4.ST
65import xyz.javecs.tools.expr.Calculator
76import xyz.javecs.tools.text2expr.utils.normalize
87
98private val tokenizer = Tokenizer ()
10- private val printValue = " これかな?\n <value>"
11-
12- data class Variable (val key : String , val value : Double )
13- data class Evaluation (val value : Number = Double .NaN , val rendered : String = " " )
14- class RuleBuilder (source : String , template : String = printValue) {
9+ data class Evaluation (val value : Number = Double .NaN , val expr : List <String > = ArrayList (), val variables : Map <String , Double > = HashMap ())
10+ class RuleBuilder (source : String ) {
1511 private val parser = RuleParser ()
16- private val renderer = ST (template)
12+
1713 init {
1814 parser.visit(parser(source).text2expr())
1915 }
@@ -64,11 +60,7 @@ class RuleBuilder(source: String, template: String = printValue) {
6460 return if (matches(norm, { (key, value) -> args.add(" $key = $value " ) })) {
6561 args.forEach { calc.eval(it) }
6662 expr().forEach { calc.eval(it) }
67- renderer.add(" variables" , calc.variables().map { Variable (it.key, it.value) }.toList())
68- renderer.add(" expr" , expr())
69- renderer.add(" text" , text)
70- renderer.add(" value" , calc.value)
71- Evaluation (calc.value, renderer.render())
63+ Evaluation (calc.value, expr().toList(), calc.variables())
7264 } else {
7365 Evaluation ()
7466 }
0 commit comments