@@ -20,7 +20,7 @@ case object NumberType extends VariableType("Number") {
20
20
if (constructorType =!= this ) {
21
21
Failure (s " the constructor type should be $name but is ${constructorType.name}" )
22
22
} else {
23
- attempt(expr.evaluateT[OpenlawBigDecimal ](executionResult).map(OpenlawBigDecimal (_) ))
23
+ attempt(expr.evaluateT[OpenlawBigDecimal ](executionResult).map(OpenlawBigDecimal ))
24
24
}
25
25
case _ =>
26
26
Failure (s " the constructor for $name only handles single values " )
@@ -79,22 +79,25 @@ case object NumberType extends VariableType("Number") {
79
79
80
80
trait NumberFormatter {
81
81
def formatNumber (bd: BigDecimal ): String = {
82
- bd.bigDecimal.toPlainString.replaceAll(" (\\ d)(?=(\\ d{3})+$)" , " $1," )
82
+ val regex = " (\\ d)(?=(\\ d{3})+$)"
83
+ val fullNumber = bd.bigDecimal.toPlainString
84
+ val split = fullNumber.split(" \\ ." )
85
+ val intNumber = split(0 )
86
+ val decimalNumber = split.lift(1 )
87
+ val formattedIntNumber = intNumber.replaceAll(regex, " $1," )
88
+
89
+ decimalNumber.map(d => formattedIntNumber + " ." + d).getOrElse(formattedIntNumber)
83
90
}
84
91
}
85
92
86
93
case object NoTrailingZerosFormatter extends Formatter with NumberFormatter {
87
94
override def format (value : OpenlawValue , executionResult : TemplateExecutionResult ): Result [Seq [AgreementElement ]] =
88
- attempt(VariableType .convert[OpenlawBigDecimal ](value).bigDecimal.stripTrailingZeros()) map {
89
- case bd => Seq (FreeText (Text (formatNumber(bd))))
90
- }
95
+ attempt(VariableType .convert[OpenlawBigDecimal ](value).bigDecimal.stripTrailingZeros()) map (bd => Seq (FreeText (Text (formatNumber(bd)))))
91
96
}
92
97
93
98
case object RawNumberFormatter extends Formatter with NumberFormatter {
94
99
override def format (value : OpenlawValue , executionResult : TemplateExecutionResult ): Result [Seq [AgreementElement ]] =
95
- attempt(VariableType .convert[OpenlawBigDecimal ](value).bigDecimal.stripTrailingZeros().toPlainString) map {
96
- case str => Seq (FreeText (Text (str)))
97
- }
100
+ attempt(VariableType .convert[OpenlawBigDecimal ](value).bigDecimal.stripTrailingZeros().toPlainString) map (str => Seq (FreeText (Text (str))))
98
101
}
99
102
100
103
case class Rounding (expr: Expression ) extends Formatter with NumberFormatter {
0 commit comments