diff options
author | 2024-12-16 21:45:41 -0500 | |
---|---|---|
committer | 2025-01-11 14:17:35 -0500 | |
commit | e9a0e66716dab4dd3184d009d8920de1961efdfa (patch) | |
tree | 02dcc096643d74645bf28459c2834c3d4a2ad7f2 /java/src/com/android/inputmethod/latin/utils/RecapitalizeStatus.java | |
parent | fb3b9360d70596d7e921de8bf7d3ca99564a077e (diff) | |
download | latinime-e9a0e66716dab4dd3184d009d8920de1961efdfa.tar.gz latinime-e9a0e66716dab4dd3184d009d8920de1961efdfa.tar.xz latinime-e9a0e66716dab4dd3184d009d8920de1961efdfa.zip |
Rename to Kelar Keyboard (org.kelar.inputmethod.latin)
Diffstat (limited to 'java/src/com/android/inputmethod/latin/utils/RecapitalizeStatus.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/utils/RecapitalizeStatus.java | 221 |
1 files changed, 0 insertions, 221 deletions
diff --git a/java/src/com/android/inputmethod/latin/utils/RecapitalizeStatus.java b/java/src/com/android/inputmethod/latin/utils/RecapitalizeStatus.java deleted file mode 100644 index 737e33228..000000000 --- a/java/src/com/android/inputmethod/latin/utils/RecapitalizeStatus.java +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -package com.android.inputmethod.latin.utils; - -import com.android.inputmethod.latin.common.StringUtils; - -import java.util.Locale; - -/** - * The status of the current recapitalize process. - */ -public class RecapitalizeStatus { - public static final int NOT_A_RECAPITALIZE_MODE = -1; - public static final int CAPS_MODE_ORIGINAL_MIXED_CASE = 0; - public static final int CAPS_MODE_ALL_LOWER = 1; - public static final int CAPS_MODE_FIRST_WORD_UPPER = 2; - public static final int CAPS_MODE_ALL_UPPER = 3; - // When adding a new mode, don't forget to update the CAPS_MODE_LAST constant. - public static final int CAPS_MODE_LAST = CAPS_MODE_ALL_UPPER; - - private static final int[] ROTATION_STYLE = { - CAPS_MODE_ORIGINAL_MIXED_CASE, - CAPS_MODE_ALL_LOWER, - CAPS_MODE_FIRST_WORD_UPPER, - CAPS_MODE_ALL_UPPER - }; - - private static final int getStringMode(final String string, final int[] sortedSeparators) { - if (StringUtils.isIdenticalAfterUpcase(string)) { - return CAPS_MODE_ALL_UPPER; - } else if (StringUtils.isIdenticalAfterDowncase(string)) { - return CAPS_MODE_ALL_LOWER; - } else if (StringUtils.isIdenticalAfterCapitalizeEachWord(string, sortedSeparators)) { - return CAPS_MODE_FIRST_WORD_UPPER; - } else { - return CAPS_MODE_ORIGINAL_MIXED_CASE; - } - } - - public static String modeToString(final int recapitalizeMode) { - switch (recapitalizeMode) { - case NOT_A_RECAPITALIZE_MODE: return "undefined"; - case CAPS_MODE_ORIGINAL_MIXED_CASE: return "mixedCase"; - case CAPS_MODE_ALL_LOWER: return "allLower"; - case CAPS_MODE_FIRST_WORD_UPPER: return "firstWordUpper"; - case CAPS_MODE_ALL_UPPER: return "allUpper"; - default: return "unknown<" + recapitalizeMode + ">"; - } - } - - /** - * We store the location of the cursor and the string that was there before the recapitalize - * action was done, and the location of the cursor and the string that was there after. - */ - private int mCursorStartBefore; - private String mStringBefore; - private int mCursorStartAfter; - private int mCursorEndAfter; - private int mRotationStyleCurrentIndex; - private boolean mSkipOriginalMixedCaseMode; - private Locale mLocale; - private int[] mSortedSeparators; - private String mStringAfter; - private boolean mIsStarted; - private boolean mIsEnabled = true; - - private static final int[] EMPTY_STORTED_SEPARATORS = {}; - - public RecapitalizeStatus() { - // By default, initialize with fake values that won't match any real recapitalize. - start(-1, -1, "", Locale.getDefault(), EMPTY_STORTED_SEPARATORS); - stop(); - } - - public void start(final int cursorStart, final int cursorEnd, final String string, - final Locale locale, final int[] sortedSeparators) { - if (!mIsEnabled) { - return; - } - mCursorStartBefore = cursorStart; - mStringBefore = string; - mCursorStartAfter = cursorStart; - mCursorEndAfter = cursorEnd; - mStringAfter = string; - final int initialMode = getStringMode(mStringBefore, sortedSeparators); - mLocale = locale; - mSortedSeparators = sortedSeparators; - if (CAPS_MODE_ORIGINAL_MIXED_CASE == initialMode) { - mRotationStyleCurrentIndex = 0; - mSkipOriginalMixedCaseMode = false; - } else { - // Find the current mode in the array. - int currentMode; - for (currentMode = ROTATION_STYLE.length - 1; currentMode > 0; --currentMode) { - if (ROTATION_STYLE[currentMode] == initialMode) { - break; - } - } - mRotationStyleCurrentIndex = currentMode; - mSkipOriginalMixedCaseMode = true; - } - mIsStarted = true; - } - - public void stop() { - mIsStarted = false; - } - - public boolean isStarted() { - return mIsStarted; - } - - public void enable() { - mIsEnabled = true; - } - - public void disable() { - mIsEnabled = false; - } - - public boolean mIsEnabled() { - return mIsEnabled; - } - - public boolean isSetAt(final int cursorStart, final int cursorEnd) { - return cursorStart == mCursorStartAfter && cursorEnd == mCursorEndAfter; - } - - /** - * Rotate through the different possible capitalization modes. - */ - public void rotate() { - final String oldResult = mStringAfter; - int count = 0; // Protection against infinite loop. - do { - mRotationStyleCurrentIndex = (mRotationStyleCurrentIndex + 1) % ROTATION_STYLE.length; - if (CAPS_MODE_ORIGINAL_MIXED_CASE == ROTATION_STYLE[mRotationStyleCurrentIndex] - && mSkipOriginalMixedCaseMode) { - mRotationStyleCurrentIndex = - (mRotationStyleCurrentIndex + 1) % ROTATION_STYLE.length; - } - ++count; - switch (ROTATION_STYLE[mRotationStyleCurrentIndex]) { - case CAPS_MODE_ORIGINAL_MIXED_CASE: - mStringAfter = mStringBefore; - break; - case CAPS_MODE_ALL_LOWER: - mStringAfter = mStringBefore.toLowerCase(mLocale); - break; - case CAPS_MODE_FIRST_WORD_UPPER: - mStringAfter = StringUtils.capitalizeEachWord(mStringBefore, mSortedSeparators, - mLocale); - break; - case CAPS_MODE_ALL_UPPER: - mStringAfter = mStringBefore.toUpperCase(mLocale); - break; - default: - mStringAfter = mStringBefore; - } - } while (mStringAfter.equals(oldResult) && count < ROTATION_STYLE.length + 1); - mCursorEndAfter = mCursorStartAfter + mStringAfter.length(); - } - - /** - * Remove leading/trailing whitespace from the considered string. - */ - public void trim() { - final int len = mStringBefore.length(); - int nonWhitespaceStart = 0; - for (; nonWhitespaceStart < len; - nonWhitespaceStart = mStringBefore.offsetByCodePoints(nonWhitespaceStart, 1)) { - final int codePoint = mStringBefore.codePointAt(nonWhitespaceStart); - if (!Character.isWhitespace(codePoint)) break; - } - int nonWhitespaceEnd = len; - for (; nonWhitespaceEnd > 0; - nonWhitespaceEnd = mStringBefore.offsetByCodePoints(nonWhitespaceEnd, -1)) { - final int codePoint = mStringBefore.codePointBefore(nonWhitespaceEnd); - if (!Character.isWhitespace(codePoint)) break; - } - // If nonWhitespaceStart >= nonWhitespaceEnd, that means the selection contained only - // whitespace, so we leave it as is. - if ((0 != nonWhitespaceStart || len != nonWhitespaceEnd) - && nonWhitespaceStart < nonWhitespaceEnd) { - mCursorEndAfter = mCursorStartBefore + nonWhitespaceEnd; - mCursorStartBefore = mCursorStartAfter = mCursorStartBefore + nonWhitespaceStart; - mStringAfter = mStringBefore = - mStringBefore.substring(nonWhitespaceStart, nonWhitespaceEnd); - } - } - - public String getRecapitalizedString() { - return mStringAfter; - } - - public int getNewCursorStart() { - return mCursorStartAfter; - } - - public int getNewCursorEnd() { - return mCursorEndAfter; - } - - public int getCurrentMode() { - return ROTATION_STYLE[mRotationStyleCurrentIndex]; - } -} |