]> git.donarmstrong.com Git - lilypond.git/blobdiff - stepmake/bin/ls-latex.py
release: 1.2.6
[lilypond.git] / stepmake / bin / ls-latex.py
index 124317898c8827f2c7b30423bc501faf458aeb87..a2bbda225b29309134c6ddba1f25ece1a610448b 100644 (file)
@@ -1,8 +1,6 @@
 #!@PYTHON@
 
-# FIXME: 
-#  name isn't really appropriate now ...
-#  see mudela-book: cater for different formats in uniform way
+# name isn't really appropriate now ...
 
 name = 'ls-latex'
 version = '0.1'
@@ -11,27 +9,14 @@ import sys
 import os
 import string
 
-def gulp_file(f):
-       try:
-               i = open(f)
-               i.seek (0, 2)
-               n = i.tell ()
-               i.seek (0,0)
-       except:
-               sys.stderr.write ("can't open file: %s\n" % f)
-               return ''
-       s = i.read (n)
-       if len (s) <= 0:
-               sys.stderr.write ("gulped emty file: %s\n" % f)
-       i.close ()
-       return s
+def gulp_file (fn):
+       f = open (fn)
+       return f.read ()
 
 import __main__
 import glob
-import regex
 
-latex_author_re = regex.compile(r'\\author{\([^}]+\)}')
-latex_title_re = regex.compile(r'\\title{\([^}]+\)}')
+import re
 
 class Latex_head:
     def __init__ (self):
@@ -43,54 +28,40 @@ class Latex_head:
        
 def read_latex_header (fn):
     s = gulp_file (fn)
-    i = regex.search( '\\\\begin{document}', s)
-
-    if i < 0:
-       sys.stderr.write ("ls-latex: no \\begin{document} in %s\n" % fn)
-       s = "\\author{(unknown)}\\title{(file: %s)}" % fn
-       
-    s = s[:i]
-    s = regsub.gsub('%.*$', '', s)
-    s = regsub.gsub('\n', ' ', s)
-
     header = Latex_head()
-    header.filename= fn;
+    m = re.search(r'\\author{([^}]+)}', s)
+    if m:
+       header.author = m.group (1)
 
-    if latex_author_re.search (s) == -1 :
-       sys.stderr.write ("ls-latex: can't find author in %s\n" % fn)
-       header.author = 'unknown'
-    else:
-        header.author = latex_author_re.group (1)
-    if latex_title_re.search (s) == -1:
-       sys.stderr.write ("ls-latex: can't find title in %s\n" % fn)
-       header.title = "(file: %s)" % fn
+    m = re.search (r'\\title{([^}]+)}',s )
+    if m:
+       header.title = m.group (1)
     else:
-       header.title = latex_title_re.group (1)
+       header.title = 'No title'
+
     header.outfile = fn
-    header.outfile = regsub.gsub ('\.latex$', '.ps.gz', header.outfile)
-    header.outfile = regsub.gsub ('\.tex$', '.ps.gz', header.outfile)
-    header.outfile = regsub.gsub ('\.doc$', '.ps.gz', header.outfile)
+    header.outfile = re.sub ('\.latex$', '.ps.gz', header.outfile)
+    header.outfile = re.sub ('\.tex$', '.ps.gz', header.outfile)
+    header.outfile = re.sub ('\.doc$', '.ps.gz', header.outfile)
     header.format = 'gzipped postscript'
     return  header
 
 
-bib_author_re = regex.compile('% *AUTHOR *= *\(.*\)$')
-bib_title_re = regex.compile('% *TITLE *= *\(.*\)$')
-
 def bib_header (fn):
     s = gulp_file (fn)
-    if bib_author_re.search (s) == -1 :
-       sys.stderr.write ('gulped file: ' + fn + '\n')
-       raise 'huh?'
+    m = re.search ('% *AUTHOR *= *(.*)$',s)
+    header = Latex_head()    
+    if m:
+       header.author = m.group (1)
 
-    header = Latex_head()
-    header.filename= fn;
-    header.author = bib_author_re.group (1)
-    if bib_title_re.search (s) == -1:
-       sys.stderr.write ('gulped file: ' + fn + '\n')
-       raise 'huh?'    
-    header.title = bib_title_re.group (1)
-    header.outfile = regsub.gsub ( '\.bib$', '.html' , fn)
+
+    m = re.search ('% *TITLE *= *(.*)$',s )
+    if m:
+       header.title = m.group (1)
+    else:
+       header.title = '(bibliography without title)'
+
+    header.outfile = re.sub ( '\.bib$', '.html' , fn)
     header.format = 'HTML'    
     return header
 
@@ -98,96 +69,41 @@ def bib_header (fn):
 def read_pod_header (fn):
     header = Latex_head ()
     s = gulp_file (fn)
-    i = regex.search( '[^\n \t]', s)
+    i = re.search( '[^\n \t]', s)
     s = s[i:]
-    i = regex.search( '\n\n', s)
+    i = re.search( '\n\n', s)
     s = s[i+2:]    
     if i < 0:
        sys.stderr.write ('gulped file: ' + fn + '\n')
        raise 'huh?'
-    i = regex.search( '\n\n', s)
+    i = re.search( '\n\n', s)
     header.title = s[:i]
     header.filename = fn
-    header.outfile = regsub.gsub ('\.pod$', '.html', fn)
+    header.outfile = re.sub ('\.pod$', '.html', fn)
     return  header
 
