Newer
Older
kotlin-css-generator / src / commonMain / kotlin / nl / astraeus / css / properties / Calc.kt
rnentjes on 9 Nov 2021 637 bytes v. 1.0.4, add vh,vw measurements
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())