Skip to main content

Sphinx extension to handle Visual Basic Domain.

Project description

sphinx-vb-domain

≫日本語版

Overview

Sphinx extension to handle Visual Basic function directive, and also create the directives from document comments in VB source code.

This project is really experimental. Only features below are working but without any assurance.

Installation

pip

pip install sphinx-vb-domain

rye

rye add --dev sphinx-vb-domain

Usage

conf.py

Add it to extensions.

# conf.py

extensions = [
    'sphinx_vb_domain',
]

Function directive

For example.

.. vb:function:: Private Function getId(ByVal name As String, ByVal age As Integer) As Integer
   :module: Module1

   A simple private function.

   :param name: Name
   :type name: String
   :param age: Age
   :type age: Integer
   :returns: Id
   :rtype: Integer

   Remarks here.

Configuration

The following settings can be used in conf.py.

vb_add_function_labels

vb_add_function_labels = False  # Default: True

Setting to False disables adding target labels to function directives.
If you are using sphinx.ext.autosectionlabel, you may set this to False.
However, labels in sphinx-vb-domain take the form {module_name}.{function_name}, so if multiple modules have functions with the same name, you may take this feature.

vb_encode_invalid_labels

vb_encode_invalid_labels = False  # Default: True

If set to False, function names containing invalid characters for Sphinx target labels will not be hash-encoded.
This setting also applies to explicit labels added to module headings in Autodoc.

vb_add_docname_to_labels

vb_add_docname_to_labels = True  # Default: False

Setting to True adds labels to function directives in the form {filename}-{module_name}.{function_name}, allowing functions with the same name in the same module across multiple files to be distinguished.
This setting also applies to explicit labels added to module headings in Autodoc.

vb_docname_label_delimiter

vb_docname_label_delimiter = '__'  # Default: '-'

vb_add_docname_to_labels sets the delimiter that appears after the filename.
You must specify characters that are valid for Sphinx target labels.
This setting also applies to explicit labels added to module headings in Autodoc.

vb_autodoc_module_labels

vb_autodoc_module_labels = True  # Default: False

Setting to True adds explicit labels to module headings in Autodoc.

Autodoc

To create document from VB document comments, following config is needed.

# conf.py

vb_autodoc_paths = [
    ('vb-src-dir', 'page-path', 'page-title', notes),
]
  • 'vb-src-dir'
    • Path to directory contains VB source, relative from conf.py (e.g. '../../macros').
  • 'page-path'
    • Path to reST file tobe created, relative from Sphinx source directory (e.g. 'modules' will create 'modules.rst').
  • 'page-title'
    • Title (level-1 headline) added to e.g. modules.rst.
  • notes
    • Optional dict to add notes to below targets (dict keys).
      • '__page__': Note to be added under page title.
      • '<Module name>': Note to be added under the module's title.
      • '<Module name>.<Function name>': Note to be added under the function's directive.
    # Example
    # Note: Values can be reST, but you should not use headlines.
    notes = {
        '__page__': 'This is note for the page.',
        'Module1': 'This is note for Module1.',
        'Module1.MyFunction': 'This is note for MyFunction.',
    }
    

Then, run sphinx-build with -D vb_autodoc=1 parameter.

In file at page-path (e.g. 'modules.rst'), Module (level-2 headline) is created per vb file in vb-src-dir, and function directives under the Modules.

Cross-references

When function directives are rendered, they come with a headline so that the directives appear in toctree.
Also, when vb_add_function_labels is set to True (Default), the headline will be a cross-reference target.

reStructuredText

* :vb:function:`module_name.function_name`
* :any:`module_name.function_name`
* :any:`Link text <module_name.function_name>`

MyST

- {vb:function}`module_name.function_name`
- <project:#module_name.function_name>
- [Link text](#module_name.function_name)

Known issues

  • Function directive always rendered in Japanese like follows.
    Private Function getId(ByVal name As String, ByVal age As Integer) As Integer
    
        A simple private function.
    
        パラメータ: ・name (String) -- Name
                    ・age (Integer) -- Age
        戻り値: Id
        戻り値の型: Integer
    
        Remarks here.
    
    • You can change doc_field_types definition of VBFunction class.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sphinx_vb_domain-0.6.0.tar.gz (821.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sphinx_vb_domain-0.6.0-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file sphinx_vb_domain-0.6.0.tar.gz.

File metadata

  • Download URL: sphinx_vb_domain-0.6.0.tar.gz
  • Upload date:
  • Size: 821.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for sphinx_vb_domain-0.6.0.tar.gz
Algorithm Hash digest
SHA256 4030b5ff3e9f1a6c74b692a5f68b7144c3580c893913bdcd0e76e29361dae6c4
MD5 dc9a27388aa3cd5cfdaf1cf78e947b74
BLAKE2b-256 0d59750e2d7ac90606a0b0be8a80ce0d9435a0c9346c143b85e89d5abd86ab15

See more details on using hashes here.

File details

Details for the file sphinx_vb_domain-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for sphinx_vb_domain-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5c301a137363e275de0c87ce8769d483a9e190df8bed360b7dda767d23756f26
MD5 ec405edc0df8d04d895ac036fbfc06b7
BLAKE2b-256 33412be89b34185c5055036f2bf6a81630c472fbb6bf7eaeff4412160d7ad42a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page