Disallow comma in selector by default

This commit is contained in:
2021-06-11 11:07:46 +02:00
parent 95fb7ec923
commit 536d095b96
3 changed files with 57 additions and 5 deletions

View File

@@ -4,7 +4,7 @@ plugins {
} }
group = "nl.astraeus" group = "nl.astraeus"
version = "0.4.20" version = "0.4.21"
repositories { repositories {
maven { setUrl("https://dl.bintray.com/kotlin/kotlin-eap") } maven { setUrl("https://dl.bintray.com/kotlin/kotlin-eap") }

View File

@@ -75,7 +75,8 @@ abstract class CssGenerator {
namespace: String = "", namespace: String = "",
indent: String = "", indent: String = "",
minified: Boolean = false, minified: Boolean = false,
warnOnRedeclaration: Boolean = true warnOnRedeclaration: Boolean = true,
allowCommaInSelector: Boolean = false
): String { ): String {
val builder = StringBuilder() val builder = StringBuilder()
@@ -96,6 +97,10 @@ abstract class CssGenerator {
css.append(finalStyle.generatePropertyCss(" $indent")) css.append(finalStyle.generatePropertyCss(" $indent"))
if (css.isNotBlank()) { if (css.isNotBlank()) {
check (allowCommaInSelector || !name.contains(',')) {
"Comma is not allowed in selector (option is set in generateCss call)"
}
builder.append("\n$namespace$name".trim()) builder.append("\n$namespace$name".trim())
//builder.append(" $indent") //builder.append(" $indent")
@@ -144,7 +149,11 @@ abstract class CssGenerator {
builder.append("}\n\n") builder.append("}\n\n")
} }
builder.append(finalStyle.generateCss("$namespace$name".trim(), indent)) builder.append(finalStyle.generateCss(
"$namespace$name".trim(),
indent,
allowCommaInSelector = allowCommaInSelector
))
} }
if (this is ConditionalStyle) { if (this is ConditionalStyle) {
@@ -161,7 +170,11 @@ abstract class CssGenerator {
css(mediaStyle) css(mediaStyle)
builder.append(mediaStyle.generateCss("", " $indent")) builder.append(mediaStyle.generateCss(
"",
" $indent",
allowCommaInSelector = allowCommaInSelector
))
} }
builder.append(indent) builder.append(indent)
@@ -182,7 +195,11 @@ abstract class CssGenerator {
css(mediaStyle) css(mediaStyle)
builder.append(mediaStyle.generateCss("", " $indent")) builder.append(mediaStyle.generateCss(
"",
" $indent",
allowCommaInSelector = allowCommaInSelector
))
} }
builder.append(indent) builder.append(indent)

View File

@@ -12,6 +12,7 @@ import nl.astraeus.css.style.attrEquals
import nl.astraeus.css.style.cls import nl.astraeus.css.style.cls
import nl.astraeus.css.style.id import nl.astraeus.css.style.id
import kotlin.test.Test import kotlin.test.Test
import kotlin.test.assertTrue
class TestCssBuilder { class TestCssBuilder {
@@ -174,4 +175,38 @@ class TestCssBuilder {
println(css.generateCss()) println(css.generateCss())
} }
@Test
fun testOrWithComma() {
val css = style {
select("h1") {
color(Color.blue)
select("table") {
color(Color.red)
select("th, td") {
color(Color.green)
}
}
}
}
var excepted = false
try {
println(css.generateCss())
} catch(e: Exception) {
excepted = true
assertTrue {
e is IllegalStateException
}
assertTrue {
e.message?.contains("Comma is not allowed in selector") ?: false
}
}
assertTrue {
excepted
}
}
} }