Example #1
0
 def __init__(self, syllable, is_stressed=Unknown):
     self.base_syllable = syllable
     if syllable.is_closed:
         raise Incompatible
     self.elems = [
         elem if is_consonant(elem) else make_short(elem)
             for elem in syllable.elems
     ]
     self.is_stressed = is_stressed
Example #2
0
def group_into_clusters(letters):
    result = []
    while len(letters):
        chunk, letters = next_chunk(letters)
        if is_consonant(chunk[0]):
            result.append(divide_all_possible_ways(chunk))
        else:
            result.append([chunk])
    return Multiple(*[
        tuple(chain.from_iterable(elem))
            for elem in product(*result)
    ])
Example #3
0
def next_chunk(letters):
    result = []
    while len(letters):
        letter = letters[0]
        if not is_consonant(letter):
            if len(result):
                return result, letters
            else:
                return [letter], letters[1:]
        else:
            result.append(letter)
            letters = letters[1:]
    return result, letters
Example #4
0
    def score_by_onsets_and_codas(self):
        score = 0
        for sy in self.syllables:
            if is_vowel(sy.elems[0]):
                score += 1
            elif is_onset(sy.elems[0]):
                score += 1

            if len(sy.elems) == 1:
                continue
            
            if is_consonant(sy.elems[-1]):
                if is_midword_coda(sy.elems[-1]):
                    score += 1
        return score