Fix issue with ???

Julien LepillerSat Jun 25 15:57:04+0200 2022

52a2885

Fix issue with ???

.idea/gradle.xml

44
  <component name="GradleSettings">
55
    <option name="linkedExternalProjectsSettings">
66
      <GradleProjectSettings>
7-
        <option name="testRunner" value="PLATFORM" />
7+
        <option name="testRunner" value="GRADLE" />
88
        <option name="distributionType" value="DEFAULT_WRAPPED" />
99
        <option name="externalProjectPath" value="$PROJECT_DIR$" />
1010
        <option name="modules">

1414
            <option value="$PROJECT_DIR$/rubytextview" />
1515
          </set>
1616
        </option>
17-
        <option name="resolveModulePerSourceSet" value="false" />
1817
      </GradleProjectSettings>
1918
    </option>
2019
  </component>

.idea/runConfigurations.xml unknown status 2

1-
<?xml version="1.0" encoding="UTF-8"?>
2-
<project version="4">
3-
  <component name="RunConfigurationProducerService">
4-
    <option name="ignoredProducers">
5-
      <set>
6-
        <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
7-
        <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
8-
        <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
9-
      </set>
10-
    </option>
11-
  </component>
12-
</project>
12>
130>
\ No newline at end of file

app/src/main/java/eu/lepiller/nani/result/Result.java

11
package eu.lepiller.nani.result;
22
3+
import android.os.Build;
34
import android.util.Log;
45
56
import com.moji4j.MojiConverter;

910
import java.util.regex.Matcher;
1011
import java.util.regex.Pattern;
1112
12-
import static java.lang.Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS;
13-
import static java.lang.Character.UnicodeBlock.KATAKANA;
13+
import static java.lang.Character.UnicodeBlock.*;
1414
1515
public class Result {
1616
    public static class Source {

133133
        return null;
134134
    }
135135
136+
    private static boolean isKanji(char c) {
137+
        Character.UnicodeBlock b = of(c);
138+
        return b == CJK_UNIFIED_IDEOGRAPHS ||
139+
                b == CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A ||
140+
                b == CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B ||
141+
                (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && b == CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C) ||
142+
                (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && b == CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D) ||
143+
                b == CJK_SYMBOLS_AND_PUNCTUATION;
144+
    }
145+
136146
    public String getKanjiFurigana() {
137147
        String txt = getKanji();
138148
        String reading = getReading();

142152
        ArrayList<String> portions = new ArrayList<>();
143153
144154
        StringBuilder current = new StringBuilder();
145-
        Character.UnicodeBlock b = CJK_UNIFIED_IDEOGRAPHS;
155+
        boolean currentBlockIsKanji = true;
146156
147157
        MojiConverter converter = new MojiConverter();
148158
        for(int i=0; i<txt.length(); i++) {
149-
            Character.UnicodeBlock b2 = Character.UnicodeBlock.of(txt.charAt(i));
150-
            if(b == b2) {
159+
            boolean currentCharIsKanji = isKanji(txt.charAt(i));
160+
            if(currentBlockIsKanji == currentCharIsKanji) {
151161
                // if the headwork contains katakana, convert it to hiragana to match pronunciation
152162
                // better.
153163
                current.append(txt.charAt(i));

158168
                current = new StringBuilder();
159169
                current.append(txt.charAt(i));
160170
            }
161-
162-
            b = b2;
171+
            currentBlockIsKanji = currentCharIsKanji;
163172
        }
164173
        String str = current.toString();
165174
        if(!str.isEmpty())