def format_para(p): if not p: return '' doc = '' if p.startswith('>>>'): doc += '<pre>\n%s\n</pre>\n' % q(p) else: if not re.search('^- ', p, re.M): doc += '<p>%s</p>\n' % q(p) else: p = re.split('(?m)^- ', p) if p[0]: doc += '<p>%s</p>\n' % q(p[0].strip()) del p[0] doc += ('<ul>%s</ul>\n' % '\n'.join(['<li>%s</li>' % q(p.strip()) for p in p])) return doc
def format(tree, level, prefix=''): name = tree['name'] if prefix: fullname = '%s-%s' % (prefix, name) else: fullname = name ##### Main doc doc = [] if level > 1: doc = ['<h%d id="%s">' % (level, fullname)] try: doc.append(format_synopsis(tree['doc']['synopsis'])) except TypeError: doc.append(name) doc.append('</h%d>\n' % level) if tree.has_key('bases'): doc.append('<p>Bases: %s.</p>\n' % ', '.join(tree['bases'])) try: lst = [tree['doc']['summary']] + tree['doc']['details'] except TypeError: lst = tree['doc'] for p in lst: doc.append(format_para(p)) ##### Table of contents routines = tree['routines'].keys() classes = tree['classes'].keys() data = tree['data'].keys() if routines: routines.sort() if level == 1: doc.append('<p><b>Functions:</b></p>\n') else: doc.append('<p><b>Methods:</b></p>\n') doc.append('<ul class="ltoc">\n') for r in routines: synopsis = tree['routines'][r]['synopsis'] doc.append('<li>%s</li>\n' % format_synopsis(synopsis, True, fullname)) doc.append('</ul>\n') if classes: classes.sort() doc.append('<p><b>Classes:</b></p>\n') doc.append('<ul class="ltoc">\n') for r in classes: synopsis = tree['classes'][r]['doc']['synopsis'] doc.append('<li>%s</li>\n' % format_synopsis(synopsis, True, fullname)) doc.append('</ul>\n') if data: data.sort() doc.append('<p><b>Data:</b></p>\n') doc.append('<ul class="ltoc">\n') for r in data: doc.append('<li>%s = %s</li>\n' % (r, q(tree['data'][r]))) doc.append('</ul>\n') ##### Functions if routines: if level == 1: doc.append('<hr/>\n') doc.append('<dl>\n') for r in routines: doc.append('<dt id="%s-%s">' % (fullname, r)) rt = tree['routines'][r] doc.append('%s</dt>\n<dd>' % format_synopsis(rt['synopsis'])) for p in [rt['summary']] + rt['details']: doc.append(format_para(p)) doc.append('</dd>\n') doc.append('</dl>\n') ##### Classes if classes: for r in classes: doc.append('<hr/>\n') doc.append(format(tree['classes'][r], level+1, fullname)) return ''.join(doc)
def format(tree, level, prefix=''): name = tree['name'] if prefix: fullname = '%s-%s' % (prefix, name) else: fullname = name ##### Main doc doc = [] if level > 1: doc = ['<h%d id="%s">' % (level, fullname)] try: doc.append(format_synopsis(tree['doc']['synopsis'])) except TypeError: doc.append(name) doc.append('</h%d>\n' % level) if tree.has_key('bases'): doc.append('<p>Bases: %s.</p>\n' % ', '.join(tree['bases'])) try: lst = [tree['doc']['summary']] + tree['doc']['details'] except TypeError: lst = tree['doc'] for p in lst: doc.append(format_para(p)) ##### Table of contents routines = tree['routines'].keys() classes = tree['classes'].keys() data = tree['data'].keys() if routines: routines.sort() if level == 1: doc.append('<p><b>Functions:</b></p>\n') else: doc.append('<p><b>Methods:</b></p>\n') doc.append('<ul class="ltoc">\n') for r in routines: synopsis = tree['routines'][r]['synopsis'] doc.append('<li>%s</li>\n' % format_synopsis(synopsis, True, fullname)) doc.append('</ul>\n') if classes: classes.sort() doc.append('<p><b>Classes:</b></p>\n') doc.append('<ul class="ltoc">\n') for r in classes: synopsis = tree['classes'][r]['doc']['synopsis'] doc.append('<li>%s</li>\n' % format_synopsis(synopsis, True, fullname)) doc.append('</ul>\n') if data: data.sort() doc.append('<p><b>Data:</b></p>\n') doc.append('<ul class="ltoc">\n') for r in data: doc.append('<li>%s = %s</li>\n' % (r, q(tree['data'][r]))) doc.append('</ul>\n') ##### Functions if routines: if level == 1: doc.append('<hr/>\n') doc.append('<dl>\n') for r in routines: doc.append('<dt id="%s-%s">' % (fullname, r)) rt = tree['routines'][r] doc.append('%s</dt>\n<dd>' % format_synopsis(rt['synopsis'])) for p in [rt['summary']] + rt['details']: doc.append(format_para(p)) doc.append('</dd>\n') doc.append('</dl>\n') ##### Classes if classes: for r in classes: doc.append('<hr/>\n') doc.append(format(tree['classes'][r], level + 1, fullname)) return ''.join(doc)