#!/usr/bin/env python3 # Combine sets and tunes into TeXable setlist # endproduct should look somewhat like example.tex from tunes_db.tune import Tune from tunes_db.sets import sets from tunes_db.tunes import tunes import re heading = """ \\newcommand{\\tunesep}{ - } \\newcommand{\\amountofcols}{6} \\newcommand{\seventeen}[1]{\\textit{#1}} \\newcommand{\\noscore}{ - } \\begin{table}[h!] \\centering \\begin{adjustbox}{max width=\\textwidth} \\begin{tabular}{| r | l | l %pipes | l %bass | l %tenor | l %side |} \\multicolumn{\\amountofcols}{c}{ \\textbf{setlist 2017 seaforth highlanders of holland }} \\\\ \\hline set & titel & pipes %Pipes & bass %Bass & tenor %Tenor & snare %Side \\\\%""" end = """\end{tabular} \end{adjustbox} \end{table}""" def setlist_line_score(scorelist, instrument): # No Score set # Using scorelist = "", we can get empty lines if not scorelist and scorelist != "" : return '\\noscore{}' tex_scorelist = "" for score in scorelist: if re.match('std\d\d', score): number = score.replace('std','') # This is a standard, we point to the instruments standard if instrument == "side": if number == "24" or number == "44": tex_scorelist += "\\hyperref[standards-24-44-standards.side]{Std. "+ number[0] + '/' + number[1] + "}" continue elif number == "34": tex_scorelist += "\\hyperref[standards-34-standards.side]{Std. "+ number[0] + '/' + number[1] + "}" continue elif number == "68": tex_scorelist += "\\hyperref[standards-68-standards.side]{Std. "+ number[0] + '/' + number[1] + "}" continue elif number == "98": tex_scorelist += "\\hyperref[standards-98-standards.side]{Std. "+ number[0] + '/' + number[1] + "}" continue elif instrument == "bass": tex_scorelist += "\\hyperref[standards-standards.bass]{Std. "+ number[0] + '/' + number[1] + "}" continue elif instrument == "tenor": tex_scorelist += "\\hyperref[standards-standards.tenor]{Std. "+ number[0] + '/' + number[1] + "}" continue tex_scorelist += "\\pageref{" + score.replace('/','-') + "}" return tex_scorelist def setlist_line(prefix, title, pipes, bass, tenor, side): pipes = setlist_line_score(pipes, 'pipes') bass = setlist_line_score(bass, 'bass') tenor = setlist_line_score(tenor, 'tenor') side = setlist_line_score(side, 'side') return "{prefix}\t& {title}\n\t& {pipes} %Pipes\n\t& {bass} %Bass\n\t& {tenor} %Tenor\n\t& {side} %Side\n\\\\ %".format(prefix = prefix, title = title, pipes = pipes, bass = bass, tenor = tenor, side = side) # 1 & 4/4 \hyperref[4-4-marches-bonnie-galloway-pipes]{Bonnie Galloway}\tunesep\hyperref[4-4-marches-were-no-awa-tae-bide-awa-pipes]{We're No Awa Tae Bide Awa} # & \pageref{4-4-marches-bonnie-galloway-pipes}\tunesep\pageref{4-4-marches-were-no-awa-tae-bide-awa-pipes}%Pipes # & \hyperref[standards-standards.bass]{Std. 4/4}%Bass # & \hyperref[standards-standards.tenor]{Std. 4/4}%Tenor # & \hyperref[standards-24-44-standards.side]{Std. 4/4}%Side #\\ % print(heading) print("\\hline") for count, tuneset in enumerate(sets): if count % 5 == 0 and count != 0: print(setlist_line("","","","","","")) print(setlist_line(tuneset.setid, tuneset.name, **tuneset.instruments)) print("""\\hline \\multicolumn{\\amountofcols}{|c|}{Losse Nummers}\\\\% \\hline""") for count, tune in enumerate(tunes): if count % 5 == 0 and count != 0: print(setlist_line("","","","","",'')) print(setlist_line("", tune.name, **tune.instruments)) print(end)