1 |
/* SentenceBreakIterator.java - Default sentence BreakIterator. |
/* SentenceBreakIterator.java - Default sentence BreakIterator. |
2 |
Copyright (C) 1999, 2001 Free Software Foundation, Inc. |
Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc. |
3 |
|
|
4 |
This file is part of GNU Classpath. |
This file is part of GNU Classpath. |
5 |
|
|
91 |
while (n != CharacterIterator.DONE |
while (n != CharacterIterator.DONE |
92 |
&& Character.getType(n) == Character.END_PUNCTUATION) |
&& Character.getType(n) == Character.END_PUNCTUATION) |
93 |
n = iter.next(); |
n = iter.next(); |
94 |
// Skip spaces. |
// Skip (java) space, line and paragraph separators. |
95 |
while (n != CharacterIterator.DONE |
while (n != CharacterIterator.DONE && Character.isWhitespace(n)) |
|
&& Character.getType(n) == Character.SPACE_SEPARATOR) |
|
|
n = iter.next(); |
|
|
// Skip optional paragraph separator. |
|
|
if (n != CharacterIterator.DONE |
|
|
&& Character.getType(n) == Character.PARAGRAPH_SEPARATOR) |
|
96 |
n = iter.next(); |
n = iter.next(); |
97 |
|
|
98 |
// There's always a break somewhere after `!' or `?'. |
// There's always a break somewhere after `!' or `?'. |
106 |
while (n != CharacterIterator.DONE |
while (n != CharacterIterator.DONE |
107 |
&& Character.getType(n) == Character.END_PUNCTUATION) |
&& Character.getType(n) == Character.END_PUNCTUATION) |
108 |
n = iter.next(); |
n = iter.next(); |
109 |
// Skip spaces. We keep count because we need at least |
// Skip (java) space, line and paragraph separators. |
110 |
// one for this period to represent a terminator. |
// We keep count because we need at least one for this period to |
111 |
|
// represent a terminator. |
112 |
int spcount = 0; |
int spcount = 0; |
113 |
while (n != CharacterIterator.DONE |
while (n != CharacterIterator.DONE && Character.isWhitespace(n)) |
|
&& Character.getType(n) == Character.SPACE_SEPARATOR) |
|
114 |
{ |
{ |
115 |
n = iter.next(); |
n = iter.next(); |
116 |
++spcount; |
++spcount; |
157 |
|
|
158 |
if (! Character.isLowerCase(c) |
if (! Character.isLowerCase(c) |
159 |
&& (nt == Character.START_PUNCTUATION |
&& (nt == Character.START_PUNCTUATION |
160 |
|| nt == Character.SPACE_SEPARATOR)) |
|| Character.isWhitespace(n))) |
161 |
{ |
{ |
162 |
int save = iter.getIndex(); |
int save = iter.getIndex(); |
163 |
int save_nt = nt; |
int save_nt = nt; |
168 |
n = iter.previous(); |
n = iter.previous(); |
169 |
if (n == CharacterIterator.DONE) |
if (n == CharacterIterator.DONE) |
170 |
break; |
break; |
171 |
if (Character.getType(n) == Character.SPACE_SEPARATOR) |
if (Character.isWhitespace(n)) |
172 |
{ |
{ |
173 |
// Must have at least once space after the `.'. |
// Must have at least one (java) space after the `.'. |
174 |
int save2 = iter.getIndex(); |
int save2 = iter.getIndex(); |
175 |
while (n != CharacterIterator.DONE |
while (n != CharacterIterator.DONE |
176 |
&& Character.getType(n) == Character.SPACE_SEPARATOR) |
&& Character.isWhitespace(n)) |
177 |
n = iter.previous(); |
n = iter.previous(); |
178 |
// Skip close punctuation. |
// Skip close punctuation. |
179 |
while (n != CharacterIterator.DONE |
while (n != CharacterIterator.DONE |
198 |
period = iter.getIndex(); |
period = iter.getIndex(); |
199 |
break; |
break; |
200 |
} |
} |
201 |
else if (nt == Character.SPACE_SEPARATOR |
else if (Character.isWhitespace(n) |
202 |
|| nt == Character.END_PUNCTUATION) |
|| nt == Character.END_PUNCTUATION) |
203 |
{ |
{ |
204 |
int save = iter.getIndex(); |
int save = iter.getIndex(); |
205 |
// Skip spaces. |
// Skip (java) space, line and paragraph separators. |
206 |
while (n != CharacterIterator.DONE |
while (n != CharacterIterator.DONE |
207 |
&& Character.getType(n) == Character.SPACE_SEPARATOR) |
&& Character.isWhitespace(n)) |
208 |
n = iter.previous(); |
n = iter.previous(); |
209 |
// Skip close punctuation. |
// Skip close punctuation. |
210 |
while (n != CharacterIterator.DONE |
while (n != CharacterIterator.DONE |