in.specmatic.core.pattern.ValueDetails.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of specmatic-core Show documentation
Show all versions of specmatic-core Show documentation
Turn your contracts into executable specifications. Contract Driven Development - Collaboratively Design & Independently Deploy MicroServices & MicroFrontends.
Deprecation Notice for group ID "in.specmatic"
******************************************************************************************************
Updates for "specmatic-core" will no longer be available under the deprecated group ID "in.specmatic".
Please update your dependencies to use the new group ID "io.specmatic".
******************************************************************************************************
package `in`.specmatic.core.pattern
data class ValueDetails(val messages: List = emptyList(), private val breadCrumbData: List = emptyList()) {
fun addDetails(message: String, breadCrumb: String): ValueDetails {
return ValueDetails(
messages.addNonBlank(message),
breadCrumbData.addNonBlank(breadCrumb)
)
}
val breadCrumbs: String
get() {
return breadCrumbData.reversed().joinToString(".")
}
fun comments(): String? {
if(messages.isEmpty())
return null
val body = messages.joinToString(System.lineSeparator())
return """
>> $breadCrumbs
$body
""".trimIndent()
}
private fun List.addNonBlank(
errorMessage: String
) = if (errorMessage.isNotBlank())
this.plus(errorMessage)
else
this
}
fun List.singleLineDescription(): String {
return this.joinToString(", ") {
"${it.breadCrumbs} ${it.messages.joinToString(" ").trim()}"
}
}