Index: base/i18n/break_iterator.h |
diff --git a/base/i18n/break_iterator.h b/base/i18n/break_iterator.h |
index 19fdbe01cbdd84c52cc5c4e481bb296439660e77..9dbac7c59e68a0949a4518f09158dcd674301fb9 100644 |
--- a/base/i18n/break_iterator.h |
+++ b/base/i18n/break_iterator.h |
@@ -71,6 +71,19 @@ class BASE_I18N_EXPORT BreakIterator { |
RULE_BASED, |
}; |
+ enum WordBreakStatus { |
+ // The end of text that the iterator recognizes as word characters. |
+ // Non-word characters are things like punctuation and spaces. |
+ IS_WORD_BREAK, |
+ // Characters that the iterator can skip past, such as punctuation, |
+ // whitespace, and, if using RULE_BASED mode, characters from another |
+ // character set. |
+ IS_SKIPPABLE_WORD, |
+ // Only used if not in BREAK_WORD or RULE_BASED mode. This is returned for |
+ // newlines, line breaks, and character breaks. |
+ IS_LINE_OR_CHAR_BREAK |
+ }; |
+ |
// Requires |str| to live as long as the BreakIterator does. |
BreakIterator(const StringPiece16& str, BreakType break_type); |
// Make a rule-based iterator. BreakType == RULE_BASED is implied. |
@@ -101,6 +114,20 @@ class BASE_I18N_EXPORT BreakIterator { |
// this distinction doesn't apply and it always returns false. |
bool IsWord() const; |
+ // Under BREAK_WORD mode: |
+ // - Returns IS_SKIPPABLE_WORD if non-word characters, such as punctuation or |
+ // spaces, are found. |
+ // - Returns IS_WORD_BREAK if the break we just hit is the end of a sequence |
+ // of word characters. |
+ // Under RULE_BASED mode: |
+ // - Returns IS_SKIPPABLE_WORD if characters outside the rules' character set |
+ // or non-word characters, such as punctuation or spaces, are found. |
+ // - Returns IS_WORD_BREAK if the break we just hit is the end of a sequence |
+ // of word characters that are in the rules' character set. |
+ // Not under BREAK_WORD or RULE_BASED mode: |
+ // - Returns IS_LINE_OR_CHAR_BREAK. |
+ BreakIterator::WordBreakStatus GetWordBreakStatus() const; |
+ |
// Under BREAK_WORD mode, returns true if |position| is at the end of word or |
// at the start of word. It always returns false under BREAK_LINE and |
// BREAK_NEWLINE modes. |