An extension of the mkdocs-simple-plugin that adds syntax for including content from other files http://studioinfinity.org/semiliterate
Go to file
Glen Whitney 9d75fefb81
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
feat: Add extract_on_copy option
Previously, mkdocs_semiliterate would always attempt to extract documentation
  from a file, even if it matched the `include_extensions` pattern for files to
  be copied to the documentation site verbatim.

  Now, by default, such files are not considered candidates for extraction,
  even if they match a semiliterate pattern.

  Adds a configuration option `extract_on_copy` which can be set to `true` to
  restore the prior behavior. Also adds tests for the behavior with and without
  `extract_on_copy` and makes all `mkdocs build` commands in the tests strict,
  which they always should have been.

  Resolves #17.
2022-07-12 12:14:41 -07:00
assets feat: Add extract_on_copy option 2022-07-12 12:14:41 -07:00
mkdocs_semiliterate feat: Add extract_on_copy option 2022-07-12 12:14:41 -07:00
tests feat: Add extract_on_copy option 2022-07-12 12:14:41 -07:00
.drone.yml doc: Add a note about publishing to PyPI 2021-08-24 15:47:33 -07:00
.gitignore feat: Implement double-quoted filename features. (#13) 2021-02-12 17:11:07 +00:00
LICENSE Initial commit 2021-01-08 04:10:06 +00:00
mkdocs.yml feat: Add extract_on_copy option 2022-07-12 12:14:41 -07:00
pyproject.toml chore: initialize setuptools project 2021-01-07 22:39:40 -08:00
README.md feat: Add extract_on_copy option 2022-07-12 12:14:41 -07:00
setup.cfg feat: Add extract_on_copy option 2022-07-12 12:14:41 -07:00

Dreaming of integrated documentation MkDocs semiliterate Plugin

This plugin for MkDocs is an extension of Allison Thackston's excellent mkdocs-simple-plugin. It allows you to include content from one file into another (via {! ... !} syntax), using exactly the same extraction specification that the simple plugin already uses for identifying documentation in source files.

Rationale

Time and trends have not validated Knuth's original vision of "literate programming" as a mainstream practice. Nevertheless, there remain significant advantages to incorporating all documentation, including user-guide-style narrative, into the source code for a project. These advantages include ease of maintenance and synchronization of code and documentation, and opportunities to make the ensemble of your code and documentation more DRY. Thus, it's worth using a "semiliterate" programming style, in which

  • code is arranged as dictated by best software engineering practices
  • documentation is co-located in the same files next to the implementing code
  • and tools are provided for extracting and assembling that documentation into readable form.

*[DRY]: Don't Repeat Yourself -- a coding philosophy of creating a single authoritative location for each piece of information.

The simple plugin goes a long way toward creating a semiliterate programming environment. However, in creating narrative documentation, it's very useful to be able to quote or incorporate content --- whether that be documentation blocks or code examples or code that itself serves as documentation to avoid repeating information --- from one file into another. To satisfy that need, this semiliterate plugin extends (i.e, literally inherits from) the simple plugin and adds a syntax for such inclusion.

With a few other small ease-of-use tweaks (documented in the Usage section), this extended plugin aims to produce a lightweight but comprehensive semiliterate programming environment. The documentation site is, of course, produced by MkDocs using the semiliterate plugin.

Installation

The mkdocs-semiliterate package which provides the semiliterate plugin for MkDocs is available via PyPI:

python3 -m pip install mkdocs-semiliterate

or of course if your pip is already set up to use a Python 3.5 (or later) installation, just

pip install mkdocs-semiliterate

License and Acknowledgments

This software is licensed under Apache 2.0. Icons8 provided the icon.