3 # name isn't really appropriate now ...
20 latex_author_re = regex.compile(r'\\author{\([^}]+\)}')
21 latex_title_re = regex.compile(r'\\title{\([^}]+\)}')
31 def read_latex_header (fn):
33 i = regex.search( '\\\\begin{document}', s)
36 sys.stderr.write( 'Huh? empty file?')
37 s = '\\author{(unknown)}\\title{(unknown)}'
40 s = regsub.gsub('%.*$', '', s)
41 s = regsub.gsub('\n', ' ', s)
46 if latex_author_re.search (s) == -1 :
47 sys.stderr.write( 'huh? No author?')
48 header.author = 'unknown'
50 header.author = latex_author_re.group (1)
51 if latex_title_re.search (s) == -1:
52 sys.stderr.write( 'huh? No title?')
53 header.title = 'unknown'
55 header.title = latex_title_re.group (1)
57 header.outfile = regsub.gsub ('\.latex$', '.ps.gz', header.outfile)
58 header.outfile = regsub.gsub ('\.tex$', '.ps.gz', header.outfile)
59 header.outfile = regsub.gsub ('\.doc$', '.ps.gz', header.outfile)
60 header.format = 'gzipped postscript'
64 bib_author_re = regex.compile('% *AUTHOR *= *\(.*\)$')
65 bib_title_re = regex.compile('% *TITLE *= *\(.*\)$')
69 if bib_author_re.search (s) == -1 :
70 sys.stderr.write ('gulped file: ' + fn + '\n')
75 header.author = bib_author_re.group (1)
76 if bib_title_re.search (s) == -1:
77 sys.stderr.write ('gulped file: ' + fn + '\n')
79 header.title = bib_title_re.group (1)
80 header.outfile = regsub.gsub ( '\.bib$', '.html' , fn)
81 header.format = 'HTML'
85 def read_pod_header (fn):
86 header = Latex_head ()
88 i = regex.search( '[^\n \t]', s)
90 i = regex.search( '\n\n', s)
93 sys.stderr.write ('gulped file: ' + fn + '\n')
95 i = regex.search( '\n\n', s)
98 header.outfile = regsub.gsub ('\.pod$', '.html', fn)
101 def read_texinfo_header (fn):
102 header = Latex_head ()
104 i = regex.search( '@node ', s)
106 i = regex.search( ',', s)
108 sys.stderr.write ('gulped file: ' + fn + '\n')
112 header.outfile = regsub.gsub ('\.texinfo$', '.html', fn)
113 header.format = 'HTML'
116 def read_tely_header (fn):
117 header = Latex_head ()
119 i = regex.search( '@settitle', s)
121 i = regex.search( '\n', s)
123 sys.stderr.write ('gulped file: ' + fn + '\n')
127 header.outfile = regsub.gsub ('\.tely', '.html', fn)
128 header.format = 'HTML'
132 # should make a 'next_parens'
133 yo_article_re = regex.compile('article(\\([^)]*\\))[ \t\n]*(\\([^)]*\\))')
134 yo_report_re = regex.compile('report(\\([^)]*\\))[\t\n ]*(\\([^)]*\\))')
135 yo_sect_re = regex.compile('sect(\\([^)]*\\))')
136 yo_chap_re = regex.compile('sect(\\([^)]*\\))')
138 def read_yo_header (fn):
139 header = Latex_head ()
143 elif yo_report_re.search (s) <> -1:
144 header.author = yo_report_re.group(2)
145 header.title = yo_report_re.group(1)
146 elif yo_article_re.search (s) <> -1:
147 header.author = yo_article_re.group(2)
148 header.title = yo_article_re.group(1)
149 elif yo_chap_re.search (s) <> -1:
150 header.title = yo_chap_re.group (1)
151 elif yo_sect_re.search (s) <> -1:
152 header.title = yo_sect_re.group (1)
154 header.outfile = regsub.gsub ('\.yo$', '.html', fn)
155 header.format = 'HTML'
158 def print_html_head (l,o,h):
161 l.write ('<li><a href=%s>%s (%s)</a>' % (pre + h.outfile, h.title, h.format ))
163 l.write ('<p>by %s</p>' % h.author)
167 sys.stdout.write ("Usage: ls-latex [OPTION]... FILE...\n"
168 "Generate html index file for FILE...\n\n"
170 + " -h, --help print this help\n"
171 + " -p, --package=DIR specify package\n"
177 (options, files) = getopt.getopt(sys.argv[1:],
178 'e:hp:', ['help', 'prefix=', 'package=', 'title='])
191 elif o == '-h' or o == '--help':
193 elif o == '-p' or o == '--package':
196 sys.path.append (topdir + '/stepmake/bin')
197 from packagepython import *
198 package = Package (topdir)
199 packager = Packager ()
203 l.write ('<html><title>%s</title><h1> %s</h1><ul>\n' % (title, title))
207 if regex.search ('\\.bib$', x) <> -1:
208 head = bib_header (x)
209 elif regex.search ('\\.pod$', x) <> -1:
210 head = read_pod_header (x)
211 elif regex.search ('\\.texinfo$', x) <> -1:
212 head = read_texinfo_header (x)
213 elif regex.search ('\\.tely$', x) <> -1:
214 head = read_tely_header (x)
215 elif regex.search ('\\.yo$', x) <> -1:
216 head = read_yo_header (x)
218 head = read_latex_header (x)
220 head.title = head.filename
221 print_html_head (l, pre, head)
223 l.write ('</ul></html>')