X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/cbf010e0a208ccef9a498e3276cdf79b23a01440..c55d08d0b96c8de8bd867ca315e380d9e9d2d7ec:/docs/conf.py diff --git a/docs/conf.py b/docs/conf.py index 19a161b..9599afd 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -15,6 +15,8 @@ import ast from pathlib import Path import re +import shutil +import string from recommonmark.parser import CommonMarkParser @@ -30,6 +32,58 @@ def get_version(): return str(ast.literal_eval(version)) +def make_pypi_svg(version): + template = CURRENT_DIR / '_static' / 'pypi_template.svg' + target = CURRENT_DIR / '_static' / 'pypi.svg' + with open(str(template), 'r', encoding='utf8') as f: + svg = string.Template(f.read()).substitute(version=version) + with open(str(target), 'w', encoding='utf8') as f: + 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' @@ -43,6 +97,9 @@ release = get_version() version = release for sp in 'abcfr': version = version.split(sp)[0] +make_pypi_svg(release) +generate_sections_from_readme() + # -- General configuration --------------------------------------------------- @@ -56,6 +113,7 @@ for sp in 'abcfr': extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx', + 'sphinx.ext.napoleon', ] # Add any paths that contain templates here, relative to this directory. @@ -214,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.