v. 1.0.4, add vh,vw measurements
Took 47 seconds
This commit is contained in:
@@ -7,7 +7,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "nl.astraeus"
|
group = "nl.astraeus"
|
||||||
version = "1.0.3"
|
version = "1.0.4"
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
|||||||
31
src/commonMain/kotlin/nl/astraeus/css/properties/Calc.kt
Normal file
31
src/commonMain/kotlin/nl/astraeus/css/properties/Calc.kt
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
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())
|
||||||
@@ -10,6 +10,7 @@ open class CssProperty(
|
|||||||
|
|
||||||
override fun css(): String = value
|
override fun css(): String = value
|
||||||
|
|
||||||
|
override fun toString(): String = value
|
||||||
}
|
}
|
||||||
|
|
||||||
fun text(value: String) = TextProperty(value)
|
fun text(value: String) = TextProperty(value)
|
||||||
|
|||||||
@@ -9,13 +9,15 @@ enum class MeasurementUoM {
|
|||||||
PC,
|
PC,
|
||||||
PRC,
|
PRC,
|
||||||
CM,
|
CM,
|
||||||
FR
|
FR,
|
||||||
|
VH,
|
||||||
|
VW
|
||||||
}
|
}
|
||||||
|
|
||||||
open class Measurement(
|
open class Measurement(
|
||||||
value: String,
|
value: String,
|
||||||
val uom: MeasurementUoM = MeasurementUoM.NONE
|
val uom: MeasurementUoM = MeasurementUoM.NONE
|
||||||
) : CssProperty(value) {
|
) : CssProperty(value), CalcExpression {
|
||||||
|
|
||||||
override fun toString(): String = super.value
|
override fun toString(): String = super.value
|
||||||
|
|
||||||
@@ -25,37 +27,14 @@ open class Measurement(
|
|||||||
val inherit = Measurement("inherit")
|
val inherit = Measurement("inherit")
|
||||||
val normal = Measurement("normal")
|
val normal = Measurement("normal")
|
||||||
|
|
||||||
fun fromString(value:String): Measurement = when {
|
fun fromString(value: String): Measurement = when {
|
||||||
value == "0" -> Measurement("0", MeasurementUoM.PX)
|
value == "0" -> Measurement("0", MeasurementUoM.PX)
|
||||||
value.endsWith("px") -> Measurement(value.slice(0..(value.length-2)), MeasurementUoM.PX)
|
value.endsWith("px") -> Measurement(value.slice(0..(value.length - 2)), MeasurementUoM.PX)
|
||||||
value.endsWith("rel") -> Measurement(value.slice(0..(value.length-3)), MeasurementUoM.REL)
|
value.endsWith("rel") -> Measurement(value.slice(0..(value.length - 3)), MeasurementUoM.REL)
|
||||||
else -> {
|
else -> {
|
||||||
TODO("Unable to parse $value")
|
TODO("Unable to parse $value")
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun px(nr: Int) = if (nr == 0) {
|
|
||||||
Measurement(
|
|
||||||
"0",
|
|
||||||
MeasurementUoM.PX
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
Measurement(
|
|
||||||
"${nr}px",
|
|
||||||
MeasurementUoM.PX
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun px(nr: Double) = nr.px
|
|
||||||
fun em(nr: Int) = nr.em
|
|
||||||
fun em(nr: Double) = nr.em
|
|
||||||
fun prc(nr: Int) = nr.prc
|
|
||||||
fun prc(nr: Double) = nr.prc
|
|
||||||
fun pc(nr: Int) = nr.pc
|
|
||||||
fun pc(nr: Double) = nr.pc
|
|
||||||
fun cm(nr: Int) = nr.cm
|
|
||||||
fun cm(nr: Double) = nr.cm
|
|
||||||
fun fr(nr: Int) = nr.fr
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,8 +79,10 @@ val Int.cm: Measurement
|
|||||||
get() = Measurement("${this}cm", MeasurementUoM.CM)
|
get() = Measurement("${this}cm", MeasurementUoM.CM)
|
||||||
val Int.fr: Measurement
|
val Int.fr: Measurement
|
||||||
get() = Measurement("${this}fr", MeasurementUoM.FR)
|
get() = Measurement("${this}fr", MeasurementUoM.FR)
|
||||||
|
val Int.vw: Measurement
|
||||||
fun Int.px(): Measurement = Measurement.px(this)
|
get() = Measurement("${this}vw", MeasurementUoM.VW)
|
||||||
|
val Int.vh: Measurement
|
||||||
|
get() = Measurement("${this}vh", MeasurementUoM.VH)
|
||||||
|
|
||||||
val Double.px: Measurement
|
val Double.px: Measurement
|
||||||
get() = Measurement("${this}px", MeasurementUoM.PX)
|
get() = Measurement("${this}px", MeasurementUoM.PX)
|
||||||
@@ -115,8 +96,12 @@ val Double.pc: Measurement
|
|||||||
get() = Measurement("${this}pc", MeasurementUoM.PC)
|
get() = Measurement("${this}pc", MeasurementUoM.PC)
|
||||||
val Double.cm: Measurement
|
val Double.cm: Measurement
|
||||||
get() = Measurement("${this}cm", MeasurementUoM.CM)
|
get() = Measurement("${this}cm", MeasurementUoM.CM)
|
||||||
|
val Double.fr: Measurement
|
||||||
fun Double.px(): Measurement = Measurement.px(this)
|
get() = Measurement("${this}fr", MeasurementUoM.FR)
|
||||||
|
val Double.vw: Measurement
|
||||||
|
get() = Measurement("${this}vw", MeasurementUoM.VW)
|
||||||
|
val Double.vh: Measurement
|
||||||
|
get() = Measurement("${this}vh", MeasurementUoM.VH)
|
||||||
|
|
||||||
open class LineHeight(value: String) : CssProperty(value) {
|
open class LineHeight(value: String) : CssProperty(value) {
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
@@ -1015,8 +1015,8 @@ open class InlineStyle : CssGenerator() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun gridGap(
|
fun gridGap(
|
||||||
rowGap: Measurement = Measurement.px(0),
|
rowGap: Measurement = 0.px,
|
||||||
columnGap: Measurement = Measurement.px(0)
|
columnGap: Measurement = 0.px
|
||||||
) {
|
) {
|
||||||
props["grid-gap"] = prp(rowGap, columnGap)
|
props["grid-gap"] = prp(rowGap, columnGap)
|
||||||
}
|
}
|
||||||
|
|||||||
19
src/commonTest/kotlin/nl/astraeus/css/TestCalcExpression.kt
Normal file
19
src/commonTest/kotlin/nl/astraeus/css/TestCalcExpression.kt
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
package nl.astraeus.css
|
||||||
|
|
||||||
|
import nl.astraeus.css.properties.calc
|
||||||
|
import nl.astraeus.css.properties.em
|
||||||
|
import nl.astraeus.css.properties.minus
|
||||||
|
import nl.astraeus.css.properties.plus
|
||||||
|
import nl.astraeus.css.properties.px
|
||||||
|
import kotlin.test.Test
|
||||||
|
|
||||||
|
class TestCalcExpression {
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testCalcExpression() {
|
||||||
|
val a = calc(10.px + 20.px - 5.em)
|
||||||
|
|
||||||
|
println(a)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user