mirror of
				https://gitlab.com/parroquia-san-leandro/cancionero-web.git
				synced 2025-11-03 22:58:39 +01:00 
			
		
		
		
	fixed bug related to loop counter update
This commit is contained in:
		
					parent
					
						
							
								9c5602876c
							
						
					
				
			
			
				commit
				
					
						30dc36d262
					
				
			
		
					 1 changed files with 4 additions and 19 deletions
				
			
		| 
						 | 
				
			
			@ -84,15 +84,16 @@ class SongLoader:
 | 
			
		|||
            text = re.sub(r"\\brk({})?", '', text)
 | 
			
		||||
 | 
			
		||||
            extras = {}
 | 
			
		||||
            for i in range(len(text)):
 | 
			
		||||
            i = 0
 | 
			
		||||
            while i <= len(text):
 | 
			
		||||
                beginning = text[:i]
 | 
			
		||||
                remain = text[i:]
 | 
			
		||||
                if re.match(r"\\fi", remain):
 | 
			
		||||
                    ignore = False
 | 
			
		||||
                    text = beginning + text[i + len("\\fi"):]
 | 
			
		||||
                    i -= 1
 | 
			
		||||
                    continue
 | 
			
		||||
                if ignore:
 | 
			
		||||
                    i += 1
 | 
			
		||||
                    continue
 | 
			
		||||
 | 
			
		||||
                # Command lookup
 | 
			
		||||
| 
						 | 
				
			
			@ -100,7 +101,6 @@ class SongLoader:
 | 
			
		|||
                if re_transpose_match:
 | 
			
		||||
                    text = beginning + text[i + len(re_transpose_match.group(0)):]
 | 
			
		||||
                    transpose = int(re_transpose_match.group(1))
 | 
			
		||||
                    i -= 1
 | 
			
		||||
                    continue
 | 
			
		||||
                re_song_begin_match = re.match(r"\\beginsong *?{(.*?)}(\[.*?])?", remain)
 | 
			
		||||
                if re_song_begin_match:
 | 
			
		||||
| 
						 | 
				
			
			@ -120,14 +120,12 @@ class SongLoader:
 | 
			
		|||
                    replay_index = 0
 | 
			
		||||
                    for a in find_audios(self.index):
 | 
			
		||||
                        current_song.add_audio(a)
 | 
			
		||||
                    i -= 1
 | 
			
		||||
                    continue
 | 
			
		||||
                if re.match(r"\\endsong", remain):
 | 
			
		||||
                    text = beginning + text[i + len("\\endsong"):]
 | 
			
		||||
                    self.songs.append(current_song)
 | 
			
		||||
                    current_song = None
 | 
			
		||||
                    self.index += 1
 | 
			
		||||
                    i -= 1
 | 
			
		||||
                    continue
 | 
			
		||||
                re_verse_cmd_match = re.match(r"\\(begin|end)(verse|chorus)", remain)
 | 
			
		||||
                if re_verse_cmd_match:
 | 
			
		||||
| 
						 | 
				
			
			@ -150,33 +148,27 @@ class SongLoader:
 | 
			
		|||
                        memorizing = False
 | 
			
		||||
                        current_song.add_verse(current_verse)
 | 
			
		||||
                        current_verse = None
 | 
			
		||||
                    i -= 1
 | 
			
		||||
                    continue
 | 
			
		||||
                re_capo_match = re.match(r"\\capo{(\d+?)}", remain)
 | 
			
		||||
                if re_capo_match and current_song:
 | 
			
		||||
                    text = beginning + text[i + len(re_capo_match.group(0)):]
 | 
			
		||||
                    current_song.set_capo(int(re_capo_match.group(1)))
 | 
			
		||||
                    i -= 1
 | 
			
		||||
                    continue
 | 
			
		||||
                if re.match(r"\\ifchorded", remain):
 | 
			
		||||
                    text = beginning + text[i + len("\\ifchorded"):]
 | 
			
		||||
                    i -= 1
 | 
			
		||||
                    continue
 | 
			
		||||
                if re.match(r"\\else", remain):
 | 
			
		||||
                    ignore = True
 | 
			
		||||
                    text = beginning + text[i + len("\\else"):]
 | 
			
		||||
                    i -= 1
 | 
			
		||||
                    continue
 | 
			
		||||
                re_echo_match = re.match(r"\\echo[ \t]*?{((.|{.*?})*?)}", remain)
 | 
			
		||||
                if re_echo_match:
 | 
			
		||||
                    text = beginning + re_echo_match.group(1) + "\\echoend" + text[i + len(re_echo_match.group(0)):]
 | 
			
		||||
                    extra_put(extras, i, "echo")
 | 
			
		||||
                    i -= 1
 | 
			
		||||
                    continue
 | 
			
		||||
                if re.match(r"\\echoend", remain):
 | 
			
		||||
                    text = beginning + text[i + len("\\echoend"):]
 | 
			
		||||
                    extra_put(extras, i, "echo")
 | 
			
		||||
                    i -= 1
 | 
			
		||||
                    continue
 | 
			
		||||
                re_chord_match = re.match(r"\\\[(.+?)]", remain)
 | 
			
		||||
                if re_chord_match:
 | 
			
		||||
| 
						 | 
				
			
			@ -185,51 +177,44 @@ class SongLoader:
 | 
			
		|||
                    extra_put(extras, i, "chord", c)
 | 
			
		||||
                    if memorizing:
 | 
			
		||||
                        memory.append(c)
 | 
			
		||||
                    i -= 1
 | 
			
		||||
                    continue
 | 
			
		||||
                if re.match(r"\^", remain):
 | 
			
		||||
                    text = beginning + text[i + len("^"):]
 | 
			
		||||
                    if memory is not None and replay_index < len(memory):
 | 
			
		||||
                        extra_put(extras, i, "chord", memory[replay_index])
 | 
			
		||||
                        replay_index += 1
 | 
			
		||||
                    i -= 1
 | 
			
		||||
                    continue
 | 
			
		||||
                re_dir_rep_match = re.match(r"\\([lr]rep)", remain)
 | 
			
		||||
                if re_dir_rep_match:
 | 
			
		||||
                    text = beginning + text[i + len(re_dir_rep_match.group(0)):]
 | 
			
		||||
                    extra_put(extras, i, "dir-rep", re_dir_rep_match.group(1))
 | 
			
		||||
                    i -= 1
 | 
			
		||||
                    continue
 | 
			
		||||
                re_rep_match = re.match(r"\\rep{(\d+?)}", remain)
 | 
			
		||||
                if re_rep_match:
 | 
			
		||||
                    text = beginning + text[i + len(re_rep_match.group(0)):]
 | 
			
		||||
                    extra_put(extras, i, 'rep', int(re_rep_match.group(1)))
 | 
			
		||||
                    i -= 1
 | 
			
		||||
                    continue
 | 
			
		||||
                if re.match(r"\\memorize", remain):
 | 
			
		||||
                    text = beginning + text[i + len("\\memorize"):]
 | 
			
		||||
                    memory = []
 | 
			
		||||
                    memorizing = True
 | 
			
		||||
                    i -= 1
 | 
			
		||||
                    continue
 | 
			
		||||
                if re.match(r"\\replay", remain):
 | 
			
		||||
                    text = beginning + text[i + len("\\replay"):]
 | 
			
		||||
                    replay_index = 0
 | 
			
		||||
                    i -= 1
 | 
			
		||||
                    continue
 | 
			
		||||
                # Command lookup end, removing any unrecognized command
 | 
			
		||||
                re_macro_match = re.match(r"\\([^ \t{\[]+)[ \t]*?({.*?}|\[.*?])*", remain)
 | 
			
		||||
                if re_macro_match:
 | 
			
		||||
                    text = beginning + text[i + len(re_macro_match.group(0)):]
 | 
			
		||||
                    print("Removed an unrecognized command:", re_macro_match.group(0))
 | 
			
		||||
                    i -= 1
 | 
			
		||||
                    continue
 | 
			
		||||
                i += 1
 | 
			
		||||
            if not current_verse and text.strip() != '':
 | 
			
		||||
                print("l outside v:", text)
 | 
			
		||||
                continue
 | 
			
		||||
            if ignore or text.strip() == '':
 | 
			
		||||
                continue
 | 
			
		||||
 | 
			
		||||
            current_verse.add_line(Line(text, extras))
 | 
			
		||||
 | 
			
		||||
    def print_index(self, index_file="index.html"):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue