# 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).