english/common.go
func endsShortSyllable(w *snowballword.SnowballWord, i int) bool {

	if i == 2 {

		// Check for a vowel at the beginning of the word followed by a non-vowel.
		if isLowerVowel(w.RS[0]) && !isLowerVowel(w.RS[1]) {
			return true
		} else {
			return false
		}

	} else if i >= 3 {

		// The runes 1, 2, & 3 positions to the left of `i`.
		s1 := w.RS[i-1]
		s2 := w.RS[i-2]
		s3 := w.RS[i-3]

		// Check for a vowel followed by a non-vowel other than w, x or Y
		// and preceded by a non-vowel.
		// (Note: w, x, Y rune codepoints = 119, 120, 89)
		//
		if !isLowerVowel(s1) && s1 != 119 && s1 != 120 && s1 != 89 && isLowerVowel(s2) && !isLowerVowel(s3) {
			return true
		} else {
			return false
		}

	}
	return false
}
func endsShortSyllable(w *snowballword.SnowballWord, i int) bool {

	if i == 2 {

		// Check for a vowel at the beginning of the word followed by a non-vowel.
		if isLowerVowel(w.RS[0]) && !isLowerVowel(w.RS[1]) {
			return true
		} else {
			return false
		}

	} else if i >= 3 {

		// The runes 1, 2, & 3 positions to the left of `i`.
		s1 := w.RS[i-1]
		s2 := w.RS[i-2]
		s3 := w.RS[i-3]

		// Check for a vowel followed by a non-vowel other than w, x or Y
		// and preceded by a non-vowel.
		// (Note: w, x, Y rune codepoints = 119, 120, 89)
		//
		if !isLowerVowel(s1) && s1 != 119 && s1 != 120 && s1 != 89 && isLowerVowel(s2) && !isLowerVowel(s3) {
			return true
		} else {
			return false
		}

	}
	return false
}
// Return true if the indicies at `w.RS[:i]` end in a short syllable.
// Define a short syllable in a word as either
// (a) a vowel followed by a non-vowel other than w, x or Y
//     and preceded by a non-vowel, or
// (b) a vowel at the beginning of the word followed by a non-vowel.
//