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)
|
||||
}
|
||||
|
||||
fun cleanNumberString(input: String): String{
|
||||
return input
|
||||
.replace(",",".")
|
||||
.replace(" ", "")
|
||||
}
|
||||
|
||||
fun extractNumbers(pattern: String, text: String?): List<Double> {
|
||||
val matches = Regex(pattern).findAll(text ?: "")
|
||||
return matches
|
||||
.map { it.groups[1]?.value?.lowercase() }
|
||||
.filter { it != null }
|
||||
.map { it!!.replace(",", ".").toDouble() }
|
||||
.map { cleanNumberString(it!!).toDouble() }
|
||||
.toList()
|
||||
}
|
||||
|
||||
|
|
@ -47,16 +53,16 @@ fun convertKmh(event: MessageCreateEvent) {
|
|||
}
|
||||
|
||||
fun convertF(event: MessageCreateEvent){
|
||||
for (fahrenheit in extractNumbers("(\\d+[,.]*\\d*)\\s*f", event.message.content)) {
|
||||
val celsius = (5/9) * (fahrenheit - 32)
|
||||
for (fahrenheit in extractNumbers("(-*\\d+[,.]*\\d*)\\s*f", event.message.content)) {
|
||||
val celsius = (5.0/9.0) * (fahrenheit - 32)
|
||||
val kelvin = celsius + 273.15
|
||||
event.channel.sendMessage("${fahrenheit.round()} °F = ${celsius.round()} °C = ${kelvin.round()} K")
|
||||
}
|
||||
}
|
||||
|
||||
fun convertC(event: MessageCreateEvent){
|
||||
for (celsius in extractNumbers("(\\d+[,.]*\\d*)\\s*c", event.message.content)) {
|
||||
val fahrenheit = ((9/5) * celsius) + 32
|
||||
for (celsius in extractNumbers("(-*\\d+[,.]*\\d*)\\s*c", event.message.content)) {
|
||||
val fahrenheit = ((9.0/5.0) * celsius) + 32
|
||||
val kelvin = celsius + 273.15
|
||||
event.channel.sendMessage("${celsius.round()} °C = ${fahrenheit.round()} °F = ${kelvin.round()} K")
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue