in languagetool-language-modules/pt/src/main/java/org/languagetool/rules/pt/PortugueseReadabilityRule.java [151:185]
protected int simpleSyllablesCount(String word) {
if (word.length() == 0) {
return 0;
}
int nSyllables = 0;
if (isVowel(word.charAt(0))) {
nSyllables++;
}
boolean lastDouble = false;
for (int i = 1; i < word.length(); i++) {
char c = word.charAt(i);
if (isVowel(c)) {
char cl = word.charAt(i - 1);
if (lastDouble) {
nSyllables++;
lastDouble = false;
} else if (((c == 'ã' || c == 'õ') && (cl == 'e' || cl == 'o')) ||
(c == 'a' && (cl == 'e' || cl == 'i' || cl == 'í' || cl == 'o' || cl == 'u' || cl == 'ú')) ||
(c == 'e' && (cl == 'e' || cl == 'i' || cl == 'í' || cl == 'o' || cl == 'a' || cl == 'u')) ||
(c == 'i' && (cl == 'a' || cl == 'e' || cl == 'o' || cl == 'u' || cl == 'á' || cl == 'é')) ||
(c == 'í' && (cl == 'a' || cl == 'e')) ||
(c == 'o' && (cl == 'a' || cl == 'á' || cl == 'e' || cl == 'é' || cl == 'i' || cl == 'í' || cl == 'u')) ||
(c == 'u' && (cl == 'a' || cl == 'á' || cl == 'e' || cl == 'é' || cl == 'i' || cl == 'o')) ||
(c == 'ú' && (cl == 'a' || cl == 'e' || cl == 'o'))) {
lastDouble = true;
} else {
nSyllables++;
lastDouble = false;
}
} else {
lastDouble = false;
}
}
return nSyllables == 0 ? 1 : nSyllables;
}