https://github.com/upvalue/litsdoc
literate programming tool using tree-sitter
https://github.com/upvalue/litsdoc
Last synced: 4 months ago
JSON representation
literate programming tool using tree-sitter
- Host: GitHub
- URL: https://github.com/upvalue/litsdoc
- Owner: upvalue
- Created: 2025-09-24T20:31:59.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-09-24T21:18:26.000Z (9 months ago)
- Last Synced: 2025-10-09T05:16:23.608Z (8 months ago)
- Language: HTML
- Homepage:
- Size: 136 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# litsdoc
This is a tool that allows you to generate literate programming documentation for your code. It uses
tree-sitter to parse most source code and reliably find comments.
It's 99.9% vibe coded so approach with caution.
It's an inverted tool -> You write markdown in comments in code files, invoke the tool with the
order you want to process files in, and then you get an HTML file with markdown comments on the left
and syntax highlighted code on the right.
You can see an example of the tool running on itself at
[litsdoc.html](https://upvalue.github.io/litsdoc/litsdoc.html)
# Supported languages
The `LANGUAGE_MAP` and `SHIKI_LANGUAGE_MAP` at the top control language support.
Currently supported languages:
- C
- .ld Linker scripts
- JavaScript & TypeScript
- Rust
# How to invoke
> ./litsdoc.ts tests/c/hello-world.c tests/c/indentation-test.c -o docs.html
The files will be processed in the order given
One additional useful option is `--code-url` -- this will link source files with code-url as the
prefix, so it can be set to e.g. a GitHub repository to view the source directly.
Since you might want to use it over and over again, you can put these arguments into an argfile and
then invoke with `--argfile` to get the arguments from that file, ex:
> ./litsdoc.ts --argfile self-doc.argfile
to generate `litsdoc.html`.
Use
> ./litsdoc.ts --help
To see all the options.
# How to "install"
Since it's a Deno script, it just needs to be placed in a directory along with `deno.json` and
`deno.lock` to handle dependencies. To "install", put it somewhere and then alias or symlink it to
something memorable instead of `litsdoc.ts`. I use `,litsdoc`