diff --git a/doc/conf.py b/doc/conf.py index 250fb3a..9c677ad 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -16,7 +16,8 @@ import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. -sys.path.insert(0, os.path.abspath('..')) # Folder containing mceditlib +sys.path.insert(0, os.path.abspath('..')) # Folder containing mceditlib +sys.path.insert(0, os.path.abspath('extensions')) # extensions # -- General configuration ----------------------------------------------------- @@ -25,7 +26,7 @@ sys.path.insert(0, os.path.abspath('..')) # Folder containing mceditlib # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode'] +extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode', 'sphinx_nounderscore'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] diff --git a/doc/extensions/sphinx_nounderscore.py b/doc/extensions/sphinx_nounderscore.py new file mode 100644 index 0000000..0629c2d --- /dev/null +++ b/doc/extensions/sphinx_nounderscore.py @@ -0,0 +1,37 @@ +""" +:Description: Sphinx extension to remove leading under-scores from directories names in the html build output directory. +""" +import os +import shutil + + +def setup(app): + """ + Add a html-page-context and a build-finished event handlers + """ + app.connect('html-page-context', change_pathto) + app.connect('build-finished', move_private_folders) + +def change_pathto(app, pagename, templatename, context, doctree): + """ + Replace pathto helper to change paths to folders with a leading underscore. + """ + pathto = context.get('pathto') + def gh_pathto(otheruri, *args, **kw): + if otheruri.startswith('_'): + otheruri = otheruri[1:] + return pathto(otheruri, *args, **kw) + context['pathto'] = gh_pathto + +def move_private_folders(app, e): + """ + remove leading underscore from folders in in the output folder. + + :todo: should only affect html built + """ + def join(dir): + return os.path.join(app.builder.outdir, dir) + + for item in os.listdir(app.builder.outdir): + if item.startswith('_') and os.path.isdir(join(item)): + shutil.move(join(item), join(item[1:])) \ No newline at end of file