]> git.donarmstrong.com Git - lilypond.git/blobdiff - buildscripts/mf-to-table.py
Spanish pitches sectioning fix
[lilypond.git] / buildscripts / mf-to-table.py
index c94d402e79876c0cd48489ab6b9af2d482ddb3b5..f6629328ce3c6ff712cb0b267b2ecdb401d79ae8 100644 (file)
@@ -1,10 +1,10 @@
 #!@PYTHON@
 
-# mf-to-table.py -- convert spacing info in MF logs . and .tex
+# mf-to-table.py -- convert spacing info in MF logs . 
 #
 # source file of the GNU LilyPond music typesetter
 #
-# (c) 1997--2006 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+# (c) 1997--2007 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
 import os
 import sys
@@ -28,7 +28,7 @@ def read_log_file (fn):
         a.append (match.group (1))
         return ''
 
-    str = re.sub ('\(([a-zA-Z_0-9-]+\.mf)', include_func, str)
+    str = re.sub ('\\(([/a-z.A-Z_0-9-]+\\.mf)', include_func, str)
     str = re.sub ('@{(.*?)@}', auto_func, str)
 
     return (autolines, deps)
@@ -58,7 +58,6 @@ def parse_logfile (fn):
         elif tags[0] == 'char':
             name = tags[9]
 
-            name = re.sub ('-', 'M', name)
             if group:
                 name = group + '.' + name
             m = {
@@ -107,20 +106,9 @@ def parse_logfile (fn):
 
 
 
-def write_tex_defs (file, global_info, charmetrics):
-    nm = font_family
-    for m in charmetrics:
-        
-        texname = re.sub ('[_.]', 'X',  m['name'])
-        def digit_to_letter (match):
-            return chr (ord (match.group(1)) - ord ('0') + ord ('A'))
-        texname = re.sub ('([0-9])', digit_to_letter, texname)
-        file.write (r'''\gdef\%s%s{\char%d}%%%s''' % \
-              (nm, texname, m['code'],'\n'))
-    file.write ('\\endinput\n')
 
 
-def write_character_lisp_table (file, global_info, charmetrics):
+def character_lisp_table (global_info, charmetrics):
 
     def conv_char_metric (charmetric):
         f = 1.0
@@ -141,11 +129,14 @@ def write_character_lisp_table (file, global_info, charmetrics):
 
         return s
 
+    s = ''
     for c in charmetrics:
-        file.write (conv_char_metric (c))
+        s += conv_char_metric (c)
+
+    return s
 
 
-def write_global_lisp_table (file, global_info):
+def global_lisp_table (global_info):
     str = ''
 
     keys = ['staffsize', 'stafflinethickness', 'staff_space',
@@ -157,29 +148,31 @@ def write_global_lisp_table (file, global_info):
         if global_info.has_key (k):
             str = str + "(%s . %s)\n" % (k,global_info[k])
 
-    file.write (str)
+    return str
 
     
-def write_ps_encoding (name, file, global_info, charmetrics):
+def ps_encoding (name, global_info, charmetrics):
     encs = ['.notdef'] * 256
     for m in charmetrics:
         encs[m['code']] = m['name']
 
-    file.write ('/%s [\n' % name)
-    for m in range (0, 256):
-        file.write ('  /%s %% %d\n' % (encs[m], m))
-    file.write ('] def\n')
 
+    s =  ('/%s [\n' % name)
+    for m in range (0, 256):
+        s += ('  /%s %% %d\n' % (encs[m], m))
+    s +=  ('] def\n')
+    return s
 
-def write_deps (file, deps, targets):
+def get_deps (deps, targets):
+    s = ''
     for t in targets:
         t = re.sub ( '^\\./', '', t)
-        file.write ('%s '% t)
-    file.write (": ")
+        s += ('%s '% t)
+    s += (": ")
     for d in deps:
-        file.write ('%s ' % d)
-    file.write ('\n')
-
+        s += ('%s ' % d)
+    s += ('\n')
+    return s
 
 def help ():
     sys.stdout.write(r"""Usage: mf-to-table [OPTIONS] LOGFILEs
@@ -192,7 +185,6 @@ Options:
  -l, --ly=FILE          name output table
  -o, --outdir=DIR       prefix for dependency info
  -p, --package=DIR      specify package
- -t, --tex=FILE         name output tex chardefs
 
  """)
     sys.exit (0)
@@ -203,12 +195,11 @@ Options:
         'a:d:ho:p:t:',
         ['enc=',  'outdir=', 'dep=', 'lisp=',
          'global-lisp=',
-         'tex=', 'debug', 'help', 'package='])
+         'debug', 'help', 'package='])
 
 global_lisp_nm = ''
 char_lisp_nm = ''
 enc_nm = ''
-texfile_nm = ''
 depfile_nm = ''
 lyfile_nm = ''
 outdir_prefix = '.'
@@ -220,8 +211,6 @@ for opt in options:
         depfile_nm = a
     elif o == '--outdir' or o == '-o':
         outdir_prefix = a
-    elif o == '--tex' or o == '-t':
-        texfile_nm = a
     elif o == '--lisp': 
         char_lisp_nm = a
     elif o == '--global-lisp': 
@@ -236,12 +225,11 @@ for opt in options:
         print o
         raise getopt.error
 
-base = re.sub ('.tex$', '', texfile_nm)
+base = os.path.splitext (lyfile_nm)[0]
 
 for filenm in files:
     (g, m, deps) = parse_logfile (filenm)
 
-    write_tex_defs (open (texfile_nm, 'w'), g, m)
     enc_name = 'FetaEncoding'
     if re.search ('parmesan', filenm):
         enc_name = 'ParmesanEncoding'
@@ -250,11 +238,11 @@ for filenm in files:
     elif re.search ('feta-alphabet', filenm):
         enc_name = 'FetaAlphabetEncoding';
 
-    write_ps_encoding (enc_name, open (enc_nm, 'w'), g, m)
-    write_character_lisp_table (open (char_lisp_nm, 'w'), g, m)  
-    write_global_lisp_table (open (global_lisp_nm, 'w'), g)  
+    open (enc_nm, 'w').write (ps_encoding (enc_name, g, m))
+    open (char_lisp_nm, 'w').write (character_lisp_table (g, m))
+    open (global_lisp_nm, 'w').write (global_lisp_table (g))
     if depfile_nm:
-        write_deps (open (depfile_nm, 'wb'), deps,
-              [base + '.log', base + '.dvi', base + '.pfa',
-               depfile_nm,
-               base + '.pfb', texfile_nm])
+        open (depfile_nm, 'wb').write (get_deps (deps,
+                                                 [base + '.log', base + '.dvi', base + '.pfa',
+                                                  depfile_nm,
+                                                  base + '.pfb']))