("', '').split('"')
self.allProcedures.append([tmp[0], '', 'CONSTANT'])
f.close()
def getFileProcedures(self, fname):
d = []
f = open(os.path.join(self.path, fname), 'r')
for line in f:
if line.find('PyDoc_STRVAR') != -1:
d.append(line.replace('PyDoc_STRVAR(', '').split(',')[0])
f.close()
return d
def order():
""" dummy sql clausule """
return ' order by 1'
def getHTMLDocs(name, doc):
""" create a html template for scribus documentation.
It looks like it's written in PERL ;) """
return """<dt><a name="-%s"><strong>%s</strong>(...)</a></dt>
<dd><code></code>
<p>%s</p></dd>
""" % (name, name, doc.replace('&', '&'))
print 'START'
h = HTMLDocs()
c = CPPDocs()
out = []
out.append('Remember: You have to "make install" after code change to promote the changes here.
')
out.append('Undocumented in C++ code
Code with no docstrings in *.h files
')
for i in c.undocumented:
out.append('- ' + i[0] + ' - ' + i[1] + '
')
out.append('
')
conn = sqlite.connect(':memory:')
#conn = sqlite.connect('scdoc.db')
cur = conn.cursor()
try:
cur.execute('drop table cpp')
cur.execute('drop table html')
except:
pass
cur.execute('create table cpp (name varchar(30), doc text)')
cur.execute('create table html (name varchar(30), doc text)')
for i in c.currentDocs:
cur.execute('insert into cpp values (?, ?)', (unicode(i), unicode(c.currentDocs[i])))
for i in h.docs:
cur.execute('insert into html values (?, ?)', (unicode(i), unicode(h.docs[i])))
conn.commit()
# undocumented in HTML vs. Code
out.append('HTML vs. Code
Is in HTML but not in the code
')
for i in cur.execute('select h.name from html as h left outer join cpp as c on (c.name = h.name) where c.name is null' + order()):
out.append('- ' + i[0] + '
')
out.append('
')
# undocumented in Code vs HTML
out.append('Code vs HTML
Is in the code but not in HTML
| Name | docstring |
')
for i in cur.execute('select c.name, c.doc from cpp as c left outer join html as h on (c.name = h.name) where h.name is null' + order()):
out.append('| ' + i[0] + ' | ' + getHTMLDocs(i[0], i[1]) + " |
")
out.append('
')
# documented in the both places. Checking for diffs in docstrings
out.append('Doc diffs
| code | html | diff |
')
# I don't care about whitespaces
diff = difflib.Differ(charjunk=difflib.IS_CHARACTER_JUNK)
for i in cur.execute('select c.doc, h.doc, c.name, h.name from cpp as c, html as h where c.name = h.name and c.doc != h.doc' + order()):
out.append('| ' + i[2] + ' | ' + i[3] + ' | ')
out.append('' + '\n'.join(list(diff.compare([i[0]], [i[1]]))) + ' |
\n')
out.append('| ' + i[0] + ' | ' + i[1] + ' | \n')
out.append('
')
out.append('Correct docs
| code | html |
')
for i in cur.execute('select c.name, h.name from cpp as c, html as h where c.name = h.name and c.doc = h.doc' + order()):
out.append('| ' + i[0] + ' | ' + i[1] + ' |
\n')
out.append('
')
print 'FINISHING...'
conn.close()
f = open('scribus-docs-check.html', 'w')
f.write(''.join(out))
f.close()
print 'END'