| Crates.io | ascii-fmt |
| lib.rs | ascii-fmt |
| version | 0.1.2 |
| created_at | 2026-01-22 17:38:28.052994+00 |
| updated_at | 2026-01-24 14:38:34.634829+00 |
| description | CLI tool to fix and align ASCII diagrams generated by AI agents |
| homepage | |
| repository | https://github.com/kaifaty/ascii-fmt |
| max_upload_size | |
| id | 2062254 |
| size | 297,531 |
CLI утилита на Rust для пост-обработки ASCII/Unicode диаграмм: нормализует пробелы, выравнивает линии и конвертирует "ASCII-псевдографику" (+ - | / \) в Unicode box-drawing (┌ ─ │ ┼ ╱ ╲).
# Форматировать файл и сохранить результат
ascii-fmt diagram.txt -o diagram_fixed.txt
# Вывести в stdout
ascii-fmt diagram.txt
# Прочитать из stdin
cat diagram.txt | ascii-fmt > diagram_fixed.txt
# Только показать результат (ничего не писать в файл)
ascii-fmt diagram.txt --dry-run
cargo install ascii-fmt
git clone https://github.com/kaifaty/ascii-fmt.git
cd ascii-fmt
cargo install --path .
Опционально: make install (см. make help).
В репозитории есть package.json (npm-обертка). При установке она собирает Rust бинарник локально.
# Внутри репозитория
npm i -g .
Справка CLI: ascii-fmt --help
Команды:
ascii-fmt docs [topic] - встроенная документация (examples, api, integration, file-formats)ascii-fmt opencode-setup [--force] - установить OpenCode plugin в .opencode/plugins/ascii-fmt.js в текущем проектеПолезные опции:
-o, --output <FILE> - записать в файл (по умолчанию stdout)-s, --style <minimal|standard|detailed> - стиль выравнивания текста--dry-run - выводит результат в stdout, не пишет файл-v, --verbose... - подробный вывод--style сейчас влияет только на выравнивание текста: detailed центрирует строки; minimal/standard делают trim() + добивка пробелами до исходной ширины.--width работает как ручной override для ширины сетки (если поставить > 2), иначе ширина определяется автоматически по диаграмме.--preserve-empty-lines=false удаляет пустые/whitespace-only строки из вывода.--fix-box-drawing и --fix-whitespace в CLI включены по умолчанию; отдельного режима "выключить" пока нет.| в │; для .md безопаснее использовать OpenCode plugin (он трогает только отмеченные fenced-блоки).ascii-fmt умеет сгенерировать project-level plugin для OpenCode:
ascii-fmt opencode-setup
# Если нужно перезаписать существующий файл
ascii-fmt opencode-setup --force
Результат: .opencode/plugins/ascii-fmt.js
Поведение плагина (см. scripts/opencode-plugin.js):
ascii, diagram, ascii-diagramЕсли вы ставите пакет через npm и он опубликован, доступен хелпер:
npx ascii-fmt-opencode-setup
(он создаёт .opencode/plugins/ascii-fmt.js, но не перезаписывает существующий файл).
```ascii
┌───┐
│ A │
└───┘
```
Input:
┌─────────────────────────┐
│ API Gateway │
├───────────┬────────────┤
│ User │ Service │
│ Service │ Layer │
└───────────┴────────────┘
|
v
Database
Output:
┌─────────────────────────┐
│ API Gateway │
├─────────────┬───────────┤
│ User │ Service │
│ Service │ Layer │
└─────────────┴───────────┘
│
│
▼
Database
Input:
+-------+ +-------+
| A |------>| B |
+-------+ +-------+
|
v
+-----+
| C |
+-----+
Output:
┌───────┐ ┌───────┐
│ A │──────▶│ B │
└───────┘ └───────┘
│
│
▼
┌─────┐
│ C │
└─────┘
cargo test
cargo fmt
cargo clippy -- -D warnings
См. Makefile (цели build, release, test, fmt, clippy, cross-*, package-*).
MIT, см. LICENSE.