All Projects → wpilibsuite → sphinxext-rediraffe

wpilibsuite / sphinxext-rediraffe

Licence: MIT license
Sphinx extension to redirect files

Programming Languages

python
139335 projects - #7 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to sphinxext-rediraffe

sphinx-toolbox
Box of handy tools for Sphinx 🧰 📔
Stars: ✭ 55 (+103.7%)
Mutual labels:  sphinx-extension
emojicodes
An extension to use emoji codes in your Sphinx documentation! 😍
Stars: ✭ 39 (+44.44%)
Mutual labels:  sphinx-extension
openapi
OpenAPI (fka Swagger) spec renderer for Sphinx.
Stars: ✭ 78 (+188.89%)
Mutual labels:  sphinx-extension
restbuilder
A Sphinx builder/writer to output reStructuredText (rst) files
Stars: ✭ 25 (-7.41%)
Mutual labels:  sphinx-extension
autodoc pydantic
Seamlessly integrate pydantic models in your Sphinx documentation.
Stars: ✭ 60 (+122.22%)
Mutual labels:  sphinx-extension
matlabdomain
A Sphinx extension for documenting Matlab code
Stars: ✭ 34 (+25.93%)
Mutual labels:  sphinx-extension
autoprogram
Documenting CLI programs
Stars: ✭ 37 (+37.04%)
Mutual labels:  sphinx-extension
sphinxcontrib-django
This is a sphinx extension which improves the documentation of Django apps.
Stars: ✭ 37 (+37.04%)
Mutual labels:  sphinx-extension
readthedocs-sphinx-search
Enable search-as-you-type feature for docs hosted by RTD.
Stars: ✭ 24 (-11.11%)
Mutual labels:  sphinx-extension
sphinxext-opengraph
Sphinx extension to generate unique OpenGraph metadata
Stars: ✭ 29 (+7.41%)
Mutual labels:  sphinx-extension
sphinxcontrib-programoutput
Sphinx extension for capturing program output
Stars: ✭ 29 (+7.41%)
Mutual labels:  sphinx-extension
sphinxcontrib-jupyter
A Sphinx Extension for Generating Jupyter Notebooks
Stars: ✭ 72 (+166.67%)
Mutual labels:  sphinx-extension
sphinx-prompt
Sphinx directive to add unselectable prompt
Stars: ✭ 39 (+44.44%)
Mutual labels:  sphinx-extension
sphinxcontrib-hdl-diagrams
Sphinx Extension which generates various types of diagrams from Verilog code.
Stars: ✭ 37 (+37.04%)
Mutual labels:  sphinx-extension
sphinx-traceability-extension
Traceability extension for Sphinx documentation generator
Stars: ✭ 24 (-11.11%)
Mutual labels:  sphinx-extension
sphinx-codeautolink
Automatic links from code examples to reference documentation
Stars: ✭ 41 (+51.85%)
Mutual labels:  sphinx-extension
sphinx rtd dark mode
Adds a toggleable dark mode to the Read the Docs theme for Sphinx.
Stars: ✭ 29 (+7.41%)
Mutual labels:  sphinx-extension
sphinx-substitution-extensions
Extensions for Sphinx which allow substitutions
Stars: ✭ 32 (+18.52%)
Mutual labels:  sphinx-extension
sphinx-revealjs
Presentation builder for Pythonista
Stars: ✭ 56 (+107.41%)
Mutual labels:  sphinx-extension
sphinx-wavedrom
A sphinx extension that allows including wavedrom diagrams by using its text-based representation
Stars: ✭ 26 (-3.7%)
Mutual labels:  sphinx-extension

sphinxext-rediraffe

ci Code style: black

Sphinx Extension to redirect files

Rediraffe

This sphinx extension redirects non-existent pages to working pages. Rediraffe can also check that deleted/renamed files in your git repo are redirected.

Rediraffe creates a graph of all specified redirects and traverses it to point all internal urls to leaf urls. This means that chained redirects will be resolved. For example, if a config has 6 chained redirects, all 6 links will redirect directly to the final link. The end user will never experience more than 1 redirection.

Note: Rediraffe supports the html and dirhtml builders.

Installation

python -m pip install sphinxext-rediraffe

Usage

Add sphinxext.rediraffe to your extensions list in your conf.py

extensions = [
   "sphinxext.rediraffe",
]

Set rediraffe_redirects to a dict or file of redirects in your conf.py

Diff Checker

The diff checker ensures that deleted/renamed files in your git repo are in your redirects.

To run the diff checker,

  1. Set rediraffe_branch and rediraffe_redirects in conf.py.
  2. Run the rediraffecheckdiff builder.

Auto Redirect builder

The auto redirect builder can be used to automatically add renamed files to your redirects file. Simply run the rediraffewritediff builder.

To run the auto redirecter:

  1. Set rediraffe_branch and rediraffe_redirects in conf.py.
  2. Run the rediraffewritediff builder.

Note: The auto redirect builder only works with a configuration file. Note: Deleted files cannot be added to your redirects file automatically.

Options

These values are placed in the conf.py of your sphinx project.

  • rediraffe_branch

    • Required for the rediraffecheckdiff and rediraffewritediff builders. The branch or commit to diff against.
  • rediraffe_redirects

    • Required. A filename or dict containing redirects
  • rediraffe_template

    • Optional. A jinja template to use to render the inserted redirecting files. If not specified, a default template will be used. This template will only be accessed after the html/htmldir builder is finished; Therefore, this file may be generated as part of your build.
    • variables available to rediraffe_template:
      • from_file - the file being redirected as written in rediraffe_redirects.
      • to_file - the destination file that from_file is redirected to as written in rediraffe_redirects.
      • from_url - the path to from_url's html file (built by rediraffe) relative to the outdir.
      • to_url - the path to to_url's built html file relative to the outdir.
      • rel_url - the relative path from from_url to to_url.
  • rediraffe_auto_redirect_perc

    • Optional. Only used by the rediraffewritediff builder. The percentage as an integer representing the accuracy required before auto redirecting with the rediraffewritediff builder. The default is 100.

Example Config

redirects only (file)

conf.py:

rediraffe_redirects = "redirects.txt"

redirects.txt:

# comments start with "#"
"another file.rst" index.rst
another2.rst 'another file.rst'

Note: Filepaths can be wrapped in quotes (single or double). This is especially useful for filepaths containing spaces.

redirects only (dict)

conf.py:

rediraffe_redirects = {
    "another.rst": "index.rst",
    "another2.rst": "another.rst",
}

redirects + diff checker

conf.py:

rediraffe_redirects = "redirects.txt"
rediraffe_branch = "main~1"

redirects with jinja template

conf.py:

rediraffe_redirects = "redirects.txt"
rediraffe_template = "template.html"

template.html:

<html>
    <body>
        <p>Your destination is {{to_url}}</p>
    </body>
</html>

A complex example can be found at tests/roots/ext/.

Testing

Rediraffe uses pytest for testing. To run tests:

  1. Install this package
  2. Install test dependencies
    python -m pip install -r test-requirements.txt
  3. Navigate to the tests directory and run
    python -m pytest --headless

The --headless flag ensures that a browser window does not open during browser backed selenium testing.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].