diff options
Diffstat (limited to 'games/syl')
-rwxr-xr-x | games/syl | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/games/syl b/games/syl deleted file mode 100755 index d83187c6..00000000 --- a/games/syl +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env bash - -# Apply some dumb heuristics to guess at the number of syllables in the English -# word given as the sole required argument -word=${1:?Need a word} -lcword=$(printf %s "$word" | tr '[:upper:]' '[:lower:]') - -# Start counting syllables for the word and vowels for the current vowel group -declare -i sylc vowc - -# Iterate through the letters in the word -for ((i = 0; i < ${#word}; i++)); do - case ${word:i:1} in - - # If it's a vowel or a y, we might be adding a syllable. We here - # include all the vowels I got out of /usr/share/dict/words on my - # system. - [aeiouyáâäåèéêíóôöûü]) - - # Bump the number of vowels so far in this group - ((vowc++)) - - # On every odd vowel, we'll add another syllable, so that "e" and - # "ei" are each one syllable, but "eia" and "eiau" are two. - ((vowc % 2)) && ((sylc++)) - ;; - - # If it's not a vowel or a y, reset the vowel count - *) - ((vowc = 0)) - ;; - esac -done - -# As a special case, if the word ends with a consonant and then "e" and has -# more than one syllable, subtract one syllable as it's probably a silent "e" -if ((sylc > 1)) ; then - case $lcword in - - # Exceptions first - *[bcdgptx]le|*c[mn]e|*phe) - ;; - *[!aeiouy]e) - ((sylc--)) - ;; - - # "pined", "loved", but not "wasted", "devoted" - *[bcdgptx]led) - ;; - *[!aeiotuy]ed) - ((sylc--)) - ;; - - # Plural forms of the above - *[bc]les|*c[mn]es|*phes) - ;; - *[!aeiousy]es) - ((sylc--)) - ;; - esac -fi - -# Add a syllable for an "ism" suffix -case $lcword in - *ism|*isms) - ((sylc++)) - ;; -esac - -# Print the determined syllable count -printf '%u\n' "$sylc" |