Added capitalizeWords extension function.
This commit is contained in:
parent
79efd005d1
commit
aab28b5979
4 changed files with 26 additions and 5 deletions
|
@ -101,6 +101,12 @@ object Utils {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun String.capitalise(): String = this.replaceFirstChar { it.uppercase() }
|
fun String.capitalise(): String = this.replaceFirstChar { it.uppercase() }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Capitalize words
|
||||||
|
*/
|
||||||
|
fun String.capitalizeWords(): String = split(" ").map { it.lowercase().capitalise() }.joinToString(" ")
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Colorize a string.
|
* Colorize a string.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -38,6 +38,7 @@ import net.aksingh.owmjapis.model.CurrentWeather
|
||||||
import net.thauvin.erik.mobibot.Mobibot
|
import net.thauvin.erik.mobibot.Mobibot
|
||||||
import net.thauvin.erik.mobibot.Utils.bold
|
import net.thauvin.erik.mobibot.Utils.bold
|
||||||
import net.thauvin.erik.mobibot.Utils.capitalise
|
import net.thauvin.erik.mobibot.Utils.capitalise
|
||||||
|
import net.thauvin.erik.mobibot.Utils.capitalizeWords
|
||||||
import net.thauvin.erik.mobibot.Utils.encodeUrl
|
import net.thauvin.erik.mobibot.Utils.encodeUrl
|
||||||
import net.thauvin.erik.mobibot.Utils.helpFormat
|
import net.thauvin.erik.mobibot.Utils.helpFormat
|
||||||
import net.thauvin.erik.mobibot.msg.ErrorMessage
|
import net.thauvin.erik.mobibot.msg.ErrorMessage
|
||||||
|
@ -135,7 +136,12 @@ class Weather2(bot: Mobibot) : ThreadedModule(bot) {
|
||||||
owm.currentWeatherByCityName(city, country)
|
owm.currentWeatherByCityName(city, country)
|
||||||
}
|
}
|
||||||
if (cwd.hasCityName()) {
|
if (cwd.hasCityName()) {
|
||||||
messages.add(PublicMessage("City: ${cwd.cityName} [${country.value}]"))
|
messages.add(
|
||||||
|
PublicMessage(
|
||||||
|
"City: ${cwd.cityName}, " +
|
||||||
|
country.name.replace('_', ' ').capitalizeWords() + " [${country.value}]"
|
||||||
|
)
|
||||||
|
)
|
||||||
with(cwd.mainData) {
|
with(cwd.mainData) {
|
||||||
if (this != null) {
|
if (this != null) {
|
||||||
if (hasTemp()) {
|
if (hasTemp()) {
|
||||||
|
|
|
@ -35,6 +35,7 @@ import net.thauvin.erik.mobibot.Utils.appendIfMissing
|
||||||
import net.thauvin.erik.mobibot.Utils.bold
|
import net.thauvin.erik.mobibot.Utils.bold
|
||||||
import net.thauvin.erik.mobibot.Utils.buildCmdSyntax
|
import net.thauvin.erik.mobibot.Utils.buildCmdSyntax
|
||||||
import net.thauvin.erik.mobibot.Utils.capitalise
|
import net.thauvin.erik.mobibot.Utils.capitalise
|
||||||
|
import net.thauvin.erik.mobibot.Utils.capitalizeWords
|
||||||
import net.thauvin.erik.mobibot.Utils.colorize
|
import net.thauvin.erik.mobibot.Utils.colorize
|
||||||
import net.thauvin.erik.mobibot.Utils.cyan
|
import net.thauvin.erik.mobibot.Utils.cyan
|
||||||
import net.thauvin.erik.mobibot.Utils.encodeUrl
|
import net.thauvin.erik.mobibot.Utils.encodeUrl
|
||||||
|
@ -117,6 +118,14 @@ class UtilsTest {
|
||||||
assertThat("".capitalise()).describedAs("capitalize()").isEqualTo("")
|
assertThat("".capitalise()).describedAs("capitalize()").isEqualTo("")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun textCapitaliseWords() {
|
||||||
|
assertThat(test.capitalizeWords()).describedAs("captiatlizeWords(test)").isEqualTo("This Is A Test.")
|
||||||
|
assertThat("Already Capitalized".capitalizeWords()).describedAs("already capitalized")
|
||||||
|
.isEqualTo("Already Capitalized")
|
||||||
|
assertThat(" a test ".capitalizeWords()).describedAs("with spaces").isEqualTo(" A Test ")
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testColorize() {
|
fun testColorize() {
|
||||||
assertThat(colorize(ascii, Colors.REVERSE)).describedAs("colorize(reverse)").isEqualTo(
|
assertThat(colorize(ascii, Colors.REVERSE)).describedAs("colorize(reverse)").isEqualTo(
|
||||||
|
|
|
@ -76,16 +76,16 @@ class Weather2Test : LocalProperties() {
|
||||||
@Throws(ModuleException::class)
|
@Throws(ModuleException::class)
|
||||||
fun testWeather() {
|
fun testWeather() {
|
||||||
var messages = getWeather("98204", getProperty(OWM_API_KEY_PROP))
|
var messages = getWeather("98204", getProperty(OWM_API_KEY_PROP))
|
||||||
assertThat(messages[0].msg).describedAs("is Everett").contains("Everett").contains("US")
|
assertThat(messages[0].msg).describedAs("is Everett").contains("Everett, United States").contains("US")
|
||||||
assertThat(messages[messages.size - 1].msg).describedAs("is Everett zip code").endsWith("98204%2CUS")
|
assertThat(messages[messages.size - 1].msg).describedAs("is Everett zip code").endsWith("98204%2CUS")
|
||||||
|
|
||||||
messages = getWeather("San Francisco", getProperty(OWM_API_KEY_PROP))
|
messages = getWeather("San Francisco", getProperty(OWM_API_KEY_PROP))
|
||||||
assertThat(messages[0].msg).describedAs("is San Francisco").contains("San Francisco").contains("US")
|
assertThat(messages[0].msg).describedAs("is San Francisco").contains("San Francisco").contains("US")
|
||||||
assertThat(messages[messages.size - 1].msg).describedAs("is San Fran city code").endsWith("5391959")
|
assertThat(messages[messages.size - 1].msg).describedAs("is San Fran city code").endsWith("5391959")
|
||||||
|
|
||||||
messages = getWeather("London, UK", getProperty(OWM_API_KEY_PROP))
|
messages = getWeather("London, GB", getProperty(OWM_API_KEY_PROP))
|
||||||
assertThat(messages[0].msg).describedAs("is UK").contains("London").contains("UK")
|
assertThat(messages[0].msg).describedAs("is UK").contains("London, United Kingdom").contains("GB")
|
||||||
assertThat(messages[messages.size - 1].msg).describedAs("is London city code").endsWith("4517009")
|
assertThat(messages[messages.size - 1].msg).describedAs("is London city code").endsWith("2643743")
|
||||||
|
|
||||||
assertThatThrownBy { getWeather("Foo, US", getProperty(OWM_API_KEY_PROP)) }
|
assertThatThrownBy { getWeather("Foo, US", getProperty(OWM_API_KEY_PROP)) }
|
||||||
.describedAs("foo not found").hasCauseInstanceOf(APIException::class.java)
|
.describedAs("foo not found").hasCauseInstanceOf(APIException::class.java)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue