Zyle Moore
03/04/2026, 3:18 AMZyle Moore
03/04/2026, 3:19 AMproperties.forEachIndexed { index, (group, name, parameters, value) ->
when (index) {
0 -> require(name.value == "BEGIN" && value.value == "VCARD")
1 -> require(name.value == "VERSION" && value.value == "4.0")
properties.lastIndex -> require(name.value == "END" && value.value == "VCARD")
}
}Zyle Moore
03/04/2026, 3:20 AMproperties.forEachIndexed { index, (group, (name), parameters, (value)) ->
when (index) {
0 -> require(name == "BEGIN" && value == "VCARD")
1 -> require(name == "VERSION" && value == "4.0")
properties.lastIndex -> require(name == "END" && value == "VCARD")
}
}Zyle Moore
03/04/2026, 3:23 AMoperator fun component1() on the value class, and then deconstruct them separately
properties.forEachIndexed { index, (group, propertyName, parameters, propertyValue) ->
val (name) = propertyName
val (value) = propertyValue
when (index) {
0 -> require(name == "BEGIN" && value == "VCARD")
1 -> require(name == "VERSION" && value == "4.0")
properties.lastIndex -> require(name == "END" && value == "VCARD")
}
}Zyle Moore
03/04/2026, 3:37 AMvalue or the type of the value, like
value class StringPropertyValue(val value: String)
or
value class StringPropertyValue(val string: String)
Maybe this is just a naming issue?ephemient
03/04/2026, 5:07 AMZyle Moore
03/04/2026, 7:06 AMZyle Moore
03/04/2026, 7:10 AMval (
name = { name },// lambda of right-hand side with implicit this
group = { group },// same name as prop
myParameters = { parameters },// new name
myValue = { value },
// could maybe make it n-arity, as long as implicit this is maintained
isUppercase = { value.isUpper() },
groupIsNull = { group == null }
) = property
// each of these is basically just a call to property.map with a `this`
Thanks for pointing me to the issue though!