]> git.donarmstrong.com Git - lilypond.git/blobdiff - buildscripts/mutopia-index.py
release: 1.2.8
[lilypond.git] / buildscripts / mutopia-index.py
index 5ea6bad2f2e974c0e2325bc88b08f67ca84bd81b..be4163087bd25fb365783db9736e676364d23134 100644 (file)
@@ -3,26 +3,32 @@
 
 name = 'mutopia-index'
 
 
 name = 'mutopia-index'
 
-import regex
+import find
+import re
 import os
 import sys
 import stat
 import os
 import sys
 import stat
-sys.path.append ('@abs-step-bindir@')
-
 
 def gulp_file (fn):
 
 def gulp_file (fn):
-       f = open (fn)
+       try:
+               f = open (fn)
+       except:
+               raise 'not there' , fn
        return f.read ()
 
        return f.read ()
 
+def file_exist_b (fn):
+       try:
+               f = open (fn)
+               return 1
+       except:
+               return 0
 
 
-header_regex = regex.compile('\\header[ \t\n]*{\([^}]*\)}')
-header_entry_regex = regex.compile('[\n\t ]*\([^\n\t ]+\)[\n\t ]*=[\n \t]*\([^;]+\)[\n \t]*;')
 
 headertext= r"""
 These example files are taken from the LilyPond distribution. 
 LilyPond currently only outputs TeX and MIDI.  The pictures and 
 PostScript files were generated using TeX, Ghostscript and some 
 
 headertext= r"""
 These example files are taken from the LilyPond distribution. 
 LilyPond currently only outputs TeX and MIDI.  The pictures and 
 PostScript files were generated using TeX, Ghostscript and some 
-graphics tools.  The papersize used for these examples is A4. 
+graphics tools.         The papersize used for these examples is A4. 
 The  images are in PNG format, and should be viewable with any current browser.
 We don't use GIFS due to <a href="http://www.gnu.org/philosophy/gif.html">patent problems</a>.
 <p>
 The  images are in PNG format, and should be viewable with any current browser.
 We don't use GIFS due to <a href="http://www.gnu.org/philosophy/gif.html">patent problems</a>.
 <p>
@@ -31,7 +37,7 @@ out</em> the samples first.
 """
 
 headertext_nopics = r"""This is a subdirectory of the LilyPond example
 """
 
 headertext_nopics = r"""This is a subdirectory of the LilyPond example
-set.  We decided not to show any examples from this directory.  If you
+set.  We decided not to show any examples from this directory. If you
 want to view them, then you have to download LilyPond and compile them
 yourself."""
 
 want to view them, then you have to download LilyPond and compile them
 yourself."""
 
