From 8ca1b6e864d482582c952c24659ffd5bd1ea495a Mon Sep 17 00:00:00 2001 From: Utsob Roy Date: Fri, 24 Aug 2018 14:42:27 +0600 Subject: [PATCH 1/6] better bengali transliteration. [master] --- .../util/BengaliLanguageUtils.java | 241 +++++++++++------- 1 file changed, 151 insertions(+), 90 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java index 2df264b5b..b375d9134 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java @@ -1,110 +1,171 @@ package nodomain.freeyourgadget.gadgetbridge.util; -import java.util.HashMap; +import java.util.Hashtable; +import java.util.regex.*; public class BengaliLanguageUtils extends LanguageUtils { - - private final static char BENGALI_JOIN_CHAR = '্'; - - private final static HashMap numbers = new HashMap() { + private final static Hashtable composites = new Hashtable() { { - put('০',"0"); put('১',"1"); put('২',"2"); put('৩',"3"); put('৪',"4"); - put('৫',"5"); put('৬',"6"); put('৭',"7"); put('৮',"8"); - put('৯',"9"); + put("ক্ষ", "kkh"); + put("ঞ্চ", "NC"); + put("ঞ্ছ", "NCh"); + put("ঞ্জ", "Ng"); + put("জ্ঞ", "gg"); + put("ঞ্ঝ", "Ngh"); + put("্র", "r"); + put("্ল", "l"); + put("ষ্ম", "SSh"); + put("র্", "r"); + put("্য", "y"); + put("্ব", "w"); + } + }; + private final static Hashtable letters = new Hashtable() { + { + put("আ", "aa"); + put("অ", "a"); + put("ই", "i"); + put("ঈ", "ii"); + put("উ", "u"); + put("ঊ", "uu"); + put("ঋ", "ri"); + put("এ", "e"); + put("ঐ", "oi"); + put("ও", "o"); + put("ঔ", "ou"); + put("ক", "k"); + put("খ", "kh"); + put("গ", "g"); + put("ঘ", "gh"); + put("ঙ", "ng"); + put("চ", "ch"); + put("ছ", "chh"); + put("জ", "j"); + put("ঝ", "jh"); + put("ঞ", "Ng"); + put("ট", "T"); + put("ঠ", "Th"); + put("ড", "D"); + put("ঢ", "Dh"); + put("ণ", "N"); + put("ত", "t"); + put("থ", "th"); + put("দ", "d"); + put("ধ", "dh"); + put("ন", "n"); + put("প", "p"); + put("ফ", "ph"); + put("ব", "b"); + put("ভ", "bh"); + put("ম", "m"); + put("য", "J"); + put("র", "r"); + put("ল", "l"); + put("শ", "sh"); + put("ষ", "Sh"); + put("স", "s"); + put("হ", "h"); + put("ড়", "rh"); + put("ঢ়", "rH"); + put("য়", "y"); + put("ৎ", "t"); + put("০", "0"); + put("১", "1"); + put("২", "2"); + put("৩", "3"); + put("৪", "4"); + put("৫", "5"); + put("৬", "6"); + put("৭", "7"); + put("৮", "8"); + put("৯", "9"); + put("া", "aa"); + put("ি", "i"); + put("ী", "ii"); + put("ু", "u"); + put("ূ", "uu"); + put("ৃ", "r"); + put("ে", "e"); + put("ো", "o"); + put("ৈ", "oi"); + put("ৗ", "ou"); + put("ৌ", "ou"); + put("ং", "ng"); + put("ঃ", "h"); + put("ঁ", "nN"); + put("।", "."); } }; - private final static HashMap vowels = new HashMap() { - { - put('অ', "o"); put('আ', "a"); put('ই', "i"); put('ঈ', "ee"); - put('উ', "u"); put('ঊ', "oo"); put('ঋ', "ri"); put('এ', "e"); - put('ঐ', "oi"); put('ও', "o"); put('ঔ', "ou"); put('া', "a"); - put('ি', "i"); put('ী', "ee"); put('ু', "u"); put('ূ', "oo"); - put('ৃ', "ri"); put('ে', "e"); put('ৈ', "oi"); put('ো', "o"); - put('ৌ', "ou"); - } - }; - - private final static HashMap consonants = new HashMap() { - { - put('ঁ', ""); put('ং', "ng"); put('ঃ', ""); - put('ক', "k"); put('খ', "kh"); put('গ', "g"); put('ঘ', "gh"); put('ঙ', "ng"); - put('চ', "ch"); put('ছ', "ch"); put('জ', "j"); put('ঝ', "jh"); put('ঞ', "ng"); - put('ট', "t"); put('ঠ', "th"); put('ড', "d"); put('ঢ', "dh"); put('ণ', "n"); - put('ত', "t"); put('থ', "th"); put('দ', "d"); put('ধ', "dh"); put('ন', "n"); - put('প', "p"); put('ফ', "f"); put('ব', "b"); put('ভ', "v"); put('ম', "m"); - put('য', "z"); put('র', "r"); put('ল', "l"); put('শ', "sh"); - put('ষ', "sh"); put('স', "s"); put('হ', "h"); - put('ৎ', "t"); put('ড়', "r"); put('ঢ়', "r"); put('য়', "y"); - } - }; - - private final static HashMap symbols = new HashMap() { - { - put('ব', "w"); - put('য়', "y"); - } - }; - - private final static HashMap joins = new HashMap() { - { - put('৳', "$"); - } - }; - - private static boolean hasJoinedInString(String string) { - return string.contains(string); - } + private final static String pattern = "(র্){0,1}([অ-হড়-য়](্([অ-মশ-হড়-য়]))*)((‍){0,1}(্([য-ল]))){0,1}([া-ৌ]){0,1}|[্ঁঃংৎ০-৯।]| "; public static String transliterate(String txt) { if (txt.isEmpty()) { return txt; } - char[] charArray = txt.toCharArray(); - - StringBuilder romanizedBuilder = new StringBuilder(); - char last = '\0'; - - for(int i = 0; i < txt.length(); i++) { - char currentChar = charArray[i]; - - if (symbols.containsKey(currentChar)) { - romanizedBuilder.append(symbols.get(currentChar)); + Pattern r = Pattern.compile(pattern); + Matcher m = r.matcher(txt); + StringBuffer sb = new StringBuffer(); + while (m.find()) { + String appendableString = ""; + String reff = m.group(1); + if (reff != null) { + appendableString = appendableString + "rr"; } - else if (numbers.containsKey(currentChar)) { - romanizedBuilder.append(numbers.get(currentChar)); - } - else if (vowels.containsKey(currentChar)) { - romanizedBuilder.append(vowels.get(currentChar)); - } - else if (consonants.containsKey(currentChar)) { - if (last != '\0' && consonants.containsKey(last)) { - romanizedBuilder.append('o'); + int g = 0; + while (g < 5) { + String key = m.group(g); + if (key != null) { + boolean hasKey = composites.containsKey(key); + if (hasKey) { + appendableString = appendableString + composites.get(key); + break; + } + hasKey = letters.containsKey(key); + if (hasKey) { + appendableString = appendableString + letters.get(key); + break; + } } - romanizedBuilder.append(consonants.get(currentChar)); - } else if (currentChar == BENGALI_JOIN_CHAR) { - if (i + 1 < txt.length() && joins.containsKey(charArray[i + 1])) { - romanizedBuilder.append(joins.get(charArray[i + 1])); - i++; - continue; - } - } else { - romanizedBuilder.append(currentChar); + g = g + 1; } + g = 5; + while (g < 9) { + String key = m.group(g); + if (key != null) { + boolean hasKey = composites.containsKey(key); + if (hasKey) { + appendableString = appendableString + composites.get(key); + break; + } + hasKey = letters.containsKey(key); + if (hasKey) { + appendableString = appendableString + letters.get(key); + break; + } + } + g = g + 1; + } + String kaar = m.group(9); + if (kaar != null) { + boolean hasKey = letters.containsKey(kaar); + if (hasKey) { + appendableString = appendableString + letters.get(kaar); + } + } else if (appendableString.length() > 0 && !appendableString.equals(".")) { + appendableString = appendableString + "a"; + } + String others = m.group(0); + if (others != null) { - last = currentChar; + if (appendableString.length() <= 0) { + appendableString = appendableString + others; + } + } + m.appendReplacement(sb, appendableString); } - - String romanized = romanizedBuilder.toString(); - - if (vowels.containsKey(charArray[charArray.length - 1]) - && hasJoinedInString(txt) - && romanized.toCharArray()[romanized.length() - 1] == 'y') { - romanizedBuilder.append('o'); - } - - return romanizedBuilder.toString(); + m.appendTail(sb); + return sb.toString(); } - -} \ No newline at end of file +} From 8f12f10bfe3c69bce799f6d0ba031c616f61c597 Mon Sep 17 00:00:00 2001 From: Utsob Roy Date: Fri, 24 Aug 2018 20:57:38 +0600 Subject: [PATCH 2/6] added some comments. [master] --- .../gadgetbridge/util/BengaliLanguageUtils.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java index b375d9134..f7e8cc810 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java @@ -3,7 +3,10 @@ package nodomain.freeyourgadget.gadgetbridge.util; import java.util.Hashtable; import java.util.regex.*; +// What's the reason to extending LanguageUtils? +// Just doing it because already done in the previous code. public class BengaliLanguageUtils extends LanguageUtils { + // Composite Letters. private final static Hashtable composites = new Hashtable() { { put("ক্ষ", "kkh"); @@ -20,6 +23,7 @@ public class BengaliLanguageUtils extends LanguageUtils { put("্ব", "w"); } }; + // Single Character Letters. private final static Hashtable letters = new Hashtable() { { put("আ", "aa"); @@ -97,6 +101,7 @@ public class BengaliLanguageUtils extends LanguageUtils { } }; + // The regex to extract Bengali characters in nested groups. private final static String pattern = "(র্){0,1}([অ-হড়-য়](্([অ-মশ-হড়-য়]))*)((‍){0,1}(্([য-ল]))){0,1}([া-ৌ]){0,1}|[্ঁঃংৎ০-৯।]| "; public static String transliterate(String txt) { @@ -114,6 +119,9 @@ public class BengaliLanguageUtils extends LanguageUtils { appendableString = appendableString + "rr"; } int g = 0; + // This is a filter-down approach. First considering larger groups, + // If found any match breaks their. Else go to the next step. + // Helpful to solve some corner-cases. while (g < 5) { String key = m.group(g); if (key != null) { @@ -154,6 +162,8 @@ public class BengaliLanguageUtils extends LanguageUtils { appendableString = appendableString + letters.get(kaar); } } else if (appendableString.length() > 0 && !appendableString.equals(".")) { + // Adding 'a' like ITRANS if no vowel is present. + // TODO: Have to add it dynamically using Bengali grammer rules. appendableString = appendableString + "a"; } String others = m.group(0); From 98e747c5f5d2cec196109a0e6d529aa74d40fa9f Mon Sep 17 00:00:00 2001 From: Utsob Roy Date: Fri, 24 Aug 2018 22:33:25 +0600 Subject: [PATCH 3/6] Various Fixes 1. Updated test. 2. Fixed a composite letter issue. 3. Moved some redundant codes to a function. --- .../util/BengaliLanguageUtils.java | 110 ++++++++++++------ .../gadgetbridge/test/LanguageUtilsTest.java | 2 +- 2 files changed, 75 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java index f7e8cc810..71b0d0093 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java @@ -23,6 +23,37 @@ public class BengaliLanguageUtils extends LanguageUtils { put("্ব", "w"); } }; + // Vowels Only + private final static Hashtable vowelsAndHasants = new Hashtable() { + { + put("আ", "aa"); + put("অ", "a"); + put("ই", "i"); + put("ঈ", "ii"); + put("উ", "u"); + put("ঊ", "uu"); + put("ঋ", "ri"); + put("এ", "e"); + put("ঐ", "oi"); + put("ও", "o"); + put("ঔ", "ou"); + put("া", "aa"); + put("ি", "i"); + put("ী", "ii"); + put("ু", "u"); + put("ূ", "uu"); + put("ৃ", "r"); + put("ে", "e"); + put("ো", "o"); + put("ৈ", "oi"); + put("ৗ", "ou"); + put("ৌ", "ou"); + put("ং", "ng"); + put("ঃ", "h"); + put("।", "."); + } + }; + // Single Character Letters. private final static Hashtable letters = new Hashtable() { { @@ -102,8 +133,22 @@ public class BengaliLanguageUtils extends LanguageUtils { }; // The regex to extract Bengali characters in nested groups. - private final static String pattern = "(র্){0,1}([অ-হড়-য়](্([অ-মশ-হড়-য়]))*)((‍){0,1}(্([য-ল]))){0,1}([া-ৌ]){0,1}|[্ঁঃংৎ০-৯।]| "; + private final static String pattern = "(র্){0,1}(([অ-হড়-য়])(্([অ-মশ-হড়-য়]))*)((‍){0,1}(্([য-ল]))){0,1}([া-ৌ]){0,1}|[্ঁঃংৎ০-৯।]| "; + private static String getVal(String key){ + if (key != null) { + boolean hasKey = composites.containsKey(key); + if (hasKey) { + return composites.get(key); + } + hasKey = letters.containsKey(key); + if (hasKey) { + return letters.get(key); + } + } + return null; + } + public static String transliterate(String txt) { if (txt.isEmpty()) { return txt; @@ -118,50 +163,43 @@ public class BengaliLanguageUtils extends LanguageUtils { if (reff != null) { appendableString = appendableString + "rr"; } - int g = 0; // This is a filter-down approach. First considering larger groups, // If found any match breaks their. Else go to the next step. // Helpful to solve some corner-cases. - while (g < 5) { - String key = m.group(g); - if (key != null) { - boolean hasKey = composites.containsKey(key); - if (hasKey) { - appendableString = appendableString + composites.get(key); - break; - } - hasKey = letters.containsKey(key); - if (hasKey) { - appendableString = appendableString + letters.get(key); - break; - } - } - g = g + 1; + String mainPart = getVal(m.group(2)); + if (mainPart != null) { + appendableString = appendableString + mainPart; + } else { + String firstPart = getVal(m.group(3)); + if (firstPart != null){ + appendableString = appendableString + firstPart; + } + int g = 4; + while (g < 6){ + String part = getVal(m.group(g)); + if (part != null){ + appendableString = appendableString + part; + break; + } + g = g + 1; + } + } + int g = 6; + while (g < 10) { + String key = getVal(m.group(g)); + if (key != null){ + appendableString = appendableString + key; + break; + } + g = g + 1; } - g = 5; - while (g < 9) { - String key = m.group(g); - if (key != null) { - boolean hasKey = composites.containsKey(key); - if (hasKey) { - appendableString = appendableString + composites.get(key); - break; - } - hasKey = letters.containsKey(key); - if (hasKey) { - appendableString = appendableString + letters.get(key); - break; - } - } - g = g + 1; - } - String kaar = m.group(9); + String kaar = m.group(10); if (kaar != null) { boolean hasKey = letters.containsKey(kaar); if (hasKey) { appendableString = appendableString + letters.get(kaar); } - } else if (appendableString.length() > 0 && !appendableString.equals(".")) { + } else if (appendableString.length() > 0 && !vowelsAndHasants.containsKey(m.group(0))) { // Adding 'a' like ITRANS if no vowel is present. // TODO: Have to add it dynamically using Bengali grammer rules. appendableString = appendableString + "a"; diff --git a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/LanguageUtilsTest.java b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/LanguageUtilsTest.java index eb5aa1753..edf9d0efb 100644 --- a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/LanguageUtilsTest.java +++ b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/LanguageUtilsTest.java @@ -61,7 +61,7 @@ public class LanguageUtilsTest extends TestBase { //input with cyrillic and diacritic letters String input = "অনিরুদ্ধ"; String output = LanguageUtils.transliterate(input); - String result = "oniruddho"; + String result = "aniruddha"; assertEquals("Transliteration failed", result, output); } From 6a293bd40a1cd135beab5371d4959c464f18097b Mon Sep 17 00:00:00 2001 From: Utsob Roy Date: Sat, 1 Sep 2018 00:38:15 +0600 Subject: [PATCH 4/6] Done the recommended edits, added more testcases, and fixed a bug. --- .../util/BengaliLanguageUtils.java | 95 ++++++++++--------- .../gadgetbridge/test/LanguageUtilsTest.java | 19 ++-- 2 files changed, 63 insertions(+), 51 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java index 71b0d0093..c3c725062 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java @@ -1,13 +1,13 @@ package nodomain.freeyourgadget.gadgetbridge.util; -import java.util.Hashtable; +import java.util.HashMap; import java.util.regex.*; // What's the reason to extending LanguageUtils? // Just doing it because already done in the previous code. public class BengaliLanguageUtils extends LanguageUtils { // Composite Letters. - private final static Hashtable composites = new Hashtable() { + private final static HashMap composites = new HashMap() { { put("ক্ষ", "kkh"); put("ঞ্চ", "NC"); @@ -24,7 +24,7 @@ public class BengaliLanguageUtils extends LanguageUtils { } }; // Vowels Only - private final static Hashtable vowelsAndHasants = new Hashtable() { + private final static HashMap vowelsAndHasants = new HashMap() { { put("আ", "aa"); put("অ", "a"); @@ -53,9 +53,9 @@ public class BengaliLanguageUtils extends LanguageUtils { put("।", "."); } }; - + // Single Character Letters. - private final static Hashtable letters = new Hashtable() { + private final static HashMap letters = new HashMap() { { put("আ", "aa"); put("অ", "a"); @@ -133,29 +133,29 @@ public class BengaliLanguageUtils extends LanguageUtils { }; // The regex to extract Bengali characters in nested groups. - private final static String pattern = "(র্){0,1}(([অ-হড়-য়])(্([অ-মশ-হড়-য়]))*)((‍){0,1}(্([য-ল]))){0,1}([া-ৌ]){0,1}|[্ঁঃংৎ০-৯।]| "; + private final static String pattern = "(র্){0,1}(([অ-হড়-য়])(্([অ-মশ-হড়-য়]))*)((‍){0,1}(্([য-ল]))){0,1}([া-ৌ]){0,1}|([্ঁঃংৎ০-৯।])| "; + private final static Pattern bengaliRegex = Pattern.compile(pattern); - private static String getVal(String key){ - if (key != null) { - boolean hasKey = composites.containsKey(key); - if (hasKey) { - return composites.get(key); - } - hasKey = letters.containsKey(key); - if (hasKey) { - return letters.get(key); - } - } - return null; + private static String getVal(String key) { + if (key != null) { + boolean hasKey = composites.containsKey(key); + if (hasKey) { + return composites.get(key); + } + hasKey = letters.containsKey(key); + if (hasKey) { + return letters.get(key); + } + } + return null; } - + public static String transliterate(String txt) { if (txt.isEmpty()) { return txt; } - Pattern r = Pattern.compile(pattern); - Matcher m = r.matcher(txt); + Matcher m = bengaliRegex.matcher(txt); StringBuffer sb = new StringBuffer(); while (m.find()) { String appendableString = ""; @@ -166,32 +166,32 @@ public class BengaliLanguageUtils extends LanguageUtils { // This is a filter-down approach. First considering larger groups, // If found any match breaks their. Else go to the next step. // Helpful to solve some corner-cases. - String mainPart = getVal(m.group(2)); - if (mainPart != null) { - appendableString = appendableString + mainPart; - } else { - String firstPart = getVal(m.group(3)); - if (firstPart != null){ - appendableString = appendableString + firstPart; - } - int g = 4; - while (g < 6){ - String part = getVal(m.group(g)); - if (part != null){ - appendableString = appendableString + part; - break; - } - g = g + 1; - } - } + String mainPart = getVal(m.group(2)); + if (mainPart != null) { + appendableString = appendableString + mainPart; + } else { + String firstPart = getVal(m.group(3)); + if (firstPart != null) { + appendableString = appendableString + firstPart; + } + int g = 4; + while (g < 6) { + String part = getVal(m.group(g)); + if (part != null) { + appendableString = appendableString + part; + break; + } + g = g + 1; + } + } int g = 6; while (g < 10) { String key = getVal(m.group(g)); - if (key != null){ - appendableString = appendableString + key; - break; - } - g = g + 1; + if (key != null) { + appendableString = appendableString + key; + break; + } + g = g + 1; } String kaar = m.group(10); if (kaar != null) { @@ -204,6 +204,13 @@ public class BengaliLanguageUtils extends LanguageUtils { // TODO: Have to add it dynamically using Bengali grammer rules. appendableString = appendableString + "a"; } + String singleton = m.group(11); + if (singleton != null) { + boolean hasKeyS = letters.containsKey(singleton); + if (hasKeyS) { + appendableString = appendableString + letters.get(singleton); + } + } String others = m.group(0); if (others != null) { diff --git a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/LanguageUtilsTest.java b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/LanguageUtilsTest.java index edf9d0efb..49733b416 100644 --- a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/LanguageUtilsTest.java +++ b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/LanguageUtilsTest.java @@ -17,14 +17,14 @@ import static org.junit.Assert.assertTrue; public class LanguageUtilsTest extends TestBase { @Test public void testStringTransliterateCyrillic() throws Exception { - //input with cyrillic and diacritic letters + // input with cyrillic and diacritic letters String input = "Прõсто текčт"; String output = LanguageUtils.transliterate(input); String result = "Prosto tekct"; assertEquals("Transliteration failed", result, output); } - + @Test public void testStringTransliterateHebrew() throws Exception { String input = "בדיקה עברית"; @@ -59,11 +59,15 @@ public class LanguageUtilsTest extends TestBase { public void testStringTransliterateBengali() throws Exception { //input with cyrillic and diacritic letters - String input = "অনিরুদ্ধ"; - String output = LanguageUtils.transliterate(input); - String result = "aniruddha"; + String[] inputs = {"অনিরুদ্ধ", "বিজ্ঞানযাত্রা চলছে চলবে।", "আমি সব দেখেশুনে ক্ষেপে গিয়ে করি বাঙলায় চিৎকার!"}; + String[] outputs = {"aniruddha", "biggaanaJaatraa chalachhe chalabe.", "aami saba dekheshune kkhepe giye kari baangalaaya chitkaara!"}; - assertEquals("Transliteration failed", result, output); + String result; + + for (int i = 0; i < inputs.length; i++) { + result = LanguageUtils.transliterate(inputs[i]) + assertEquals("Transliteration failed", outputs[i], result); + } } @Test @@ -82,7 +86,8 @@ public class LanguageUtilsTest extends TestBase { @Test public void testTransliterateOption() throws Exception { setDefaultTransliteration(); - assertFalse("Transliteration option fail! Expected 'Off' by default, but result is 'On'", LanguageUtils.transliterate()); + assertFalse("Transliteration option fail! Expected 'Off' by default, but result is 'On'", + LanguageUtils.transliterate()); enableTransliteration(true); assertTrue("Transliteration option fail! Expected 'On', but result is 'Off'", LanguageUtils.transliterate()); From 8e8fa24652fe63cc8ffb611dae831d2570b7f920 Mon Sep 17 00:00:00 2001 From: Utsob Roy Date: Sat, 1 Sep 2018 00:46:02 +0600 Subject: [PATCH 5/6] A missing semicolon added. --- .../gadgetbridge/test/LanguageUtilsTest.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/LanguageUtilsTest.java b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/LanguageUtilsTest.java index 49733b416..50c56526c 100644 --- a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/LanguageUtilsTest.java +++ b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/LanguageUtilsTest.java @@ -58,15 +58,16 @@ public class LanguageUtilsTest extends TestBase { } public void testStringTransliterateBengali() throws Exception { - //input with cyrillic and diacritic letters - String[] inputs = {"অনিরুদ্ধ", "বিজ্ঞানযাত্রা চলছে চলবে।", "আমি সব দেখেশুনে ক্ষেপে গিয়ে করি বাঙলায় চিৎকার!"}; - String[] outputs = {"aniruddha", "biggaanaJaatraa chalachhe chalabe.", "aami saba dekheshune kkhepe giye kari baangalaaya chitkaara!"}; + // input with cyrillic and diacritic letters + String[] inputs = { "অনিরুদ্ধ", "বিজ্ঞানযাত্রা চলছে চলবে।", "আমি সব দেখেশুনে ক্ষেপে গিয়ে করি বাঙলায় চিৎকার!" }; + String[] outputs = { "aniruddha", "biggaanaJaatraa chalachhe chalabe.", + "aami saba dekheshune kkhepe giye kari baangalaaya chitkaara!" }; String result; for (int i = 0; i < inputs.length; i++) { - result = LanguageUtils.transliterate(inputs[i]) - assertEquals("Transliteration failed", outputs[i], result); + result = LanguageUtils.transliterate(inputs[i]); + assertEquals("Transliteration failed", outputs[i], result); } } From 91ddb2c3dd2802cd10819da880d1049839f9468c Mon Sep 17 00:00:00 2001 From: Utsob Roy Date: Sat, 1 Sep 2018 08:59:57 +0600 Subject: [PATCH 6/6] Removed unnecessary containsKey check. --- .../util/BengaliLanguageUtils.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java index c3c725062..cd388b693 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java @@ -138,12 +138,12 @@ public class BengaliLanguageUtils extends LanguageUtils { private static String getVal(String key) { if (key != null) { - boolean hasKey = composites.containsKey(key); - if (hasKey) { - return composites.get(key); + String comp = composites.get(key); + if (comp != null) { + return comp; } - hasKey = letters.containsKey(key); - if (hasKey) { + String sl = letters.get(key); + if (sl != null) { return letters.get(key); } } @@ -195,9 +195,9 @@ public class BengaliLanguageUtils extends LanguageUtils { } String kaar = m.group(10); if (kaar != null) { - boolean hasKey = letters.containsKey(kaar); - if (hasKey) { - appendableString = appendableString + letters.get(kaar); + String kaarStr = letters.get(kaar); + if (kaarStr != null) { + appendableString = appendableString + kaarStr; } } else if (appendableString.length() > 0 && !vowelsAndHasants.containsKey(m.group(0))) { // Adding 'a' like ITRANS if no vowel is present. @@ -206,9 +206,9 @@ public class BengaliLanguageUtils extends LanguageUtils { } String singleton = m.group(11); if (singleton != null) { - boolean hasKeyS = letters.containsKey(singleton); - if (hasKeyS) { - appendableString = appendableString + letters.get(singleton); + String singleStr = letters.get(singleton); + if (singleStr != null) { + appendableString = appendableString + singleStr; } } String others = m.group(0);