use enum for comparison in NumericMessage.toServerMessage()

This commit is contained in:
2026-09-14 00:16:47 +01:00
parent 48615181f3
commit 8953c096c1
@@ -64,18 +64,31 @@ class MessageParser(val incoming: Channel<String>) {
} }
class NumericCommand(override val command: String, override val parameters: List<String>) : Command(command, parameters) { class NumericCommand(override val command: String, override val parameters: List<String>) : Command(command, parameters) {
private enum class RPL(val underlying: Int) {
ISUPPORT(5),
LISTSTART(321),
LIST(322),
LISTEND(323),
NONE(0xbeef), ;
companion object {
val rplMap = RPL.entries.associateBy { it.underlying }
infix fun from(value: Int) = rplMap[value] ?: NONE
infix fun from(value: String) = from(value.toInt())
}
}
override fun toServerMessage() = override fun toServerMessage() =
when (command.toInt()) { when (RPL from command) {
5 -> ServerMessage.Numeric.RPL_ISUPPORT(getNonTrailingParameterString()) RPL.ISUPPORT -> ServerMessage.Numeric.RPL_ISUPPORT(getNonTrailingParameterString())
321 -> ServerMessage.Numeric.RPL_LISTSTART() RPL.LISTSTART -> ServerMessage.Numeric.RPL_LISTSTART()
322 -> RPL.LIST -> ServerMessage.Numeric.RPL_LIST(
ServerMessage.Numeric.RPL_LIST(
parameters[1], parameters[1],
parameters[2].toInt(), parameters[2].toInt(),
getTrailingParameterString(), getTrailingParameterString(),
) )
323 -> ServerMessage.Numeric.RPL_LISTEND() RPL.LISTEND -> ServerMessage.Numeric.RPL_LISTEND()
else -> ServerMessage.UNIMPLEMENTED(parameters.toString()) RPL.NONE -> ServerMessage.UNIMPLEMENTED(parameters.toString())
} }
} }
} }