Loading allzweckmesser/scanner.py +28 −5 Changes for allzweckmesser/scanner.py: 28 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -547,7 +547,7 @@ def positional_lengthening(verse): break def make_elisions(verse): def make_elisions(verse, old = False): for reading in verse.readings: for i, token in enumerate(reading.tokens): if not token.is_punct() and i < len(reading.tokens) - 1: Loading @@ -562,13 +562,35 @@ def make_elisions(verse): # Break the for and continue with the next reading. break m = re.search(r'[aeiouy][mh]*$', this_syllable.text, if old: m = re.search(r'[aeiouy]([mhs]*)$', this_syllable.text, flags=re.IGNORECASE) else: m = re.search(r'[aeiouy]([mh]*)$', this_syllable.text, flags=re.IGNORECASE) if m: if re.search(r'^h?[aeiouy]', next_syllable.text, if reading.tokens[i+1].text in {'es', 'est', 'estis'}: apharesis = Phenomenon(omitted='e') next_syllable.phenomena['apharesis'] = apharesis next_syllable.syllable_length = 0 if reading.tokens[i+1].text in {'est', 'estis'}: pl = Phenomenon(chars=m.groups(0)+" est") this_syllable.phenomena['positional_lengthening'] = pl this_syllable.syllable_length = 2 elif reading.tokens[i+1].text in {'es'} and 'm' in m.groups(1): pl = Phenomenon(chars=m.groups(0)+" es") this_syllable.phenomena['positional_lengthening'] = pl this_syllable.syllable_length = 2 elif re.search(r'^h?[aeiouy]', next_syllable.text, flags=re.IGNORECASE): # Elision! elision = Phenomenon(omitted=m.group()) if 's' in m.group(): this_syllable.phenomena['s-elision'] = elision else: this_syllable.phenomena['elision'] = elision this_syllable.syllable_length = 0 return verse Loading Loading @@ -645,8 +667,9 @@ def parse_verse(verse): class Scanner: def __init__(self): def __init__(self, old=False): self.word_list = WordList() self.old = old def scan_verses(self, plain_verses: List[str]): base_readings = [Reading(tokens=tokenize(v)) for v in plain_verses] Loading @@ -660,5 +683,5 @@ class Scanner: new_readings.extend(get_syllables(reading)) verse.readings = new_readings parse_verse(verse) make_elisions(verse) make_elisions(verse, self.old) #old latin not fully implemented return verses Loading
allzweckmesser/scanner.py +28 −5 Changes for allzweckmesser/scanner.py: 28 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -547,7 +547,7 @@ def positional_lengthening(verse): break def make_elisions(verse): def make_elisions(verse, old = False): for reading in verse.readings: for i, token in enumerate(reading.tokens): if not token.is_punct() and i < len(reading.tokens) - 1: Loading @@ -562,13 +562,35 @@ def make_elisions(verse): # Break the for and continue with the next reading. break m = re.search(r'[aeiouy][mh]*$', this_syllable.text, if old: m = re.search(r'[aeiouy]([mhs]*)$', this_syllable.text, flags=re.IGNORECASE) else: m = re.search(r'[aeiouy]([mh]*)$', this_syllable.text, flags=re.IGNORECASE) if m: if re.search(r'^h?[aeiouy]', next_syllable.text, if reading.tokens[i+1].text in {'es', 'est', 'estis'}: apharesis = Phenomenon(omitted='e') next_syllable.phenomena['apharesis'] = apharesis next_syllable.syllable_length = 0 if reading.tokens[i+1].text in {'est', 'estis'}: pl = Phenomenon(chars=m.groups(0)+" est") this_syllable.phenomena['positional_lengthening'] = pl this_syllable.syllable_length = 2 elif reading.tokens[i+1].text in {'es'} and 'm' in m.groups(1): pl = Phenomenon(chars=m.groups(0)+" es") this_syllable.phenomena['positional_lengthening'] = pl this_syllable.syllable_length = 2 elif re.search(r'^h?[aeiouy]', next_syllable.text, flags=re.IGNORECASE): # Elision! elision = Phenomenon(omitted=m.group()) if 's' in m.group(): this_syllable.phenomena['s-elision'] = elision else: this_syllable.phenomena['elision'] = elision this_syllable.syllable_length = 0 return verse Loading Loading @@ -645,8 +667,9 @@ def parse_verse(verse): class Scanner: def __init__(self): def __init__(self, old=False): self.word_list = WordList() self.old = old def scan_verses(self, plain_verses: List[str]): base_readings = [Reading(tokens=tokenize(v)) for v in plain_verses] Loading @@ -660,5 +683,5 @@ class Scanner: new_readings.extend(get_syllables(reading)) verse.readings = new_readings parse_verse(verse) make_elisions(verse) make_elisions(verse, self.old) #old latin not fully implemented return verses