-texinfo_author_re = regex.compile(r'^@author  *\(.*\) *$')
-texinfo_title_re = regex.compile(r'^@title  *\(.*\) *$')
-
 def read_texinfo_header (fn):
     header = Latex_head ()
     s = gulp_file (fn)
-    if texinfo_author_re.search (s) == -1 :
-       sys.stderr.write ("ls-latex: can't find author in %s\n" % fn)
-       header.author = 'unknown'
-    else:
-        header.author = texinfo_author_re.group (1)
-    if texinfo_title_re.search (s) == -1:
-       sys.stderr.write ("ls-latex: can't find title in %s\n" % fn)
-       header.title = "(file: %s)" % fn
-    i = regex.search( '@node ', s)
-    s = s[i+5:]
-    i = regex.search( ',', s)
-    if i < 0:
-       sys.stderr.write ('gulped file: ' + fn + '\n')
-       raise 'huh?'
-    if not header.title:
-       header.title = s[:i]
+    m = re.search( '@settitle (.*$)', s)
+    if m:
+       header.title = m.group (1)
     header.filename = fn
-    header.outfile = regsub.gsub ('\.texinfo$', '.html', fn)
+    header.outfile = re.sub ('\.tely', '.html', fn)
     header.format = 'HTML'
-    return  header
+    return header
 
 def read_tely_header (fn):
     header = Latex_head ()
     s = gulp_file (fn)
-    if texinfo_author_re.search (s) == -1 :
-       sys.stderr.write ("ls-latex: can't find author in %s\n" % fn)
-       header.author = 'unknown'
-    else:
-        header.author = texinfo_author_re.group (1)
-    if texinfo_title_re.search (s) == -1:
-       sys.stderr.write ("ls-latex: can't find title in %s\n" % fn)
-       header.title = "(file: %s)" % fn
-    i = regex.search( '@settitle', s)
-    s = s[i+10:]
-    i = regex.search( '\n', s)
-    if i < 0:
-       sys.stderr.write ('gulped file: ' + fn + '\n')
-       raise 'huh?'
-    if not header.title:
-       header.title = s[:i]
+    m = re.search( '@settitle (.*$)', s)
+    if m:
+       header.title = m.group (1)
     header.filename = fn
-    header.outfile = regsub.gsub ('\.tely', '.html', fn)
+    header.outfile = re.sub ('\.tely', '.html', fn)
     header.format = 'HTML'
-    return  header
-
-# urg
-# should make a 'next_parens'
-yo_article_re = regex.compile('article(\\([^)]*\\))[ \t\n]*(\\([^)]*\\))')
-yo_report_re = regex.compile('report(\\([^)]*\\))[\t\n ]*(\\([^)]*\\))')
-yo_sect_re  =  regex.compile('sect(\\([^)]*\\))')
-yo_chap_re  =  regex.compile('sect(\\([^)]*\\))')
+    return header
 
-def read_yo_header (fn):
-    header = Latex_head ()
-    s = gulp_file (fn)
-    if 0:
-           pass
-    elif yo_report_re.search (s) <> -1:
-           header.author = yo_report_re.group(2)
-           header.title = yo_report_re.group(1)
-    elif yo_article_re.search (s) <> -1:
-           header.author = yo_article_re.group(2)
-           header.title = yo_article_re.group(1)
-    elif yo_chap_re.search (s) <> -1:
-           header.title = yo_chap_re.group (1)
-    elif yo_sect_re.search (s) <> -1:
-           header.title = yo_sect_re.group (1)
-    header.filename = fn
-    header.outfile = regsub.gsub ('\.yo$', '.html', fn)
-    header.format = 'HTML'
-    return  header
 
 def print_html_head (l,o,h):
     pre =o
@@ -202,14 +118,13 @@ def help ():
                 "Generate html index file for FILE...\n\n"
                 + "Options:\n"
                 + "  -h, --help             print this help\n"
-                + "  -p, --package=DIR      specify package\n"
                      )
     sys.exit (0)
 
 import getopt
 
 (options, files) = getopt.getopt(sys.argv[1:], 
-    'e:hp:', ['help', 'prefix=', 'package=', 'title='])
+    'e:h', ['help', 'prefix=',  'title='])
 
 tex = ''
 output =''
@@ -224,13 +139,7 @@ for opt in options:
        title = a  
     elif o == '-h' or o == '--help':
        help ()
-    elif o == '-p' or o == '--package':
-       topdir = a
 
-sys.path.append (topdir + '/stepmake/bin')
-from packagepython import *
-package = Package (topdir)
-packager = Packager ()
 
 l = sys.stdout
 
@@ -238,16 +147,14 @@ l.write ('<html><title>%s</title><h1> %s</h1><ul>\n' % (title, title))
 
 
 for x in files:
-    if regex.search ('\\.bib$', x) <> -1:
+    if re.search ('\\.bib$', x) :
        head = bib_header (x)
-    elif regex.search ('\\.pod$', x) <> -1:
+    elif re.search ('\\.pod$', x) :
        head = read_pod_header (x)
-    elif regex.search ('\\.texinfo$', x) <> -1:
+    elif re.search ('\\.texinfo$', x) :
        head = read_texinfo_header (x)
-    elif regex.search ('\\.tely$', x) <> -1:
+    elif re.search ('\\.tely$', x):
        head = read_tely_header (x)
-    elif regex.search ('\\.yo$', x) <> -1:
-       head = read_yo_header (x)
     else:
        head = read_latex_header (x)
     if head.title == '':