doctin
Version:
Tool that reduces generated ActionScript documentation (ASDOC) to a shallow abstract syntax tree (AST), in JSON format.
103 lines (86 loc) • 2.55 kB
Markdown
# doctin
### (ActionScript) Documentation Thinner
**doctin** is a lightweight CLI tool that extracts a JSON-formatted abstract syntax tree (AST) from static HTML documentation generated by the ActionScript `asdoc` tool. It helps developers parse, audit, or auto-document large ActionScript codebases by reducing noisy HTML into structured, actionable data.
## What It Does
- Parses `asdoc`-generated documentation.
- Extracts class metadata, properties, and methods.
- Includes visibility, type, modifiers, and documentation text.
- Generates:
- One JSON file per class.
- One `contentTree.json` for navigation/indexing.
## Installation
To install globally:
```bash
npm install -g doctin
```
## Usage
```bash
node index.js <asdoc-folder> <astjson-folder> [--clean]
```
### Arguments:
| Argument | Description |
| ------------------ | ---------------------------------------- |
| `<asdoc-folder>` | Path to the folder generated by `asdoc` |
| `<astjson-folder>` | Path to output folder for JSON AST |
| `--clean` | Optional. Clears the output folder first |
## Output Structure
The tool generates:
1. One JSON file per class, e.g.:
```bash
~/my_ast_folder/org/bytearray/display/ScaleBitmap.json
```
2. `contentTree.json` — a lookup tree of all packages and classes:
```json
{
"org.bytearray.display": {
"ScaleBitmap": "org/bytearray/display/ScaleBitmap.json"
}
}
```
## JSON Schema Overview
Each class JSON includes:
```json
{
"name": "ScaleBitmap",
"package": "org.bytearray.display",
"inheritance": [],
"properties": [
{
"name": "bitmapData",
"type": "BitmapData",
"visibility": "public",
"modifiers": ["override", "write-only"],
"hasAsdoc": true,
"asdoc": "setter bitmapData"
}
],
"methods": [
{
"name": "setSize",
"returnType": "void",
"params": [{ "name": "w", "type": "Number" }],
"visibility": "public",
"hasAsdoc": true,
"asdoc": "setSize"
}
]
}
```
This makes it ideal for:
- Re-generating docs in your own format.
- Writing linters or documentation audits.
- Feeding a local LLM for doc autocompletion.
## Development
The codebase uses ES modules. Requires **Node.js 18+**.
Main files:
- `index.js` — CLI entry point.
- `parser.js` — HTML parser logic.
Dependencies:
- `cheerio` for HTML parsing.
- `fs-extra` for robust file I/O.
## 📄 License
**MIT**
## Feedback
Issues and PRs welcome on [GitHub](https://github.com/ciacob/doctin).