X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/c98a6f134f4b2b831e7e659de0c217c118270a61..1d45f6e6a11675ee1ee5a3b0c3664cd7feec532b:/docs/conf.py?ds=sidebyside

diff --git a/docs/conf.py b/docs/conf.py
index efb6359..9599afd 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -12,13 +12,77 @@
 # 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.
 #
-import os
-import sys
+import ast
+from pathlib import Path
+import re
+import shutil
+import string
+
+from recommonmark.parser import CommonMarkParser
+
+
+CURRENT_DIR = Path(__file__).parent
+
+
+def get_version():
+    black_py = CURRENT_DIR / '..' / 'black.py'
+    _version_re = re.compile(r'__version__\s+=\s+(?P<version>.*)')
+    with open(str(black_py), 'r', encoding='utf8') as f:
+        version = _version_re.search(f.read()).group('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)
 
-import recommonmark
-
-
-sys.path.insert(0, os.path.abspath('.' ))
 
 # -- Project information -----------------------------------------------------
 
@@ -27,12 +91,15 @@ copyright = '2018, Łukasz Langa and contributors to Black'
 author = 'Łukasz Langa and contributors to Black'
 
 # Autopopulate version
-import black
-# The short X.Y version.
-# TODO: fix for 2 digit month
-version = f'{black.__version__[:4]}'
 # The full version, including alpha/beta/rc tags.
-release = black.__version__
+release = get_version()
+# The short X.Y version.
+version = release
+for sp in 'abcfr':
+    version = version.split(sp)[0]
+make_pypi_svg(release)
+generate_sections_from_readme()
+
 
 # -- General configuration ---------------------------------------------------
 
@@ -46,13 +113,14 @@ release = black.__version__
 extensions = [
     'sphinx.ext.autodoc',
     'sphinx.ext.intersphinx',
+    'sphinx.ext.napoleon',
 ]
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
 
 source_parsers = {
-    '.md': 'recommonmark.parser.CommonMarkParser',
+    '.md': CommonMarkParser,
 }
 
 # The suffix(es) of source filenames.
@@ -96,13 +164,15 @@ html_sidebars = {
 }
 
 html_theme_options = {
-    'show_related': True,
-    'description': 'The uncompromising Python code formatter',
+    'show_related': False,
+    'description': '“Any color you like.”',
+    'github_button': True,
     'github_user': 'ambv',
     'github_repo': 'black',
-    'github_button': True,
+    'github_type': 'star',
     'show_powered_by': True,
     'fixed_sidebar': True,
+    'logo': 'logo2.png',
 }
 
 
@@ -162,7 +232,7 @@ latex_documents = [
 # One entry per manual page. List of tuples
 # (source start file, name, description, authors, manual section).
 man_pages = [
-    (master_doc, 'black', 'Documentation for black',
+    (master_doc, 'black', 'Documentation for Black',
      [author], 1)
 ]
 
@@ -202,7 +272,9 @@ 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.
-intersphinx_mapping = {'https://docs.python.org/3/': None}
\ No newline at end of file
+intersphinx_mapping = {'https://docs.python.org/3/': None}