32 lines
637 B
Kotlin
32 lines
637 B
Kotlin
package nl.astraeus.css.properties
|
|
|
|
fun calc(expression: CalcExpression) = Calc(expression)
|
|
|
|
infix operator fun CalcExpression.plus(other: CalcExpression) = CompoundCalcExpression(
|
|
this,
|
|
"+",
|
|
other
|
|
)
|
|
|
|
infix operator fun CalcExpression.minus(other: CalcExpression) = CompoundCalcExpression(
|
|
this,
|
|
"-",
|
|
other
|
|
)
|
|
|
|
interface CalcExpression
|
|
|
|
class CompoundCalcExpression(
|
|
val left: CalcExpression,
|
|
val operator: String,
|
|
val right: CalcExpression
|
|
): CalcExpression {
|
|
override fun toString(): String {
|
|
return "$left $operator $right"
|
|
}
|
|
}
|
|
|
|
class Calc(
|
|
expression: CalcExpression
|
|
) : CssProperty(expression.toString())
|