27 |
def __init__(self, **attrs): |
def __init__(self, **attrs): |
28 |
for (k,v) in attrs.items(): setattr(self, k, v) |
for (k,v) in attrs.items(): setattr(self, k, v) |
29 |
|
|
30 |
|
fails = 'XXX\n' |
31 |
pegroot = 'doc/pegboard' |
pegroot = 'doc/pegboard' |
32 |
css = '../gzz.css' |
css = '../gzz.css' |
33 |
|
replace = '<p>INSERT_PEGBOARD</p>\n' |
34 |
|
|
35 |
pegdirs = [d for d in os.listdir(pegroot+'/') if os.path.isdir(pegroot+'/'+d)] |
pegdirs = [d for d in os.listdir(pegroot+'/') |
36 |
|
if os.path.isdir(pegroot+'/'+d) and d != 'CVS'] |
37 |
|
|
38 |
#loop one: converting pegs |
#loop one: converting pegs |
39 |
for pegdir in pegdirs: |
for pegdir in pegdirs: |
40 |
rstfiles = [f for f in os.listdir(pegroot+'/'+pegdir+'/') |
rstfiles = [f for f in os.listdir(pegroot+'/'+pegdir+'/') |
41 |
if os.path.isfile(pegroot+'/'+pegdir+'/'+f) and f.endswith('.rst')] |
if os.path.isfile(pegroot+'/'+pegdir+'/'+f) and f.endswith('.rst')] |
42 |
|
|
43 |
print "Process PEG %s" % (pegdir) |
print 'Process PEG %s' % (pegdir) |
44 |
for rstfile in rstfiles: |
for rstfile in rstfiles: |
45 |
file = pegroot+'/'+pegdir+'/'+rstfile.rstrip('.rst') |
file = pegroot+'/'+pegdir+'/'+rstfile.rstrip('.rst') |
46 |
|
|
51 |
try: |
try: |
52 |
docutils.core.publish(writer_name='html', argv=args.split()) |
docutils.core.publish(writer_name='html', argv=args.split()) |
53 |
except: |
except: |
54 |
print "XXX" |
fails += 'PEG %s: Docutil raised an exception while converting %s. ' % (pegdir, f) |
55 |
print "PEG %s: Docutil raised an exception while converting %s." % (pegdir, f) |
fails += 'Conversion failed and HTML not created.\n' |
|
print "Conversion failed and HTML not created." |
|
|
|
|
|
# if 0: |
|
|
#config = docutils.frontend.ConfigParser() |
|
|
#defaults = config.get_section('options') |
|
|
# opts = docutils.frontend.OptionParser() |
|
|
#opts.set_defaults(**defaults) |
|
|
# opts.input_encoding = "utf-8" |
|
|
# opts.report_level = "0" |
|
|
# opts.halt_level = "3" |
|
|
# opts.warning_stream = sys.stdout |
|
|
# opts.debug = "0" |
|
|
# opts.language_code = "en" |
|
|
|
|
|
# ioobj = docutils.io.FileIO(opts, source_path="%s.rst" % (f,)) |
|
|
# reader = docutils.readers.get_reader_class("rst")(None, None) |
|
|
# doc = reader.read(ioobj, "restructuredtext", opts) |
|
|
# reader.set_parser("restructuredtext") |
|
|
# doc = reader.read(ioobj, None, opts) |
|
|
# print doc |
|
56 |
|
|
57 |
|
#loop two: creating index |
58 |
|
print 'Generating pegboard2.html...\n' |
59 |
|
args = '-stg --stylesheet '+css+' '+pegroot+'/pegboard.rst '+pegroot+'/pegboard2.html' |
60 |
|
docutils.core.publish(writer_name='html', argv=args.split()) |
61 |
|
|
62 |
|
pegboard = open (pegroot+'/pegboard2.html', 'r') |
63 |
|
pegboard_lines = pegboard.readlines() |
64 |
|
pegboard.close() |
65 |
|
pegboard = open (pegroot+'/pegboard2.html', 'w') |
66 |
|
|
67 |
|
def pegcmp(a, b): |
68 |
|
as = a['date'].split('-') |
69 |
|
bs = b['date'].split('-') |
70 |
|
ac = as[0]*356 + as[1]*31 + as[2] |
71 |
|
bc = bs[0]*356 + bs[1]*31 + bs[2] |
72 |
|
return ac > bc or bc < ac * -1 or 0 |
73 |
|
|
74 |
|
for pegboard_line in pegboard_lines: |
75 |
|
if pegboard_line.find(replace) != -1: |
76 |
|
pegtable = [] |
77 |
|
for pegdir in pegdirs: |
78 |
|
peg = {'author': '', 'status': '', 'topic': '', 'stakeholders': '', |
79 |
|
'date': '0000-00-00', 'dir': pegdir, 'files': '', 'pegfile': ''} |
80 |
|
pegfiles = [f for f in os.listdir(pegroot+'/'+pegdir+'/') |
81 |
|
if os.path.isfile(pegroot+'/'+pegdir+'/'+f) and not f.startswith('.')] |
82 |
|
peg['files'] = pegfiles |
83 |
|
for pegfile in pegfiles: |
84 |
|
if peg['pegfile'] == '': |
85 |
|
if pegfile == 'peg.html' or pegfile == 'PEG_'+pegdir+'.html': |
86 |
|
peg['pegfile'] = pegfile |
87 |
|
if pegfile == 'peg.rst' or pegfile == 'PEG_'+pegdir+'.rst': |
88 |
|
peg['pegfile'] = pegfile |
89 |
|
|
90 |
|
if pegfile == 'peg.rst' or pegfile == 'PEG_'+pegdir+'.rst': |
91 |
|
file = open (pegroot+'/'+pegdir+'/'+pegfile) |
92 |
|
lines = file.readlines() |
93 |
|
|
94 |
|
for line in lines: |
95 |
|
#XXX Parsing PEG here |
96 |
|
pass |
97 |
|
|
98 |
|
if peg['topic'] == '': |
99 |
|
peg['topic'] = peg['dir'] |
100 |
|
if peg['pegfile'] == '': |
101 |
|
peg['pegfile'] = peg['files'][0] |
102 |
|
pegtable.append(peg) |
103 |
|
|
104 |
|
pegtable.sort(pegcmp) |
105 |
|
|
106 |
|
replace_str = '<table class=\"pegboard\">\n<tr>\n' |
107 |
|
replace_str += '\t<th>Date</th>\n\t<th>Status</th>\n\t<th>Topic</th>\n' |
108 |
|
replace_str += '\t<th>Author</th>\n\t<th>Stakeholders</th>\n\t<th>Files</th>\n' |
109 |
|
replace_str += '</tr>\n' |
110 |
|
|
111 |
|
for peg in pegtable: |
112 |
|
if peg['status'] != '': |
113 |
|
replace_str += '<tr class=\"'+peg['status']+'\">\n' |
114 |
|
else: |
115 |
|
replace_str += '<tr>\n' |
116 |
|
replace_str += '\t<td>' + peg['date'] + '</td>\n' |
117 |
|
replace_str += '\t<td>' + peg['status'] + '</td>\n' |
118 |
|
replace_str += '\t<td><a href=\"'+peg['dir']+'/'+peg['pegfile']+'\">' \ |
119 |
|
+ peg['topic'] + '</a></td>\n' |
120 |
|
replace_str += '\t<td>' + peg['author'] + '</td>\n' |
121 |
|
replace_str += '\t<td>' + peg['stakeholders'] + '</td>\n' |
122 |
|
replace_str += '\t<td>\n' |
123 |
|
for file in peg['files']: |
124 |
|
replace_str += '\t\t<a href=\"'+peg['dir']+'/'+file+'\">' \ |
125 |
|
+file+'</a>\n' |
126 |
|
replace_str += '\t<td>\n' |
127 |
|
replace_str += '</tr>\n' |
128 |
|
|
129 |
|
replace_str += '</table>\n' |
130 |
|
pegboard_line = pegboard_line.replace(replace, replace_str) |
131 |
|
pegboard.write(pegboard_line) |
132 |
|
pegboard.close() |
133 |
|
|
134 |
|
|
135 |
|
print fails |
136 |
|
|
137 |
|
|
138 |
|
|