diff options
Diffstat (limited to 'scripts/tohtml.py')
-rw-r--r-- | scripts/tohtml.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/scripts/tohtml.py b/scripts/tohtml.py new file mode 100644 index 00000000..6ad22ecd --- /dev/null +++ b/scripts/tohtml.py @@ -0,0 +1,66 @@ +import sys, os, re + +HEADER="""<head> +<style> +body { background-color:#fffff0; color:black; margin:16pt; } +a { text-decoration:none; color:darkblue; } +a.line { position:relative; padding-top:300px; } +.comment { color:green; font-style:italic; } +.comment a { color:darkgreen; } +</style> +</head> +<body><pre><pre>""" + +FOOTER="""</pre></body>""" + +prefixes = [ 'fz_', 'pdf_', 'xps_', 'cbz_', 'pdfapp_' ] + +def is_public(s): + for prefix in prefixes: + if s.startswith(prefix): + return True + return False + +def load_tags(): + tags = {} + for line in open("tags-xref").readlines(): + ident, type, line, file, text = line.split(None, 4) + if not is_public(ident): + continue + if type == 'function': + tags[ident] = '<a class="function" href="%s#%s">%s</a>' % (os.path.basename(file), line, ident) + if type == 'typedef' or type == 'struct': + tags[ident] = '<a class="typedef" href="%s#%s">%s</a>' % (os.path.basename(file), line, ident) + return tags + +tags = load_tags() + +def quote(s): + return s.replace('&','&').replace('<','<').replace('>','>') + +print HEADER + +N = 1 +for line in sys.stdin.readlines(): + # expand tabs, html-quote special characters and colorize comments + line = line.replace('\t', ' ').rstrip() + line = quote(line) + line = line.replace("/*", '<span class="comment">/*') + line = line.replace("*/", '*/</span>') + + line = re.sub('^#include "([a-z-]*\.h)"', '#include "<a href="\\1">\\1</a>"', line) + + # find identifiers and hyperlink to their definitions + words = re.split("(\W+)", line) + line = "" + for word in words: + if word in tags: + word = tags[word] + line += word + + #print('<a class="line" name="%d">%4d</a> %s' % (N, N, line)) + print('<a class="line" name="%d"></a>%s' % (N, line)) + + N = N + 1 + +print FOOTER |