Correctly parse negative numbers and calculate temperatures.
This commit is contained in:
parent
374ba46db5
commit
727b316530
|
|
@ -7,12 +7,18 @@ fun Double.round(): String{
|
||||||
return String.format("%.2f", this)
|
return String.format("%.2f", this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun cleanNumberString(input: String): String{
|
||||||
|
return input
|
||||||
|
.replace(",",".")
|
||||||
|
.replace(" ", "")
|
||||||
|
}
|
||||||
|
|
||||||
fun extractNumbers(pattern: String, text: String?): List<Double> {
|
fun extractNumbers(pattern: String, text: String?): List<Double> {
|
||||||
val matches = Regex(pattern).findAll(text ?: "")
|
val matches = Regex(pattern).findAll(text ?: "")
|
||||||
return matches
|
return matches
|
||||||
.map { it.groups[1]?.value?.lowercase() }
|
.map { it.groups[1]?.value?.lowercase() }
|
||||||
.filter { it != null }
|
.filter { it != null }
|
||||||
.map { it!!.replace(",", ".").toDouble() }
|
.map { cleanNumberString(it!!).toDouble() }
|
||||||
.toList()
|
.toList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -47,16 +53,16 @@ fun convertKmh(event: MessageCreateEvent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun convertF(event: MessageCreateEvent){
|
fun convertF(event: MessageCreateEvent){
|
||||||
for (fahrenheit in extractNumbers("(\\d+[,.]*\\d*)\\s*f", event.message.content)) {
|
for (fahrenheit in extractNumbers("(-*\\d+[,.]*\\d*)\\s*f", event.message.content)) {
|
||||||
val celsius = (5/9) * (fahrenheit - 32)
|
val celsius = (5.0/9.0) * (fahrenheit - 32)
|
||||||
val kelvin = celsius + 273.15
|
val kelvin = celsius + 273.15
|
||||||
event.channel.sendMessage("${fahrenheit.round()} °F = ${celsius.round()} °C = ${kelvin.round()} K")
|
event.channel.sendMessage("${fahrenheit.round()} °F = ${celsius.round()} °C = ${kelvin.round()} K")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun convertC(event: MessageCreateEvent){
|
fun convertC(event: MessageCreateEvent){
|
||||||
for (celsius in extractNumbers("(\\d+[,.]*\\d*)\\s*c", event.message.content)) {
|
for (celsius in extractNumbers("(-*\\d+[,.]*\\d*)\\s*c", event.message.content)) {
|
||||||
val fahrenheit = ((9/5) * celsius) + 32
|
val fahrenheit = ((9.0/5.0) * celsius) + 32
|
||||||
val kelvin = celsius + 273.15
|
val kelvin = celsius + 273.15
|
||||||
event.channel.sendMessage("${celsius.round()} °C = ${fahrenheit.round()} °F = ${kelvin.round()} K")
|
event.channel.sendMessage("${celsius.round()} °C = ${fahrenheit.round()} °F = ${kelvin.round()} K")
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue