def process(block): _print = Print() composition = Composition() edition = Edition() voices = [] _temp = {'print': _print, 'composition': composition, 'edition': edition, 'voices': voices} for line in block: parse(_temp, line) composition.voices = voices edition.composition = composition _print.edition = edition return _print
def load(filename): file = open(filename, 'r') r_print_id = re.compile("Print Number: (.*)") r_composer = re.compile("Composer: (.*)") r_title = re.compile("Title: (.*)") r_genre = re.compile("Genre: (.*)") r_key = re.compile("Key: (.*)") r_composition_year = re.compile("Composition Year: (.*)") r_edition = re.compile("Edition: (.*)") r_editor = re.compile("Editor: (.*)") r_voice = re.compile("Voice (\d*): (.*)") r_partiture = re.compile("Partiture: (.*)") r_incipit = re.compile("Incipit: (.*)") r_new_entity = re.compile("\n") prints = [] voices = [] composition_class = Composition(None, None, None, None, None, None, None) edition_class = Edition(None, None, None) print_class = Print(None, None, None) for line in file: m = r_print_id.match(line) if m: print_id = load_print_id(m) print_class.print_id = print_id continue m = r_composer.match(line) if m: composition_authors = load_composer(m) composition_class.authors = composition_authors continue m = r_title.match(line) if m: title = load_title(m) composition_class.name = title continue m = r_genre.match(line) if m: genre = load_genre(m) composition_class.genre = genre continue m = r_key.match(line) if m: key = load_key(m) composition_class.key = key continue m = r_composition_year.match(line) if m: year = load_composition_year(m) composition_class.year = year continue m = r_partiture.match(line) if m: paritture = load_partiture(m) print_class.partiture = paritture continue m = r_incipit.match(line) if m: incipit = load_incipit(m) composition_class.incipit = incipit continue m = r_edition.match(line) if m: edition = load_edition(m) edition_class.name = edition continue m = r_editor.match(line) if m: authors = load_editor(m) edition_class.authors = authors continue m = r_voice.match(line) if m: voice = load_voice(m) voices.append(voice) composition_class.voices = voices continue m = r_new_entity.match(line) if m: edition_class.composition = composition_class print_class.edition = edition_class if not (print_class.print_id == None): prints.append(print_class) voices = [] composition_class = Composition(None, None, None, None, None, None, None) edition_class = Edition(None, None, None) print_class = Print(None, None, None) continue return prints