summaryrefslogtreecommitdiff
path: root/api-docs/source/conf.py
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2017-01-16 17:18:54 -0500
committerRusty Wagner <rusty@vector35.com>2017-01-16 17:36:43 -0500
commit41acb3d72d6ec23620a744b7f84c8359e425b30b (patch)
treedf13cbfbd36f1e6f5e306080c0737e5c11be0f60 /api-docs/source/conf.py
parent7e154a952fe5856b7cf650e2646ebc410b1fb506 (diff)
parent8139c1413e6453f188b2ea7fed01cb3ea30d949e (diff)
Merge branch 'dev' into type_view
Diffstat (limited to 'api-docs/source/conf.py')
-rw-r--r--api-docs/source/conf.py67
1 files changed, 60 insertions, 7 deletions
diff --git a/api-docs/source/conf.py b/api-docs/source/conf.py
index 42bcfb87..379d6d7e 100644
--- a/api-docs/source/conf.py
+++ b/api-docs/source/conf.py
@@ -19,15 +19,68 @@
import os
import sys
import platform
+import inspect
if (platform.system() == "Darwin"):
- bnpath=os.path.join(os.path.abspath('.'), "..", "..", "..", "ui", "binaryninja.app", "Contents", "Resources", "python")
+ bnpath=os.path.join(os.path.abspath('.'), "..", "..", "..", "ui", "binaryninja.app", "Contents", "Resources", "python")
else:
- bnpath=os.path.join(os.path.abspath('.'), "..", "..", "..", "ui", "python")
+ bnpath=os.path.join(os.path.abspath('.'), "..", "..", "..", "ui", "python")
sys.path.insert(0, bnpath)
import binaryninja
+def modulelist(modulename):
+ modules = inspect.getmembers(modulename, inspect.ismodule)
+ return filter(lambda x: x[0] not in ("abc", "ctypes", "core", "struct", "sys", "_binaryninjacore", "traceback", "code", "enum", "json", "threading"), modules)
+
+
+def classlist(module):
+ members = inspect.getmembers(module, inspect.isclass)
+ if module.__name__ != "binaryninja.enums":
+ members = filter(lambda x: type(x[1]) != binaryninja.enum.EnumMeta, members)
+ members.extend(inspect.getmembers(module, inspect.isfunction))
+ return map(lambda x: x[0], filter(lambda x: not x[0].startswith("_"), members))
+
+
+def generaterst():
+ pythonrst = open("python.rst", "w")
+ pythonrst.write('''Binary Ninja Python API Documentation
+=====================================
+
+.. toctree::
+ :maxdepth: 2
+
+''')
+
+ for modulename, module in modulelist(binaryninja):
+ filename = 'binaryninja.{module}.rst'.format(module=modulename)
+ pythonrst.write(' {module} <{filename}>\n'.format(module=modulename, filename=filename))
+ modulefile = open(filename, "w")
+ modulefile.write('''{module} module
+=====================
+
+.. autosummary::
+ :toctree:
+
+'''.format(module=modulename))
+
+ for classname in classlist(module):
+ modulefile.write(" binaryninja.{module}.{classname}\n".format(module=modulename, classname=classname))
+
+ modulefile.write('''\n.. toctree::
+ :maxdepth: 2\n''')
+ modulefile.close()
+
+ pythonrst.write('''.. automodule:: binaryninja
+ :members:
+ :undoc-members:
+ :show-inheritance:
+''')
+ pythonrst.close()
+
+
+generaterst()
+
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
@@ -50,7 +103,7 @@ extensions = [
]
autosummary_generate = True
-autodoc_member_order = 'groupwise'
+#autodoc_member_order = 'groupwise'
breathe_projects = { "BinaryNinja": "../../xml/" }
breathe_projects_source = {
@@ -121,7 +174,7 @@ exclude_patterns = []
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#
-# add_module_names = True
+add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
@@ -211,7 +264,7 @@ html_static_path = ['_static']
# If false, no module index is generated.
#
-# html_domain_indices = True
+html_domain_indices = True
# If false, no index is generated.
#
@@ -219,11 +272,11 @@ html_static_path = ['_static']
# If true, the index is split into individual pages for each letter.
#
-# html_split_index = False
+html_split_index = False
# If true, links to the reST sources are added to the pages.
#
-# html_show_sourcelink = True
+html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#