Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6a072047 authored by Kurt Partridge's avatar Kurt Partridge
Browse files

ResearchLogger switch word segmentation

Previously, a logunit was considered a word only if it was all letters.  This is important for
tracking bigrams correctly.

Now, a logunit must have only at least one letter.  The dictionary check is still performed,
and punctuation, etc. still comes in as separate LogUnits.  But a word can contain a space,
which helps set up for logging words where spaces are inserted automatically, and other situations
in which text is committed with an additional space tacked onto the end.

Change-Id: Ia74094a99058890d20a9cdadf2d0989841a79a41
parent 98967539
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -731,20 +731,20 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
        researchLog.publish(closingLogUnit, true /* isIncludingPrivateData */);
    }

    private boolean hasOnlyLetters(final String word) {
    private boolean hasLetters(final String word) {
        final int length = word.length();
        for (int i = 0; i < length; i = word.offsetByCodePoints(i, 1)) {
            final int codePoint = word.codePointAt(i);
            if (!Character.isLetter(codePoint)) {
                return false;
            if (Character.isLetter(codePoint)) {
                return true;
            }
        }
        return true;
        return false;
    }

    private void onWordComplete(final String word) {
        Log.d(TAG, "onWordComplete: " + word);
        if (word != null && word.length() > 0 && hasOnlyLetters(word)) {
        if (word != null && word.length() > 0 && hasLetters(word)) {
            mCurrentLogUnit.setWord(word);
            mStatistics.recordWordEntered();
        }