3 # name isn't really appropriate now ...
16 latex_author_re = regex.compile(r'\\author{\([^}]+\)}')
17 latex_title_re = regex.compile(r'\\title{\([^}]+\)}')
27 def read_latex_header (fn):
29 i = regex.search( '\\\\begin{document}', s)
32 sys.stderr.write( 'Huh? empty file?')
33 s = '\\author{(unknown)}\\title{(unknown)}'
36 s = regsub.gsub('%.*$', '', s)
37 s = regsub.gsub('\n', ' ', s)
42 if latex_author_re.search (s) == -1 :
43 sys.stderr.write( 'huh? No author?')
44 header.author = 'unknown'
46 header.author = latex_author_re.group (1)
47 if latex_title_re.search (s) == -1:
48 sys.stderr.write( 'huh? No title?')
49 header.title = 'unknown'
51 header.title = latex_title_re.group (1)
53 header.outfile = regsub.gsub ('\.latex$', '.ps.gz', header.outfile)
54 header.outfile = regsub.gsub ('\.tex$', '.ps.gz', header.outfile)
55 header.outfile = regsub.gsub ('\.doc$', '.ps.gz', header.outfile)
56 header.format = 'gzipped postscript'
60 bib_author_re = regex.compile('% *AUTHOR *= *\(.*\)$')
61 bib_title_re = regex.compile('% *TITLE *= *\(.*\)$')
65 if bib_author_re.search (s) == -1 :
66 sys.stderr.write ('gulped file: ' + fn + '\n')
71 header.author = bib_author_re.group (1)
72 if bib_title_re.search (s) == -1:
73 sys.stderr.write ('gulped file: ' + fn + '\n')
75 header.title = bib_title_re.group (1)
76 header.outfile = regsub.gsub ( '\.bib$', '.html' , fn)
77 header.format = 'HTML'
81 def read_pod_header (fn):
82 header = Latex_head ()
84 i = regex.search( '[^\n \t]', s)
86 i = regex.search( '\n\n', s)
89 sys.stderr.write ('gulped file: ' + fn + '\n')
91 i = regex.search( '\n\n', s)
94 header.outfile = regsub.gsub ('\.pod$', '.html', fn)
97 def read_texinfo_header (fn):
98 header = Latex_head ()
100 i = regex.search( '@node ', s)
102 i = regex.search( ',', s)
104 sys.stderr.write ('gulped file: ' + fn + '\n')
108 header.outfile = regsub.gsub ('\.texinfo$', '.html', fn)
109 header.format = 'HTML'
113 # should make a 'next_parens'
114 yo_article_re = regex.compile('article(\\([^)]*\\))[ \t\n]*(\\([^)]*\\))')
115 yo_report_re = regex.compile('report(\\([^)]*\\))[\t\n ]*(\\([^)]*\\))')
116 yo_sect_re = regex.compile('sect(\\([^)]*\\))')
117 yo_chap_re = regex.compile('sect(\\([^)]*\\))')
119 def read_yo_header (fn):
120 header = Latex_head ()
124 elif yo_report_re.search (s) <> -1:
125 header.author = yo_report_re.group(2)
126 header.title = yo_report_re.group(1)
127 elif yo_article_re.search (s) <> -1:
128 header.author = yo_article_re.group(2)
129 header.title = yo_article_re.group(1)
130 elif yo_chap_re.search (s) <> -1:
131 header.title = yo_chap_re.group (1)
132 elif yo_sect_re.search (s) <> -1:
133 header.title = yo_sect_re.group (1)
135 header.outfile = regsub.gsub ('\.yo$', '.html', fn)
136 header.format = 'HTML'
140 def print_html_head (l,o,h):
143 l.write ('<li><a href=%s>%s (%s)</a>' % (pre + h.outfile, h.title, h.format ))
145 l.write ('<p>by %s</p>' % h.author)
149 sys.stdout.write ("Usage: ls-latex [OPTION]... FILE...\n"
150 "Generate html index file for FILE...\n\n"
152 + " -h, --help print this help\n"
153 + " -p, --package=DIR specify package\n"
159 (options, files) = getopt.getopt(sys.argv[1:],
160 'e:hp:', ['help', 'prefix=', 'package=', 'title='])
173 elif o == '-h' or o == '--help':
175 elif o == '-p' or o == '--package':
178 sys.path.append (topdir + '/stepmake/bin')
179 from packagepython import *
180 package = Package (topdir)
181 packager = Packager ()
185 l.write ('<html><title>%s</title><h1> %s</h1><ul>\n' % (title, title))
189 if regex.search ('\\.bib$', x) <> -1:
190 head = bib_header (x)
191 elif regex.search ('\\.pod$', x) <> -1:
192 head = read_pod_header (x)
193 elif regex.search ('\\.texinfo$', x) <> -1:
194 head = read_texinfo_header (x)
195 elif regex.search ('\\.yo$', x) <> -1:
196 head = read_yo_header (x)
198 head = read_latex_header (x)
200 head.title = head.filename
201 print_html_head (l, pre, head)
203 l.write ('</ul></html>')