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"
version = "0.4.20"
version = "0.4.21"
repositories {
maven { setUrl("https://dl.bintray.com/kotlin/kotlin-eap") }

View File

@@ -75,7 +75,8 @@ abstract class CssGenerator {
namespace: String = "",
indent: String = "",
minified: Boolean = false,
warnOnRedeclaration: Boolean = true
warnOnRedeclaration: Boolean = true,
allowCommaInSelector: Boolean = false
): String {
val builder = StringBuilder()
@@ -96,6 +97,10 @@ abstract class CssGenerator {
css.append(finalStyle.generatePropertyCss(" $indent"))
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(" $indent")
@@ -144,7 +149,11 @@ abstract class CssGenerator {
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) {
@@ -161,7 +170,11 @@ abstract class CssGenerator {
css(mediaStyle)
builder.append(mediaStyle.generateCss("", " $indent"))
builder.append(mediaStyle.generateCss(
"",
" $indent",
allowCommaInSelector = allowCommaInSelector
))
}
builder.append(indent)
@@ -182,7 +195,11 @@ abstract class CssGenerator {
css(mediaStyle)
builder.append(mediaStyle.generateCss("", " $indent"))
builder.append(mediaStyle.generateCss(
"",
" $indent",
allowCommaInSelector = allowCommaInSelector
))
}
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.id
import kotlin.test.Test
import kotlin.test.assertTrue
class TestCssBuilder {
@@ -174,4 +175,38 @@ class TestCssBuilder {
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
}
}
}