Mercurial > dottes
view abcfirstline.py @ 956:c52d237f99d5
Encourage A4 to page break before a tune.
This enourages page breaks to happen before tune start, and not
between the tune image and any following wording.
Also move the vfill to the tune start. That way, if the break does not
happen, the vfill will, and the following tune will be spaced down
to the bottom of the page if it's the only other tune on the page.
Otherwise everything tends to clump at the top of the page.
author | Jim Hague <jim.hague@acm.org> |
---|---|
date | Wed, 07 Aug 2019 00:01:44 +0100 |
parents | 1b79867b4f35 |
children |
line wrap: on
line source
#!/usr/bin/env python3 # # Write out a modified version of a .abc file with just the data # to print the first line of the music only. # import sys def process(inf): continued = False print("X:1") for line in inf: line = line.strip() # If it is empty or starts "%", ignore it. if len(line) == 0 or line[0] == "%": continue # Is it a header line? I.e. does it start LETTER (or +) COLON? # If so, output only ones we need. start = line[:2] if len(start) > 1 and start[1] == ":" and (start[0].isalpha() or start[0] == '+'): if start[0] in ["M", "K", "L"]: print(line) # Output line. If it is a continuation, output at most one # continuation. else: print(line) if continued or line[-1] != "\\": break else: continued = True if len(sys.argv) > 1: for arg in sys.argv[1:]: try: inf = open(arg, "r") process(inf) finally: inf.close() else: process(sys.stdin)