/[gzz]/gzz/metacode/pegboard.py
ViewVC logotype

Diff of /gzz/metacode/pegboard.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by humppake, Thu Oct 31 09:12:57 2002 UTC revision 1.5 by humppake, Fri Nov 1 10:09:56 2002 UTC
# Line 27  class _: Line 27  class _:
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    
# Line 48  for pegdir in pegdirs: Line 51  for pegdir in pegdirs:
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    

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26