@@ -2,15 +2,17 @@ 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
56import xyz.javecs.tools.expr.Calculator
67import xyz.javecs.tools.text2expr.utils.normalize
78
89private val tokenizer = Tokenizer ()
10+ private val printValue = " これかな?\n <value>"
911
10- data class Evaluation (val value : Number = Double .NaN )
11- class RuleBuilder (source : String ) {
12+ data class Evaluation (val value : Number = Double .NaN , val rendered : String = " " )
13+ class RuleBuilder (source : String , template : String = printValue ) {
1214 private val parser = RuleParser ()
13-
15+ private val renderer = ST (template)
1416 init {
1517 parser.visit(parser(source).text2expr())
1618 }
@@ -61,9 +63,11 @@ class RuleBuilder(source: String) {
6163 return if (matches(norm, { (key, value) -> args.add(" $key = $value " ) })) {
6264 args.forEach { calc.eval(it) }
6365 expr().forEach { calc.eval(it) }
64- Evaluation (calc.value)
66+ renderer.add(" value" , calc.value)
67+ Evaluation (calc.value, renderer.render())
6568 } else {
6669 Evaluation ()
6770 }
6871 }
72+
6973}
0 commit comments