import sys
import os
import string
-
-def gulp_file (fn):
- f = open (fn)
- return f.read ()
-
import __main__
import glob
-
import re
format_names = {'ps.gz': 'Compressed PostScript',
- 'html' : 'HTML'
- }
+ 'html' : 'HTML'
+ }
+
+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 empty file: %s\n" % f)
+ i.close ()
+ return s
class Latex_head:
def __init__ (self):
- self.author = ''
- self.title = ''
- self.date = ''
- self.format = ''
-
+ self.author = ''
+ self.title = ''
+ self.date = ''
+ self.format = ''
+
def read_latex_header (s):
header = Latex_head()
m = re.search(r'\\author{([^}]+)}', s)
if m:
- header.author = m.group (1)
+ header.author = m.group (1)
m = re.search (r'\\title{([^}]+)}',s )
if m:
- header.title = m.group (1)
+ header.title = m.group (1)
header.formats = ['ps.gz']
return header
def read_bib_header (s):
-
m = re.search ('% *AUTHOR *= *(.*)\n',s)
header = Latex_head()
if m:
- header.author = m.group (1)
+ header.author = m.group (1)
m = re.search ('% *TITLE *= *(.*)\n',s )
if m:
- header.title = m.group (1)
+ header.title = m.group (1)
header.formats = ['html']
return header
i = re.search( '[^\n \t]', s)
s = s[i:]
i = re.search( '\n\n', s)
- s = s[i+2:]
+ s = s[i+2:]
i = re.search( '\n\n', s)
header.title = s[:i]
+ header.formats = ['html']
return header
def read_texinfo_header (s):
header = Latex_head ()
- m = re.search( '@settitle (.*$)', s)
+ m = re.search( '@settitle (.*)\n', s)
if m:
- header.title = m.group (1)
-
+ header.title = m.group (1)
+ m = re.search( '@author (.*)\n', s)
+ if m:
+ header.author = m.group (1)
+
header.formats = ['html', 'ps.gz']
return header
+# urg
+# should make a 'next_parens '
+yo_article_re = re.compile ('article(\\([^)]*\\))[ \t\n]*(\\([^)]*\\))')
+yo_report_re = re.compile ('report(\\([^)]*\\))[\t\n ]*(\\([^)]*\\))')
+yo_sect_re = re.compile ('sect(\\([^)]*\\))')
+yo_chapter_re = re.compile ('chapter(\\([^)]*\\))')
+
+def read_yodl_header (s):
+ header = Latex_head ()
+ report = yo_report_re.search (s)
+ article = 0
+ sect = 0
+ chapter = 0
+ if report:
+ header.author = report.group (2)
+ header.title = yo_report_re.group (1)
+ else:
+ article = yo_article_re.search (s)
+ if article:
+ header.author = article.group (2)
+ header.title = article.group (1)
+ else:
+ chapter = yo_chapter_re.search (s)
+ if chapter:
+ header.title = chapter.group (1)
+ else:
+ sect = yo_sect_re.search (s)
+ if sect:
+ header.title = sect.group (1)
+
+ header.formats = ['html']
+ return header
def print_html_head (l,o,h):
pre =o
-
fn = pre + h.basename
t = h.filename
if h.title :
- t = t + ': '+ h.title
+ t = t + ': '+ h.title
l.write ('<li>%s </a>' % t)
if h.author:
- l.write ('<p>by %s</p>' % h.author)
+ l.write ('<p>by %s</p>' % h.author)
for f in h.formats:
- l.write ('(<a href=%s.%s>%s</a>)' % (fn, f, format_names [f]))
+ l.write ('(<a href=%s.%s>%s</a>)' % (fn, f, format_names [f]))
l.write ('</li>\n')
def help ():
- sys.stdout.write ("Usage: ls-latex [OPTION]... FILE...\n"
- "Generate html index file for FILE...\n\n"
- + "Options:\n"
- + " -h, --help print this help\n"
- )
+ sys.stdout.write (r"""Usage: ls-latex [OPTIONS]... FILE...
+Generate html index file for FILE...
+
+Options:
+-h, --help print this help
+""")
sys.exit (0)
import getopt
o = opt[0]
a = opt[1]
if o == '--prefix':
- pre = a
+ pre = a
elif o == '--title':
- title = a
+ title = a
elif o == '-h' or o == '--help':
- help ()
+ help ()
l = sys.stdout
'latex' : read_latex_header,
'tely' : read_texinfo_header,
'texi': read_texinfo_header,
-}
+ 'yo': read_yodl_header,
+}
for x in files:
m = re.search ('\\.([^.]*)$', x)
if m == None:
- continue
+ continue
s = gulp_file (x)
head = read_header_funcs [m.group(1)] (s)