#!@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
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)
elif tags[0] == 'char':
name = tags[9]
- name = re.sub ('-', 'M', name)
if group:
name = group + '.' + name
m = {
-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
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',
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
-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)
'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 = '.'
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':
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'
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',
- base + '.pfb', texfile_nm])
+ open (depfile_nm, 'wb').write (get_deps (deps,
+ [base + '.log', base + '.dvi', base + '.pfa',
+ depfile_nm,
+ base + '.pfb']))