diff --git a/docs/gen_reference_doc.py b/docs/gen_reference_doc.py index 6567102be..1d5ea2538 100644 --- a/docs/gen_reference_doc.py +++ b/docs/gen_reference_doc.py @@ -84,7 +84,7 @@ def is_visible(desc): def highlight_signature(s): name = s.split('(') name2 = name[0].split(' ') - name2[-1] = '' + name2[-1] + '' + name2[-1] = '**' + name2[-1] + '** ' name[0] = ' '.join(name2) return '('.join(name) @@ -209,6 +209,7 @@ def parse_class(lno, lines, filename): if l.startswith('//'): if verbose: print 'desc %s' % l l = l.split('//')[1] + if len(l) and l[0] == ' ': l = l[1:] context += l + '\n' continue @@ -298,6 +299,7 @@ def parse_enum(lno, lines, filename): if l.startswith('//'): if verbose: print 'desc %s' % l l = l.split('//')[1] + if len(l) and l[0] == ' ': l = l[1:] context += l + '\n' continue @@ -413,6 +415,7 @@ for filename in files: if l.startswith('//'): if verbose: print 'desc %s' % l l = l.split('//')[1] + if len(l) and l[0] == ' ': l = l[1:] context += l + '\n' continue @@ -521,7 +524,7 @@ categories = {} for c in classes: cat = categorize_symbol(c['name'], c['file']) if not cat in categories: - categories[cat] = { 'classes': [], 'functions': [], 'enums': [], 'filename': 'reference-%s.html' % cat.replace(' ', '_')} + categories[cat] = { 'classes': [], 'functions': [], 'enums': [], 'filename': 'reference-%s.rst' % cat.replace(' ', '_')} if c['file'] in overviews: categories[cat]['overview'] = overviews[c['file']] @@ -532,7 +535,7 @@ for c in classes: for f in functions: cat = categorize_symbol(first_item(f['names']), f['file']) if not cat in categories: - categories[cat] = { 'classes': [], 'functions': [], 'enums': [], 'filename': 'reference-%s.html' % cat.replace(' ', '_')} + categories[cat] = { 'classes': [], 'functions': [], 'enums': [], 'filename': 'reference-%s.rst' % cat.replace(' ', '_')} if f['file'] in overviews: categories[cat]['overview'] = overviews[f['file']] @@ -544,37 +547,64 @@ for f in functions: for e in enums: cat = categorize_symbol(e['name'], e['file']) if not cat in categories: - categories[cat] = { 'classes': [], 'functions': [], 'enums': [], 'filename': 'reference-%s.html' % cat.replace(' ', '_')} + categories[cat] = { 'classes': [], 'functions': [], 'enums': [], 'filename': 'reference-%s.rst' % cat.replace(' ', '_')} categories[cat]['enums'].append(e) symbols[e['name']] = categories[cat]['filename'] + '#' + html_sanitize(e['name']) -out = open('reference.html', 'w+') -out.write('''
- - -Declared in "%s"
' % (o['file'], html_sanitize(o['file']))) + out.write('Declared in "%s"\n\n' % print_link(o['file'], '../include/%s' % o['file'])) -def print_link(out, name): - our.write('%s' % (symbols[name], name)) +link_targets = [] + +def print_link(name, target): + global link_targets + link_targets.append(target) + return "`%s`__" % name + +def dump_link_targets(): + global link_targets + ret = '' + for l in link_targets: + ret += '__ %s\n' % l + link_targets = [] + return ret + +def heading(string, c): + return string + '\n' + (c * len(string)) + '\n' + +out = open('reference.rst', 'w+') +out.write('''================================== +libtorrent reference documentation +================================== + +.. raw:: html + +' % cat
- category_filename = categories[cat]['filename']
+ print >>out, '%s' % heading(cat, '-')
+
+ category_filename = categories[cat]['filename'].replace('.rst', '.html')
for c in categories[cat]['classes']:
- print >>out, '%s %s
' % (category_filename, html_sanitize(c['name']), html_sanitize(c['type']), html_sanitize(c['name']))
+ print >>out, '| ' + print_link(c['name'], category_filename + '#' + c['name'])
for f in categories[cat]['functions']:
for n in f['names']:
- name = html_sanitize(n)
- print >>out, '%s()
' % (category_filename, name, name)
+ print >>out, '| ' + print_link(n + '()', category_filename + '#' + n)
for e in categories[cat]['enums']:
- print >>out, 'enum %s
' % (category_filename, html_sanitize(e['name']), html_sanitize(e['name']))
- print >>out, '
%s
' % (cat, html_sanitize(categories[cat]['overview']))) + out.write('%s\n%s' % (heading(cat, '='), categories[cat]['overview'])) for c in classes: - out.write('%s
' % html_sanitize(c['desc'])) + out.write('%s\n\n.. parsed-literal::\n\t' % c['desc']) - out.write('') - print >>out, '%s\n{' % html_sanitize(c['decl']) + block = '\n%s\n{\n' % c['decl'] for f in c['fun']: for s in f['signatures']: - print >>out, ' %s' % highlight_signature(html_sanitize(s.replace('\n', '\n '))) + block += ' %s\n' % highlight_signature(s.replace('\n', '\n ')) - if len(c['fun']) > 0 and len(c['enums']) + len(c['fields']) > 0: print >>out, '' + if len(c['fun']) > 0 and len(c['enums']) > 0: block += '\n' first = True for e in c['enums']: if not first: - print >>out, '' + block += '\n' first = False - print >>out,' enum %s\n {' % html_sanitize(e['name']) + block += ' enum %s\n {\n' % e['name'] for v in e['values']: - print >>out,' %s,' % html_sanitize(v['name']) - print >>out,' };' + block += ' %s,\n' % v['name'] + block += ' };\n' - if len(c['fun']) + len(c['enums']) > 0 and len(c['fields']): print >>out, '' + if len(c['fun']) + len(c['enums']) > 0 and len(c['fields']): block += '\n' for f in c['fields']: for s in f['signatures']: - print >>out, ' %s' % html_sanitize(s) + block += ' %s\n' % s - out.write('};') + block += '};' + + print >>out, block.replace('\n', '\n\t') + '\n' for f in c['fun']: if f['desc'] == '': continue + title = '' for n in f['names']: - name = html_sanitize(n) - print >>out, '' % name - print >>out, '
' - print >>out, '' + title += '%s() ' % n + print >>out, heading(title.strip(), '.') + + block = '.. parsed-literal::\n\n' + for s in f['signatures']: - print >>out, highlight_signature(html_sanitize(s.replace('\n', '\n '))) - print >>out, '
%s
' % html_sanitize(f['desc']) + block += highlight_signature(s.replace('\n', '\n ')) + '\n' + print >>out, '%s\n' % block.replace('\n', '\n\t') + print >>out, '%s' % f['desc'] for e in c['enums']: if e['desc'] == '': continue - print >>out, 'value | description |
---|---|
%s | %s |
' - print >>out, '' + block = '.. parsed-literal::\n\n' for s in f['signatures']: - print >>out, highlight_signature(html_sanitize(s)) - print >>out, '
%s
' % html_sanitize(f['desc']) + block += highlight_signature(s) + '\n' + + print >>out, '%s\n' % block.replace('\n', '\n\t') + print >>out, f['desc'] for e in enums: - name = html_sanitize(e['name']) - print >>out, 'value | description |
---|---|
%s | %s |