Commit a1aae0f7 authored by Simon Will's avatar Simon Will
Browse files

Merge branch 'master' of gitlab.cl.uni-heidelberg.de:Messerschleifer/Allzweckmesser

parents fca6e9b9 d1edc86d
Loading
Loading
Loading
Loading
+48 −4
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ def multiply_readings(readings: List[Reading],
        for i in range(orig_readings_len):
            # TODO: Think about moving this to Reading in model.py
            new_reading = Reading(
                [copy.copy(token) for token in readings[i].tokens]
                [copy.deepcopy(token) for token in readings[i].tokens]
            )
            readings.append(new_reading)
    return readings
@@ -240,16 +240,60 @@ def get_syllables(reading):


def muta_cum_liquida(verse):
    mcl_regex = re.compile(r"([bpskgdt]|(qu)|(qv)),?\s?[lrmn]")
    
    mcl_regex = re.compile(r'([bpskgdt]|(qu)|(qv)),?\s?[lrmn]')
    if re.search(mcl_regex, verse.text):
        matches = re.finditer(mcl_regex, verse.text)

        for match in matches:
            for reading in verse.readings:
                for token in reading.tokens:
                    for syllable in token.syllables:

                        if syllable.span[0]<= match.start() < syllable.span[1]:
                            syllable.phenomena["muta cum liquida"] = Phenomenon(chars=match.group(0))
        pass

                            syllable.phenomena['muta cum liquida'] = Phenomenon(chars=match.group(0))


def positional_lengthening(verse):

    muta_cum_liquida(verse)

    pl_regex = re.compile(r'[aeiouv]((([bcdfgjklmnprstvwxz]|(qu),?\s?){2,})|[xz])')
    match_starts = [match.start() for match in re.finditer(pl_regex, verse.text)]

    for reading in verse.readings:
        syllables = [syllable for token in reading.tokens 
                     for syllable in token.syllables]
        lengths = str()
        for syllable in syllables:
            if 'muta cum liquida' in syllable.phenomena:
                lengths += 'M'
            elif syllable.syllable_length == 2:
                lengths += 'L'
            elif any([syllable.span[0]<= start < syllable.span[1] 
                      for start in match_starts]):
                lengths += 'L'
            elif syllable.syllable_length == 1:
                lengths += 'S'
        
        print(lengths)
                

        #for reading in verse.readings:
            #for token in reading.tokens:
                #for syllable in token.syllables:

                    #if "muta cum liquida" in syllable.phenomena:
                        
                        #old_reading = copy.deepcopy(reading)
                        #all_readings_parsed = False
                        
                        #if syllable_length == 1:
                            
                        #elif syllable_length == 2:
                        
                    


class Scanner: