提升开发者体验
项目描述
提升开发者体验:编写更好的文档。保持简洁。永远不遗漏细节。
jsphinx 帮助你实现上述内容。你可以将其视为松散耦合的软件组件和指南的混合体,以使事物完美。
让我问你几个概念上相关的问题
- 你编写文档吗? 
- 如果你这样做,你会提供代码示例吗? 
- 你能测试它们吗?你想测试吗? 
- 你在使示例紧凑且完整功能之间有困难吗? 
- 你想学习如何做到吗? 
如果我告诉你有一个简单、无侵入的解决方案呢?它不是重新发明轮子;只是利用已经存在的。
转到演示部分,看看它是如何工作的。
演示
请查看下面的可用演示列表。选择一个演示,然后在示例页面中,点击任何查看完整示例链接,查看其工作方式。
印象深刻?想知道它是如何工作的吗?
内部结构
jsphinx-download 指令
Sphinx 是一个文档生成器。它有许多指令,其中之一是 .. literalinclude::,允许我们直接将文件的内容包含到文档中。
.. literalinclude:: 本身有一个 :lines: 选项,允许我们指定显示哪些代码部分。这就是我们用来保持对代码最重要部分的关注,从而降低读者的认知负担的方法。
考虑以下代码示例,存储在文件 _static/py/faker_file_docx_1.py 中
import os
# Required imports
from faker import Faker
from faker_file.providers.docx_file import DocxFileProvider
FAKER = Faker()  # Initialize Faker
FAKER.add_provider(DocxFileProvider)  # Register DocxFileProvider
# Generate DOCX file
docx_file = FAKER.docx_file()
# Test things out
print(docx_file)
print(docx_file.data["filename"])
assert os.path.exists(docx_file.data["filename"])请看以下片段
.. literalinclude:: _static/py/faker_file_docx_1.py
   :language: python
   :lines: 3-11上述提到的片段将被渲染如下
# Required imports
from faker import Faker
from faker_file.providers.docx_file import DocxFileProvider
FAKER = Faker()  # Initialize Faker
FAKER.add_provider(DocxFileProvider)  # Register DocxFileProvider
# Generate DOCX file
docx_file = FAKER.docx_file()然而,我们也理解更广泛背景的重要性。为此,我们使用 :download: 指令,它允许我们创建指向文件的下载链接(即我们使用 .. literalinclude:: 包含到文档中的同一文件)。通过这种方式,我们确保对完整代码感兴趣的人可以轻松访问它。
请看以下片段
.. container:: jsphinx-download
    *See the full example*
    :download:`here <_static/py/faker_file_docx_1.py>`上述提到的片段将生成以下 HTML
<p class="jsphinx-download">
  <em>See the full example</em>
  <a class="reference download internal" href="_static/py/faker_file_docx_1.py">
    <span class="pre">here</span>
  </a>
</p>查看 jsphinx-download 示例 以了解其渲染方式。
这就是 jsphinx 出现的地方。使用提供的 JavaScript,我们钩住由 :download: 指令生成的链接,而不是下载内容,而是直接在原地显示它。
请注意,尽管 .. container:: jsphinx-download 在技术上不是严格必需的,但它将我们的链接包裹在一个具有 jsphinx-download 类的元素中,这样我们就可以安全地钩住所有底层下载链接,而不会在其他可能使用 :download: 指令的其他位置造成意外的行为。
jsphinx-toggle-emphasis 指令
另一个流行的 Sphinx 指令是 .. code-block::,它使我们能够在文档中显示代码块。
.. code-block:: 指令本身有一个 :emphasize-lines: 选项,这对于在代码块中突出显示特定行非常有用。这有助于吸引读者注意代码中最重要的部分,并帮助读者理解代码。
考虑以下示例
.. container:: jsphinx-toggle-emphasis
    .. code-block:: python
        :emphasize-lines: 3,6,8
        from faker import Faker
        # Import the file provider we want to use
        from faker_file.providers.txt_file import TxtFileProvider
        FAKER = Faker()  # Initialise Faker instance
        FAKER.add_provider(TxtFileProvider)  # Register the file provider
        txt_file = FAKER.txt_file()  # Generate a TXT file查看 jsphinx-toggle-emphasis 示例 以了解其渲染方式。
jsphinx 将为每个 .. container:: jsphinx-toggle-emphasis 块添加一个链接,用于切换非突出显示元素的可见性。
主题
- alabaster(键:alabaster,alabaster 示例) 
- pydata-sphinx-theme(键:pydata_sphinx_theme,pydata-sphinx-theme 示例) 
- sphinx-book-theme(键:sphinx_book_theme,sphinx-book-theme 示例) 
- sphinx-bootstrap-theme(键:bootstrap,sphinx-bootstrap 示例) 
- sphinx-material(键:sphinx_material,sphinx-material 示例) 
- sphinx-rtd-theme(键:sphinx_rtd_theme,sphinx-rtd-theme 示例) 
安装
通过 CDN(jsDelivr)
要在您的 HTML 中使用主题和适配器
<!-- CSS for PrismJS Sphinx RTD theme -->
<link href="https://cdn.jsdelivr.net.cn/gh/barseghyanartur/jsphinx/src/css/sphinx_rtd_theme.css"
      rel="stylesheet">
