diff --git a/allzweckmesser/scanner.py b/allzweckmesser/scanner.py index db69fa58c6010ddb8fb8d5a7ee46c6c54228a507..9f61205469d7d2294d1754d93dcc3cde7043f2b6 100644 --- a/allzweckmesser/scanner.py +++ b/allzweckmesser/scanner.py @@ -266,6 +266,22 @@ def positional_lengthening(verse): syllable.phenomena['positional lengthening'] = Phenomenon(chars=match.group(1)) +def make_elisions(verse): + for reading in verse.readings: + for i, token in enumerate(reading.tokens): + if i < len(reading.tokens) - 1: + this_syllable = token.syllables[-1] + next_syllable = reading.tokens[i+1].syllables[0] + m = re.search(r'[aeiouy][mh]*$', this_syllable.text) + if m: + if re.search(r'h?[aeiouy]', next_syllable.text): + # Elision! + this_syllable.phenomena['elision'] = Phenomenon(omitted=m.group()) + this_syllable.syllable_length = 0 + return verse + + + def parse_verse(verse): """Annotates syllable lengths based on positional_lengthening and muta cum liquida @@ -348,4 +364,5 @@ class Scanner: for reading in verse.readings: get_syllables(reading) parse_verse(verse) + make_elisions(verse) return verses