#!/usr/bin/env python
import string
class htmlthing:
'''handle writing out a simple formatted html file'''
def __init__(self,filename):
self.filename = filename
self.title = ""
self.starts = { 'pre': "
", 'normal': "\n", 'h1': "\n
", 'h2': "" }
self.ends = { 'pre' : "
\n", 'normal': "\n", 'h1': "\n", 'h2': "\n" }
self.state = 'none'
def set_title(self, title):
self.title = title
def open(self):
self.file = open(self.filename, 'w')
self.write_header()
def close(self):
self.write_footer()
self.file.close()
def write_header(self):
self.file.write("\n\n")
if self.title:
self.file.write("" + self.title + "\n")
self.file.write("\n")
self.file.write("\n\n")
def write_footer(self):
self.file.write("\n\n\n")
def close_group(self):
if self.state != 'none':
self.file.write(self.ends[self.state])
self.state = 'none'
def set_state(self, state):
if self.state != state:
self.close_group()
self.file.write(self.starts[state])
self.state = state
def write(self, line):
self.file.write(line)
spec = open('spec.py', 'r')
html = htmlthing('spec.html')
html.open()
blank_count = 0;
while True:
line = spec.readline()
if line == '': break
if line == '\n':
html.close_group()
blank_count += 1
else:
if line[:1] == '#':
if line[:4] == '# ':
html.set_state('pre')
elif line[:3] == '##_':
html.set_state('h1')
line = line[:1] + line[3:-1]
elif blank_count > 1:
html.set_state('h2')
line = string.strip(line)
else:
html.set_state('normal')
html.write(line[1:])
else:
html.set_state('pre')
html.write(line)
blank_count = 0
html.close()
spec.close()