X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/4b8823e5633b22d13650cad6e06b0330ce9985fc..52fda8b0e9e52e94aae6cb3170c9b1b492a2d8b4:/docs/conf.py?ds=sidebyside diff --git a/docs/conf.py b/docs/conf.py index 5d0e9e3..9599afd 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -15,6 +15,7 @@ import ast from pathlib import Path import re +import shutil import string from recommonmark.parser import CommonMarkParser @@ -40,6 +41,49 @@ def make_pypi_svg(version): f.write(svg) +def make_filename(line): + non_letters = re.compile(r'[^a-z]+') + filename = line[3:].rstrip().lower() + filename = non_letters.sub('_', filename) + if filename.startswith('_'): + filename = filename[1:] + if filename.endswith('_'): + filename = filename[:-1] + return filename + '.md' + + +def generate_sections_from_readme(): + target_dir = CURRENT_DIR / '_build' / 'generated' + readme = CURRENT_DIR / '..' / 'README.md' + shutil.rmtree(str(target_dir), ignore_errors=True) + target_dir.mkdir(parents=True) + + output = None + target_dir = target_dir.relative_to(CURRENT_DIR) + with open(str(readme), 'r', encoding='utf8') as f: + for line in f: + if line.startswith('## '): + if output is not None: + output.close() + filename = make_filename(line) + output_path = CURRENT_DIR / filename + if output_path.is_symlink() or output_path.is_file(): + output_path.unlink() + output_path.symlink_to(target_dir / filename) + output = open(str(output_path), 'w', encoding='utf8') + output.write( + '[//]: # (NOTE: THIS FILE IS AUTOGENERATED FROM README.md)\n\n' + ) + + if output is None: + continue + + if line.startswith('##'): + line = line[1:] + + output.write(line) + + # -- Project information ----------------------------------------------------- project = 'Black' @@ -54,6 +98,7 @@ version = release for sp in 'abcfr': version = version.split(sp)[0] make_pypi_svg(release) +generate_sections_from_readme() # -- General configuration --------------------------------------------------- @@ -68,6 +113,7 @@ make_pypi_svg(release) extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx', + 'sphinx.ext.napoleon', ] # Add any paths that contain templates here, relative to this directory. @@ -226,6 +272,8 @@ epub_exclude_files = ['search.html'] # -- Extension configuration ------------------------------------------------- +autodoc_member_order = 'bysource' + # -- Options for intersphinx extension --------------------------------------- # Example configuration for intersphinx: refer to the Python standard library.