Export Godot 4.5 GDScript doc-comments to Markdown.
Project description
gdscript_to_docs
Export Godot 4.x GDScript documentation comments (## blocks) into clean Markdown, Doxygen-style class pages, and optional per-function pages — with BBCode → Markdown conversion and cross-links to referenced classes/methods/signals.
- Parses
##doc comments placed right above the member (as per Godot docs) - Recognizes
func,var,const,signal,enum - Converts BBCode (
[b],[i],[code],[codeblock],[url],[img],[br], etc.) - Renders Doxygen-like class pages (Synopsis, Brief, Detailed, member summaries + detailed sections)
--split-functionsemits one Markdown file per function with full source, file/line range, and a References section that links[method Class.name],[class Class],[signal Class.sig], etc.- Optional classic list style via
--style classic - Optional index
INDEX.mdand single-file bundleDOCUMENTATION.md
Compatible with Windows, macOS, and Linux. Tested on Python 3.12–3.13.
Install
# From PyPI
pip install gdscript-to-docs
# Latest from source (editable)
pip install -e .
Quick Start
From your Godot project root (or any folder containing .gd files):
gdscript_to_docs path/to/project \
--out docs/ \
--make-index \
--split-functions
Windows example (be sure to quote paths with spaces / backslashes):
gdscript_to_docs "\path\to\godot\project" --out ".\docs" --keep-structure --make-index --split-functions
This generates:
docs/
├── INDEX.md
├── Player.md # Class page (Doxygen-style)
└── Player/
└── functions/
├── move.md # Per-function page
└── jump.md
CLI
usage: gdscript_to_docs [-h] [--out OUT] [--keep-structure] [--single-file]
[--make-index] [--glob GLOB]
[--style {doxygen,classic}] [--split-functions]
src
Export Godot GDScript documentation comments to Markdown.
positional arguments:
src Project root (or any folder) to scan for .gd files
options:
-h, --help show this help message and exit
--out OUT Output directory (default: docs_godot)
--keep-structure Mirror source folder structure under output
--single-file Write a single DOCUMENTATION.md instead of per-script files
--make-index Generate an INDEX.md linking all generated files
--glob GLOB Glob pattern for .gd scripts (default: **/*.gd)
--style {doxygen,classic}
Markdown style (default: doxygen)
--split-functions Also generate separate Markdown files for each function
Output style
Doxygen-style class pages (default)
-
ClassName Class Reference
- Synopsis with
class_nameandextends - Brief and Detailed Description
- Public Member Functions/Attributes/Constants/Signals/Enumerations summaries
- Detailed sections (e.g. Member Function Documentation)
Per-function pages (--split-functions)
- Title:
ClassName::method Function Reference - Defined at:
<file>with line range - Signature (code block)
- Decorators (e.g. @export)
- Description (from the ## docblock)
- Source: full function body (code block)
- References: links generated from doc tags like:
[method Class.foo]→ either the per-function page (if split) or class page + anchor[class Foo]→ class page[signal Class.sig],[member Class.var],[constant Class.NAME],[enum Class.Enum]→ class page + anchor
If a target isn’t found in the generated docs, it’s rendered as plain text to avoid broken links.
BBCode → Markdown
Supported: [b], [i], [u], [code], [codeblock], [url], [img], [br], plus Godot doc refs:
[method …], [member …], [signal …], [constant …], [enum …], [class …].
Example:
## Moves the player.
## [b]Use with care[/b]. [method CharacterBody2D.move_and_slide]
func move(delta: float) -> void:
pass
Renders to:
- Summary bullet:
func move(delta: float) -> void — Use with care. - Function page includes the doc text and a References link to
CharacterBody2D::move_and_slide.
Index & single-file bundle
--make-indexwrites anINDEX.mdthat lists class pages and, if split, function pages beneath each class.--single-filewrites aDOCUMENTATION.mdthat concatenates all class pages (helpful for quick review or importing into docs tools).
Known limitations / roadmap
- Multi-line function signatures aren’t yet parsed; signatures are expected on a single line.
- Links to external Godot classes (i.e., not in your project) are rendered as plain labels; you can map those to the online docs in a future --godot-api-links option.
- Anchors for members use a conservative GitHub-style ID; if you post-process headers, anchors may change.
Want any of the above? Please open an issue or a PR—contributions welcome!
Development
# Clone and install in editable mode
git clone https://github.com/<YOUR_GH_USER>/<YOUR_REPO>.git
cd <YOUR_REPO>
pip install -e .[dev]
# Run tests
pytest -q --cov --cov-report=term-missing:skip-covered
# Build
python -m pip install build
python -m build # dist/*.whl and dist/*.tar.gz
License
MIT © Phase Line Studios
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gdscript_to_docs-0.1.1.tar.gz.
File metadata
- Download URL: gdscript_to_docs-0.1.1.tar.gz
- Upload date:
- Size: 19.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e60e44cfa16985704460ca0b4ddb05d75180072bfaae2086d643d96cde236d6
|
|
| MD5 |
a0ae87c646119e06a87a01eabb759b89
|
|
| BLAKE2b-256 |
6a1712d41fdced4422cdb665ff57684e8eca00c80da1c8a2edc95ecc4491a1a7
|
File details
Details for the file gdscript_to_docs-0.1.1-py3-none-any.whl.
File metadata
- Download URL: gdscript_to_docs-0.1.1-py3-none-any.whl
- Upload date:
- Size: 15.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b05cce9d14ba37577cd7af4f622babdd2523154e02219d21bdfccc22432a3ff4
|
|
| MD5 |
299a7eee020fe1b8efe4d1e43706f6ae
|
|
| BLAKE2b-256 |
eaa20b7047eac9359a16f8ba8e3e7146bc473c8d58173b168a108dd3ced3e3c9
|