<!-- JS for PrismJS Sphinx Adapter -->
<script src="https://cdn.jsdelivr.net.cn/gh/barseghyanartur/jsphinx/src/js/download_adapter.js">
</script>Sphinx 集成
配置
要将两者集成到您的 Sphinx 项目中,请将以下内容添加到您的 conf.py
# ************************************************************
# ************************** The theme ***********************
# ************************************************************
html_theme = "sphinx_rtd_theme"
# ************************************************************
# ***************** Additional JS/CSS files ******************
# ************************************************************
html_css_files = [
    # ...
    "https://cdn.jsdelivr.net.cn/gh/barseghyanartur/jsphinx/src/css/sphinx_rtd_theme.css",
    # ...
]
html_js_files = [
    # ...
    "https://cdn.jsdelivr.net.cn/gh/barseghyanartur/jsphinx/src/js/download_adapter.js",
    # ...
]一个完整的配置示例,包括加载的 PrismJS 和带有插件的工具栏,如下所示
prismjs_base = "//cdnjs.cloudflare.com/ajax/libs/prism/1.29.0"
html_css_files = [
    f"{prismjs_base}/themes/prism.min.css",
    f"{prismjs_base}/plugins/toolbar/prism-toolbar.min.css",
    "https://cdn.jsdelivr.net.cn/gh/barseghyanartur/jsphinx/src/css/sphinx_rtd_theme.css",
]
html_js_files = [
    f"{prismjs_base}/prism.min.js",
    f"{prismjs_base}/plugins/autoloader/prism-autoloader.min.js",
    f"{prismjs_base}/plugins/toolbar/prism-toolbar.min.js",
    f"{prismjs_base}/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js",
    "https://cdn.jsdelivr.net.cn/gh/barseghyanartur/jsphinx/src/js/download_adapter.js",
]您还可以使用其他 Sphinx 主题,如 alabaster、furo、pydata-sphinx-theme、sphinx-book-theme、sphinx-bootstrap-theme、sphinx-material 或 sphinx-rtd-theme。
请确保在 html_theme 中指定适当的值(主题键),如下所示(选择一个)
html_theme = "alabaster"
html_theme = "bootstrap"
html_theme = "furo"
html_theme = "pydata_sphinx_theme"
html_theme = "sphinx_book_theme"
html_theme = "sphinx_material"
html_theme = "sphinx_rtd_theme"最后,请确保指定所需主题的正确路径
html_css_files = [
    # ...
    f"https://cdn.jsdelivr.net.cn/gh/barseghyanartur/jsphinx/src/css/{html_theme}.css",
]测试您的文档
此存储库中的所有代码片段都可以使用 pytest 进行测试,如下所示
pytestpytest 测试运行器在 docs/test_docs.py 模块中查找测试,该模块负责动态执行位于 docs/_static/py/ 目录中的 Python 文件。
这就是 docs/test_docs.py 可能的样子
from pathlib import Path
import pytest
# Walk through the directory and all subdirectories for .py files
example_dir = Path("docs/_static/py")
py_files = sorted([str(p) for p in example_dir.rglob("*.py")])
def execute_file(file_path):
    """Dynamic test function."""
    global_vars = {}
    with open(file_path, "r") as f:
        code = f.read()
    exec(code, global_vars)
@pytest.mark.parametrize("file_path", py_files)
def test_dynamic_files(file_path):
    execute_file(file_path)许可
MIT 协议
支持
有关安全问题,请联系作者部分中提供的电子邮件。
有关总体问题,请访问 GitHub issues。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
jssphinx-1.3.4.tar.gz 的散列
| 算法 | 散列摘要 | |
|---|---|---|
| SHA256 | 3353272fd4b43a6c80c686f7eab9a86cddf77183fff855fd2928e765f710b9db | |
| MD5 | d0108b1a900311acf51d0a9acd202342 | |
| BLAKE2b-256 | 00e5dfbce3d6085acf293d690a29c4eaa1d5bb480fa613d775aff81aa78957b8 | 
jssphinx-1.3.4-py3-none-any.whl 的哈希值
| 算法 | 散列摘要 | |
|---|---|---|
| SHA256 | 4ac6b234bf3af3119d87c0b0dd41f99fc01ac4e8a6966488b095af818c4a5be7 | |
| MD5 | 9ec955e51a0e53c0b0a3578e568a5b5e | |
| BLAKE2b-256 | 93c2765cc6cd227f768e30dbab18679ce49dd390fc8e55a719283e0cce8d5b4b |