Skip to main content
https://img.shields.io/pypi/v/sphinx-lua.svg https://img.shields.io/pypi/pyversions/sphinx-lua.svg

A lua-autodoc tool for Sphinx. Generate a beautiful sphinx doc using lua doc comment.

It use emmylua as primary doc syntax but it is also compatible with some ldoc tags.

Installation

$ pip install sphinx-lua

Dependencies:

  • Jinja2 (to render rst template)

  • luadoc (to parse lua comments)

  • sphinxcontrib-luadomain (to add lua domain to sphinx)

Sphinx integration

Add the following to your conf.py:

extensions = [
    'sphinxcontrib.luadomain',
    'sphinx_lua'
    ]

# Available options and default values
lua_source_path = ["./"]
lua_source_encoding = 'utf8'
lua_source_comment_prefix = '---'
lua_source_use_emmy_lua_syntax = True
lua_source_private_prefix = '_'

The lua_source_path configuration value tells to sphinx-lua where to find lua source code.

With above configuration, if main.lua is located in ../src/lua/main.lua, and it’s content is:

--- Define a car.
--- @class MyOrg.Car
local cls = class()

--- @param foo number
function cls:test(foo)
end

You can autodoc it in sphinx with the following directive:

.. lua:autoclass:: MyOrg.Car

Troubleshooting

Sphinx-lua use the documentation model extracted from luadoc (https://github.com/boolangery/py-lua-doc)

So you can print this model out using the command line tool:

$ luadoc ../src/lua/my_problematic_source_file.lua

Available sphinx directives

The following directives are available:

.. lua:autoclass:: pl.List

.. lua:automodule:: pl.stringx

.. lua:autoclasssummary:: ^pl.

.. lua:autoalias:: SourceFn

automodule also accepts a regex, documenting every matching module in one call, which is handy to generate the whole documentation for everything found in lua_source_path:

.. lua:automodule:: .*

@alias tags are rendered as lua:alias directives (either standalone via autoalias, or automatically as part of automodule’s output), and any @param/@return/@field referencing an alias or class by name is turned into a link to its definition:

---@alias SourceFn fun():string|nil,string|nil

---@param callback SourceFn
local function some_function(callback)
end

A method whose name is a known Lua metamethod (__index, __eq, __call, etc., per the Lua 5.4 manual) is automatically rendered with lua:metamethod instead of lua:method:

---Compare two instances for equality.
---@param self Class
---@param other Class
---@return boolean
function cls.__eq(self, other)
end

Markdown-style fenced code blocks (as commonly used in EmmyLua doc comments) in descriptions are rendered as proper, syntax-highlighted code blocks:

---Returns 16-bit color.
---
---Example:
---```lua
---local color = display.color565(255, 0, 0)
---```
function display.color565(r, g, b) end

You can also use directive provided by sphinxcontrib.luadomain:

https://github.com/boolangery/sphinx-luadomain#available-sphinx-directives

Showing original source code

You can display method source code appending the flag show-source:

.. lua:autoclass:: pl.List
    :show-source:

Showing private members

By default, private members are hidden. You can display them by using the flag private-members:

.. lua:autoclass:: pl.List
    :private-members:

Metadata

Release files for sphinx-lua 1.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sphinx-lua 1.2.1
File Size Uploaded
sphinx_lua-1.2.1.tar.gz 25.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sphinx-lua 1.2.1
File Interpreter ABI Platform
sphinx_lua-1.2.1-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 51.0 kB

Release files / sphinx_lua-1.2.1.tar.gz

Download URL sphinx_lua-1.2.1.tar.gz
Size 25.0 kB
Tags Source
SHA-256 checksum
How to use checksums
7032630c655043e0a20cee48ad14327284337956ff12dbb109d5c4d6b8032139
BLAKE2b-256 checksum
How to use checksums
6b81be184c43d8aad76b5c2cd13d487cf583926eaba48f24927adfb793387d07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.12.14

Release files / sphinx_lua-1.2.1-py2.py3-none-any.whl

Download URL sphinx_lua-1.2.1-py2.py3-none-any.whl
Size 26.0 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
ba7e9151483cc6a4db86341891cc39a4c575bbe04d21799e0a852a7b6ae22841
BLAKE2b-256 checksum
How to use checksums
854cdec9291a3159ca8b3a603acfaa73eb97519707da15e4ee6584466ffd7a2d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.12.14

Release history Release notifications | RSS feed

This release

1.2.1 This release

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.1

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page