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
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) ])
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
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