@@ -41,152 +47,134 @@ yourself."""
 #
 def read_mudela_header (fn):
        s = gulp_file(fn)
 #
 def read_mudela_header (fn):
        s = gulp_file(fn)
-       s = regsub.gsub('%.*$', '', s)
-       s = regsub.gsub('\n', ' ', s)   
+       s = re.sub('%.*$', '', s)
+       s = re.sub('\n', ' ', s)                
 
        dict = {}
 
        dict = {}
-       if header_regex.search(s) <> -1:
-               h = header_regex.group(1)
-       else:
-               return dict
-
-       while regex.search('=', h) <> -1: 
-
-               if header_entry_regex.search (h) == -1:
+       m = re.search (r"""\\header\s*{([^}]*)}""", s)
 
 
-                       raise 'format error'
-
-               h = regsub.sub(header_entry_regex, '', h)
-               left = header_entry_regex.group(1)
-               right = header_entry_regex.group(2)
+       if m:
+                       s = m.group(1)
+       else:
+                       return dict
 
 
-               right = regsub.gsub('\([^\\]\)\"', '\\1', right)
-               right = regsub.gsub('^"', '', right)            
-               left = regsub.gsub('\([^\\]\)\"', '', left)
-               left = regsub.gsub('^"', '', left)
+       while s:
+               m = re.search (r"""\s*(\S+)\s*=\s*([^;]+)\s*;""", s)
+               if m == None:
+                       s = ''
+               else:
+                       s = s[m.end (0):]
+                       left  = m.group  (1)
+                       right = m.group (2)
 
 
-               dict[left] = right
+                       left = re.sub ('"', '', left)
+                       right = re.sub ('"', '', right)
+                       dict[left] = right
 
        return dict
 
        return dict
-   
-
-
 
 def help ():
 
 def help ():
-    sys.stdout.write ("Usage: " + name + " [options] INFILE OUTFILE\n"
-                + "Generate index for mutopia\n\n"
-                + "Options:\n"
-                + "  -h, --help             print this help\n"
-                + "  -p, --package=DIR      specify package\n"
-                + "  --prefix=PRE           specify prefix\n"
-                + "  -s, --subdirs=DIR      add subdir\n"
-                + "  --suffix=SUF           specify suffix\n"
-                     )
-    sys.exit (0)
-
+       sys.stdout.write (r"""Usage: mutopia-index [options] INFILE OUTFILE
+Generate index for mutopia\n
+Options:
+  -h, --help                        print this help
+  --prefix=PRE                  specify prefix
+  -s, --subdirs=DIR         add subdir
+  --suffix=SUF                  specify suffix"""
+                                         )
+       sys.exit (0)
+
+# ugh.
 def gen_list(inputs, subdir, filename):
 def gen_list(inputs, subdir, filename):
-    (pre, subdirs, post)=subdir
-    print "generating HTML list %s\n" % filename
-    list = open(filename, 'w')
-    list.write ('<html><TITLE>Rendered Examples</TITLE>\n')
-    list.write ('<body bgcolor=white>')
-    if subdirs:
-       list.write  ('<h2>subdirectories</h2>')
-       list.write  ('<ul>')    
-        for ex in subdirs:
-           print 'subdir %s ' % ex
-           list.write ('<li><a href=%s/index.html>Subdirectory: %s</a></li>\n' % (pre + ex + post , ex))
+       (pre, subdirs, post)=subdir
+       print "generating HTML list %s\n" % filename
+       list = open(filename, 'w')
+       list.write ('<html><TITLE>Rendered Examples</TITLE>\n')
+       list.write ('<body bgcolor=white>')
+       if subdirs:
+               list.write  ('<h2>subdirectories</h2>')
+               list.write  ('<ul>')                
+               for ex in subdirs:
+                       print 'subdir %s ' % ex
+                       list.write ('<li><a href=%s/index.html>Subdirectory: %s</a></li>\n' % (pre + ex + post , ex))
 
 
-       list.write ('</ul>')
+               list.write ('</ul>')
 
 
 
 
 
 
-    if inputs:
-           list.write('<h2>Contents of this directory</h2>\n');
+       if inputs:
+                       list.write('<h2>Contents of this directory</h2>\n');
 
 
-           list.write (headertext)
-    else:
-           list.write (headertext_nopics)
+                       list.write (headertext)
+       else:
+                       list.write (headertext_nopics)
 
 
 
 
-    for ex in inputs:
-       ex_ext = '.ly'
-       print '%s, ' % ex
-       try:
-           header = read_mudela_header(ex + ex_ext + '.txt')
-       except:
-           ex_ext = '.fly'
-           header = read_mudela_header(ex + ex_ext + '.txt')
-       
-       def read_dict(s, default, h =header):
+       for ex in inputs:
+               ex_ext = '.ly'
+               print '%s, ' % ex
                try:
                try:
-                   ret = h[s]
-               except KeyError:
-                   ret = default
-               return ret
-       head = read_dict('title', ex)
-       composer = read_dict('composer', '')
-       desc = read_dict('description', '')
-       list.write('<hr>')
-       list.write('<h1>example file: %s</h1>' % head);
-       if composer <> '':
-           list.write('<h2>%s</h2>\n' % composer)
-       if desc <> '':
-           list.write('%s<p>' % desc)
-       list.write ('<ul>')
-       def list_item(filename, desc, type, l = list):
-           if file_exist_b(filename):
-               l.write ('<li><a href=%s>%s</a>' % (filename, desc))
-               size=os.stat(filename)[stat.ST_SIZE]
-               l.write (' (%s %dk)' % (type, (size + 512) / 1024))
-               pictures = ['jpeg', 'png', 'xpm']
-               # silly, no?
-               if 0 and type in pictures:
-                   l.write (' <a href="http://www.gnu.org/philosophy/gif.html">no gifs due to patent problems</a>')
-               l.write ('\n')
-       list_item(ex + ex_ext + '.txt', 'The input', 'ASCII')
-       for pageno in range(1,100):
-           f  = ex + '-page%d.png' % pageno
-           if not file_exist_b (f):
-               break
-           list_item(f, 'The output, page %d' % pageno, 'png')
-       list_item(ex + '.ps.gz', 'The output', 'gzipped PostScript')
-       list_item(ex + '.midi', 'The output', 'MIDI')
-       list.write ("</ul>");
-
-    list.write( "</BODY></HTML>");
-    list.close()
+                       header = read_mudela_header(ex + ex_ext + '.txt')
+               except:
+                       ex_ext = '.fly'
+                       header = read_mudela_header(ex + ex_ext + '.txt')
+               
+               def read_dict(s, default, h =header):
+                               try:
+                                       ret = h[s]
+                               except KeyError:
+                                       ret = default
+                               return ret
+               head = read_dict('title', ex)
+               composer = read_dict('composer', '')
+               desc = read_dict('description', '')
+               list.write('<hr>')
+               list.write('<h1>example file: %s</h1>' % head);
+               if composer <> '':
+                       list.write('<h2>%s</h2>\n' % composer)
+               if desc <> '':
+                       list.write('%s<p>' % desc)
+               list.write ('<ul>')
+               def list_item(filename, desc, type, l = list):
+                       if file_exist_b(filename):
+                               l.write ('<li><a href=%s>%s</a>' % (filename, desc))
+                               size=os.stat(filename)[stat.ST_SIZE]
+                               l.write (' (%s %dk)' % (type, (size + 512) / 1024))
+                               pictures = ['jpeg', 'png', 'xpm']
+                               l.write ('\n')
+               list_item(ex + ex_ext + '.txt', 'The input', 'ASCII')
+               for pageno in range(1,100):
+                       f  = ex + '-page%d.png' % pageno
+                       if not file_exist_b (f):
+                               break
+                       list_item(f, 'The output, page %d' % pageno, 'png')
+               list_item(ex + '.ps.gz', 'The output', 'gzipped PostScript')
+               list_item(ex + '.midi', 'The output', 'MIDI')
+               list.write ("</ul>");
+
+       list.write( "</BODY></HTML>");
+       list.close()
 
 import getopt
 
 (options, files) = getopt.getopt(sys.argv[1:], 
 
 import getopt
 
 (options, files) = getopt.getopt(sys.argv[1:], 
-  'hp:s:', ['help', 'subdirs=', 'suffix=', 'package=', 'prefix='])
+  'hp:s:', ['help', 'subdirs=', 'suffix=',  'prefix='])
 subdir_pre=''
 subdir_suf =''
 
 subdirs =[]
 for opt in options:
 subdir_pre=''
 subdir_suf =''
 
 subdirs =[]
 for opt in options:
-    o = opt[0]
-    a = opt[1]
-    if o == '--subdirs' or o == '-s':
-       subdirs.append (a)
-    elif o == '--prefix':
-       subdir_pre = a
-    elif o == '-p' or o == '--package':
-       topdir = a
-    elif o == '--suffix':
-       subdir_suf = a
-
-    sys.path.append (topdir + '/stepmake/bin')
-    from packagepython import *
-    package = Package (topdir)
-    packager = Packager ()
-
-    from flower import *
-
-       
-# huh?
-allfiles = multiple_find (['*.*ly.txt'], '.')
+       o = opt[0]
+       a = opt[1]
+       if o == '--subdirs' or o == '-s':
+               subdirs.append (a)
+       elif o == '--prefix':
+               subdir_pre = a
+       elif o == '--suffix':
+               subdir_suf = a
+
+               
+allfiles = find.find ('*.ly') + find.find ('*.ly.txt')
 
 gen_list (files, (subdir_pre, subdirs, subdir_suf), 'index.html')
 
 
 gen_list (files, (subdir_pre, subdirs, subdir_suf), 'index.html')