#!@PYTHON@ # mutopia-index.py import fnmatch import getopt import os import re import stat import sys def find (pat, dir): f = os.popen ('find %s -name "%s"'% (dir, pat)) lst = [] for a in f.readlines(): a = a[:-1] lst.append (a) return lst junk_prefix = 'out-www/' headertext= r"""

LilyPond samples

You are looking at a page with some LilyPond samples. These files are also included in the distribution. The output is completely generated from the source file, without any further touch up.

The pictures are 90 dpi anti-aliased snapshots of the printed output. For a good impression of the quality print out the PDF file. """ headertext_nopics= r"""

No examples were found in this directory. """ # # FIXME breaks on multiple strings. # def read_lilypond_header (fn): s = open (fn).read () s = re.sub ('%.*$', '', s) s = re.sub ('\n', ' ', s) dict = {} m = re.search (r"""\\header\s*{([^}]*)}""", s) if m: s = m.group (1) else: return dict while s: m = re.search (r'''\s*(\S+)\s*=\s*"([^"]+)"''', s) if m == None: s = '' else: s = s[m.end (0):] left = m.group (1) right = m.group (2) left = re.sub ('"', '', left) right = re.sub ('"', '', right) dict[left] = right return dict def help (): sys.stdout.write (r'''Usage: mutopia-index [OPTIONS] INFILE OUTFILE Generate index for mutopia. Options: -h, --help print this help -o, --output=FILE write output to file -s, --subdirs=DIR add subdir --suffix=SUF specify suffix ''') sys.exit (0) # ugh. def gen_list (inputs, file_name): sys.stderr.write ("generating HTML list %s" % file_name) sys.stderr.write ('\n') if file_name: list = open (file_name, 'w') else: list = sys.stdout list.write ('''Rendered Examples ''') list.write ('\n') if inputs: list.write (headertext) else: list.write (headertext_nopics) for ex in inputs: print ex (base, ext) = os.path.splitext (ex) (base, ext2) = os.path.splitext (base) ext = ext2 + ext header = read_lilypond_header (ex) head = header.get ('title', os.path.basename (base)) composer = header.get ('composer', '') desc = header.get ('description', '') list.write ('


\n') list.write ('

%s

\n' % head); if composer: list.write ('

%s

\n' % composer) if desc: list.write ('%s

' % desc) list.write ('

\n'); list.write ('\n'); list.close () (options, files) = getopt.getopt (sys.argv[1:], 'ho:', ['help', 'output=']) outfile = 'examples.html' subdirs = [] for (o, a) in options: if o == '--help' or o == '-h': help () elif o == '--output' or o == '-o': outfile = a dirs = [] for f in files: dirs += find ('out-www', f) if not dirs: dirs = ['.'] allfiles = [] for d in dirs: allfiles += find ('*.ly', d) allfiles = [f for f in allfiles if not f.endswith ('snippet-map.ly') and not re.search ('lily-[0-9a-f]+', f) and 'musicxml' not in f] gen_list (allfiles, outfile)