view abcfirstline.py @ 735:68f926e61d16

Revise Markdown handling of character entities. Ideally I'd like the ABC character entities to survive Markdown and then get converted. But because they start with '\', they don't. So I have no alternative but to convert them to HTML entities, which Markdown then converts to UTF-8.
author Jim Hague <jim.hague@acm.org>
date Thu, 12 Oct 2017 13:32:24 +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)