Loading allzweckmesser/meters.py +59 −1 Original line number Diff line number Diff line #!/usr/bin/env python3 # -*- coding: utf-8 -*- ALL_METERS = [] import re from .model import Reading def caesurae_together(positions, reward): def get_reward(meter: Meter, reading: Reading): # TODO: Check if caesurae occur. return reward return get_reward def bridge(position, reward): def get_reward(meter: Meter, reading: Reading): # TODO: Check if bridge occurs. return reward return get_reward class Meter: def __init__(self, name: str, schema: str, conditions: list = None, short_name: str = None): self.name = name self.schema = schema self.conditions = ([cond.__get__(self) for cond in conditions] if conditions else []) self.short_name = short_name def match_reading(self, reading: Reading): return re.match(self.schema, reading.get_syllable_schema()) def get_rewards(self, reading: Reading): return sum(cond(reading) for cond in self.conditions) ALL_METERS = [ Meter( 'Catalectic Dactylic Hexameter', r'(–)(⏑⏑|–)(–)(⏑⏑|–)(–)(⏑⏑|–)(–)(⏑⏑|–)(–)(⏑⏑|–)(⏑|–)', phenomena={ caesurae_together([('mora', 6, 'Trithemimeral'), ('mora', 14, 'Hephthemimeral')], 2), caesurae_together([('mora', 10, 'Penthemimeral')], 1), caesurae_together([('mora', 16, 'Bucolic Diaeresis')], 1), bridge(('mora', 15, 'Hermann’s Bridge'), 1) }, short_name='6da‸' ), Meter( 'Iambic Trimeter', r'(⏑|⏑⏑|–)(⏑⏑|–)(⏑)(⏑⏑|–)(⏑|⏑⏑|–)(⏑⏑|–)(⏑)(⏑⏑|–)(⏑|⏑⏑|–)(⏑⏑|–)(⏑)(⏑|–)', phenomena={ caesurae_together([('element', 4, 'After fourth element')], 1), caesurae_together([('element', 8, 'After eighth element')], 1), }, short_name='3ia' ), ] Loading
allzweckmesser/meters.py +59 −1 Original line number Diff line number Diff line #!/usr/bin/env python3 # -*- coding: utf-8 -*- ALL_METERS = [] import re from .model import Reading def caesurae_together(positions, reward): def get_reward(meter: Meter, reading: Reading): # TODO: Check if caesurae occur. return reward return get_reward def bridge(position, reward): def get_reward(meter: Meter, reading: Reading): # TODO: Check if bridge occurs. return reward return get_reward class Meter: def __init__(self, name: str, schema: str, conditions: list = None, short_name: str = None): self.name = name self.schema = schema self.conditions = ([cond.__get__(self) for cond in conditions] if conditions else []) self.short_name = short_name def match_reading(self, reading: Reading): return re.match(self.schema, reading.get_syllable_schema()) def get_rewards(self, reading: Reading): return sum(cond(reading) for cond in self.conditions) ALL_METERS = [ Meter( 'Catalectic Dactylic Hexameter', r'(–)(⏑⏑|–)(–)(⏑⏑|–)(–)(⏑⏑|–)(–)(⏑⏑|–)(–)(⏑⏑|–)(⏑|–)', phenomena={ caesurae_together([('mora', 6, 'Trithemimeral'), ('mora', 14, 'Hephthemimeral')], 2), caesurae_together([('mora', 10, 'Penthemimeral')], 1), caesurae_together([('mora', 16, 'Bucolic Diaeresis')], 1), bridge(('mora', 15, 'Hermann’s Bridge'), 1) }, short_name='6da‸' ), Meter( 'Iambic Trimeter', r'(⏑|⏑⏑|–)(⏑⏑|–)(⏑)(⏑⏑|–)(⏑|⏑⏑|–)(⏑⏑|–)(⏑)(⏑⏑|–)(⏑|⏑⏑|–)(⏑⏑|–)(⏑)(⏑|–)', phenomena={ caesurae_together([('element', 4, 'After fourth element')], 1), caesurae_together([('element', 8, 'After eighth element')], 1), }, short_name='3ia' ), ]