Sphinx extension for TypeScript documentation using Tree-sitter
Project description
TypeScript Sphinx Extension
A Sphinx extension that provides autodoc-like functionality for TypeScript files using Tree-sitter for parsing. This extension allows you to automatically generate documentation for TypeScript classes, interfaces, and variables from your source code, similar to Python's autodoc.
Features
- Automatic Documentation Generation: Extract documentation from TypeScript source files
- JSDoc Support: Parse and render JSDoc comments as reStructuredText
- Multiple Directives: Support for
ts:autoclass,ts:autointerface,ts:autoenum, andts:autodata - Tree-sitter Parsing: Robust TypeScript parsing using Tree-sitter
- Sphinx Integration: Full integration with Sphinx's cross-referencing and indexing systems
- Type Information: Display TypeScript type annotations and signatures
Installation
This project uses uv for package management.
Install from Source
git clone https://github.com/yourusername/ts-sphinx.git
cd ts-sphinx
uv sync
Configuration
Add the extension to your Sphinx conf.py:
extensions = [
'sphinx_ts',
# other extensions...
]
# TypeScript Sphinx configuration
sphinx_ts_src_dirs = ['src', 'lib'] # Directories to scan for TypeScript files
sphinx_ts_exclude_patterns = ['**/*.test.ts', '**/*.spec.ts'] # Files to exclude
sphinx_ts_include_private = False # Include private members
sphinx_ts_include_inherited = True # Include inherited members
# Source linking configuration
sphinx_ts_show_source_links = True # Show links to source code
sphinx_ts_source_base_url = 'https://github.com/yourusername/yourproject' # Base URL for source links
sphinx_ts_source_branch = 'main' # Git branch to link to
# Or use a custom URL template:
# sphinx_ts_source_url_template = 'https://github.com/user/repo/blob/{branch}/{path}'
Usage
Available Directives
ts:autoclass
Automatically document a TypeScript class:
.. ts:autoclass:: MyClass
:members:
:undoc-members:
:show-inheritance:
ts:autointerface
Automatically document a TypeScript interface:
.. ts:autointerface:: MyInterface
:members:
:undoc-members:
ts:autoenum
Automatically document a TypeScript enum:
.. ts:autoenum:: MyEnum
:members:
:undoc-members:
ts:autodata
Automatically document TypeScript variables and constants:
.. ts:autodata:: myVariable
.. ts:autodata:: MY_CONSTANT
Directive Options
All auto-directives support the following options:
:members:- Include all members:undoc-members:- Include members without documentation:show-inheritance:- Show inheritance relationships (classes only):member-order:- Order of members (alphabetical,groupwise, orbysource):exclude-members:- Comma-separated list of members to exclude:private-members:- Include private members:special-members:- Include special members:no-index:- Don't add to the general index
Cross-References
The extension provides several roles for cross-referencing:
:ts:class:`MyClass`
:ts:interface:`MyInterface`
:ts:enum:`MyEnum`
:ts:prop:`MyClass.myProperty`
JSDoc Support
The extension supports standard JSDoc tags:
@param {type} name description- Parameter documentation@returns descriptionor@return description- Return value documentation@example- Code examples@since version- Version information@deprecated message- Deprecation notices- Custom tags are also preserved
Advanced Features
Type Information
The extension automatically extracts and displays:
- Parameter types and default values
- Return types
- Property types
- Generic type parameters
- Union and intersection types
Inheritance
For classes, the extension shows:
- Base class inheritance
- Implemented interfaces
- Inherited methods and properties
Source Links
Each documented item includes a reference to its source file for easy navigation. Configure source linking with:
# In conf.py
sphinx_ts_show_source_links = True # Enable source links (default: True)
sphinx_ts_source_base_url = 'https://github.com/yourusername/yourproject' # Base repository URL
sphinx_ts_source_branch = 'main' # Git branch to link to (default: 'main')
# Or use a custom URL template for more control:
sphinx_ts_source_url_template = 'https://github.com/{user}/{repo}/blob/{branch}/{path}'
Source links will automatically include line numbers when available, linking directly to the specific location where each class, interface, enum, or function is defined.
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 sphinx_ts-0.4.0.tar.gz.
File metadata
- Download URL: sphinx_ts-0.4.0.tar.gz
- Upload date:
- Size: 30.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.8.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27e67e5b8f530c42fa87082c47b62a58fccf5ef1dc1c6ca8a1044806f987f036
|
|
| MD5 |
dcd47ca63df5d2507d8adcafc8a0af4d
|
|
| BLAKE2b-256 |
9fd778389e4526ae2c4772cc0c4900b3499de5f0b4f156d7a0c506e978099d3a
|
File details
Details for the file sphinx_ts-0.4.0-py3-none-any.whl.
File metadata
- Download URL: sphinx_ts-0.4.0-py3-none-any.whl
- Upload date:
- Size: 38.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.8.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06c980427a27dddf01aedfaa4b09679efb1b9fc99a171176b7a7e3a90cfbb22a
|
|
| MD5 |
333f0d476f0d60ddec936beed2084a39
|
|
| BLAKE2b-256 |
185d092c106f4a102e1e85cb9873fd82848bfc63c9a6b309a81d4c466e4bd525
|