From f48438f30a9ce347c87677213577703c09bf9bd7 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Wed, 14 May 2025 17:04:31 +0200 Subject: [PATCH] use SpacedTokens instead of regex for splitting on whitespace and where possible directly used SpacedTokens to avoid unnecessary list --- .../internal/keyboard_parser/LocaleKeyboardInfos.kt | 7 ++++--- .../java/helium314/keyboard/latin/common/StringUtils.kt | 5 ++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/LocaleKeyboardInfos.kt b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/LocaleKeyboardInfos.kt index ac3f9fc77..93c51b981 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/LocaleKeyboardInfos.kt +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/LocaleKeyboardInfos.kt @@ -11,6 +11,7 @@ import helium314.keyboard.latin.R import helium314.keyboard.latin.common.splitOnFirstSpacesOnly import helium314.keyboard.latin.common.splitOnWhitespace import helium314.keyboard.latin.settings.Settings +import helium314.keyboard.latin.utils.SpacedTokens import helium314.keyboard.latin.utils.SubtypeLocaleUtils import java.io.InputStream import java.util.Locale @@ -83,7 +84,7 @@ class LocaleKeyboardInfos(dataStream: InputStream?, locale: Locale) { READER_MODE_EXTRA_KEYS -> if (!onlyPopupKeys) addExtraKey(line.split(colonSpaceRegex, 2)) READER_MODE_LABELS -> if (!onlyPopupKeys) addLabel(line.split(colonSpaceRegex, 2)) READER_MODE_NUMBER_ROW -> localizedNumberKeys = line.splitOnWhitespace() - READER_MODE_TLD -> line.splitOnWhitespace().forEach { tlds.add(".$it") } + READER_MODE_TLD -> SpacedTokens(line).forEach { tlds.add(".$it") } } } } @@ -226,7 +227,7 @@ private fun getLocaleTlds(locale: Locale): LinkedHashSet { return tlds specialCountryTlds.forEach { if (ccLower != it.first) return@forEach - tlds.addAll(it.second.splitOnWhitespace()) + tlds.addAll(SpacedTokens(it.second)) return@getLocaleTlds tlds } tlds.add(".$ccLower") @@ -235,7 +236,7 @@ private fun getLocaleTlds(locale: Locale): LinkedHashSet { private fun getDefaultTlds(locale: Locale): LinkedHashSet { val tlds = linkedSetOf() - tlds.addAll(defaultTlds.splitOnWhitespace()) + tlds.addAll(SpacedTokens(defaultTlds)) if ((locale.language != "en" && euroLocales.matches(locale.language)) || euroCountries.matches(locale.country)) tlds.add(".eu") return tlds diff --git a/app/src/main/java/helium314/keyboard/latin/common/StringUtils.kt b/app/src/main/java/helium314/keyboard/latin/common/StringUtils.kt index 5ea7003a0..982be6919 100644 --- a/app/src/main/java/helium314/keyboard/latin/common/StringUtils.kt +++ b/app/src/main/java/helium314/keyboard/latin/common/StringUtils.kt @@ -6,6 +6,7 @@ import helium314.keyboard.keyboard.internal.keyboard_parser.floris.KeyCode import helium314.keyboard.latin.common.StringUtils.mightBeEmoji import helium314.keyboard.latin.common.StringUtils.newSingleCodePointString import helium314.keyboard.latin.settings.SpacingAndPunctuations +import helium314.keyboard.latin.utils.SpacedTokens import java.math.BigInteger import java.util.Locale @@ -132,9 +133,7 @@ fun isEmoji(c: Int): Boolean = mightBeEmoji(c) && isEmoji(newSingleCodePointStri fun isEmoji(text: CharSequence): Boolean = mightBeEmoji(text) && text.matches(emoRegex) -fun String.splitOnWhitespace() = split(whitespaceSplitRegex) - -private val whitespaceSplitRegex = "\\s+".toRegex() +fun String.splitOnWhitespace() = SpacedTokens(this).toList() // from https://github.com/mathiasbynens/emoji-test-regex-pattern, MIT license // matches single emojis only