diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/helpers/Predictions.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/helpers/Predictions.java index 04a6dd11..d582cb3b 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/helpers/Predictions.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/helpers/Predictions.java @@ -6,6 +6,7 @@ import io.github.sspanak.tt9.db.WordStoreAsync; import io.github.sspanak.tt9.languages.EmojiLanguage; import io.github.sspanak.tt9.languages.Language; import io.github.sspanak.tt9.preferences.settings.SettingsStore; +import io.github.sspanak.tt9.util.Characters; public class Predictions { @@ -193,7 +194,9 @@ public class Predictions { // append all letters for the last digit in the sequence (the last pressed key) int lastSequenceDigit = digitSequence.charAt(digitSequence.length() - 1) - '0'; for (String keyLetter : language.getKeyCharacters(lastSequenceDigit)) { - generatedWords.add(baseWord + keyLetter); + if (Character.isAlphabetic(keyLetter.charAt(0)) || Characters.isCombiningPunctuation(language, keyLetter.charAt(0))) { + generatedWords.add(baseWord + keyLetter); + } } // if there are no letters for this key, just append the number diff --git a/app/src/main/java/io/github/sspanak/tt9/util/Characters.java b/app/src/main/java/io/github/sspanak/tt9/util/Characters.java index 3ae065c2..229f1324 100644 --- a/app/src/main/java/io/github/sspanak/tt9/util/Characters.java +++ b/app/src/main/java/io/github/sspanak/tt9/util/Characters.java @@ -6,13 +6,25 @@ import android.os.Build; import java.util.ArrayList; import java.util.Arrays; +import io.github.sspanak.tt9.languages.Language; +import io.github.sspanak.tt9.languages.LanguageKind; + public class Characters { private static String NEW_LINE_CHARACTER = null; + final public static ArrayList ArabicNumbers = new ArrayList<>(Arrays.asList( "٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩" )); + final public static ArrayList CombiningPunctuation = new ArrayList<>(Arrays.asList( + ',', '-', '\'', ';', '!', '?', '.' + )); + + final public static ArrayList CombiningPunctuationHebrew = new ArrayList<>(Arrays.asList( + ',' , '-', '\'', ';', '!', '?', '.', '"' + )); + final public static ArrayList PunctuationArabic = new ArrayList<>(Arrays.asList( "،", ".", "-", "(", ")", "&", "~", "`", "'", "\"", "؛", ":", "!", "؟" )); @@ -141,4 +153,10 @@ public class Characters { return NEW_LINE_CHARACTER; } + + public static boolean isCombiningPunctuation(Language language, char ch) { + return + CombiningPunctuation.contains(ch) + || (LanguageKind.isHebrew(language) && CombiningPunctuationHebrew.contains(ch)); + } }