docs(io): note improvise-io layout in repo-map

Reflect improvise-8zh: `persistence/` and `import/` now live in the
`improvise-io` sub-crate under `crates/`.

- Sub-crate list expanded to describe improvise-io's scope, its
  dependencies (improvise-core, improvise-formula), and the
  standalone-build guarantee.
- File Inventory reorganized: "Import layer" + persistence entries
  collapsed into a single "I/O crate layers" block with paths rooted at
  `crates/improvise-io/src/`.
- Updated line/test counts to current contents.
- Top-level block trimmed (persistence/format no longer live there) and
  lib.rs annotated as a re-export facade.

No consumer-facing path changes; `crate::persistence::*` and
`crate::import::*` still resolve via the main crate's re-exports.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Edward Langley
2026-04-15 23:08:55 -07:00
parent 5807464fc7
commit ff74d619a3

View File

@ -6,6 +6,7 @@ Library + binary crate: `src/lib.rs` re-exports public modules (many from sub-cr
Sub-crates live under `crates/`: Sub-crates live under `crates/`:
- `crates/improvise-core/` — pure-data core: `Model`, `View`, `Workbook`, and number formatting. Depends on `improvise-formula`. Re-exported from the main crate so `crate::model`, `crate::view`, `crate::workbook`, `crate::format` still resolve everywhere. Has no awareness of UI, I/O, or commands — builds standalone via `cargo build -p improvise-core`. - `crates/improvise-core/` — pure-data core: `Model`, `View`, `Workbook`, and number formatting. Depends on `improvise-formula`. Re-exported from the main crate so `crate::model`, `crate::view`, `crate::workbook`, `crate::format` still resolve everywhere. Has no awareness of UI, I/O, or commands — builds standalone via `cargo build -p improvise-core`.
- `crates/improvise-formula/` — formula parser, AST (`Expr`, `BinOp`, `AggFunc`, `Formula`, `Filter`), `parse_formula`. Re-exported as `crate::formula` from the main crate via `pub use improvise_formula as formula;`. - `crates/improvise-formula/` — formula parser, AST (`Expr`, `BinOp`, `AggFunc`, `Formula`, `Filter`), `parse_formula`. Re-exported as `crate::formula` from the main crate via `pub use improvise_formula as formula;`.
- `crates/improvise-io/``.improv` persistence (parse/format, save/load, CSV export) and import pipeline (CSV/JSON wizard, field analyzer). Depends on `improvise-core` and `improvise-formula`; has no UI or command code. Re-exported from the main crate so `crate::persistence` and `crate::import` still resolve everywhere. Builds standalone via `cargo build -p improvise-io`.
--- ---
@ -453,22 +454,32 @@ command/cmd/ Cmd trait, CmdContext, CmdRegistry, 40+ comma
12 / 0t ui/mod.rs 12 / 0t ui/mod.rs
``` ```
### Import layer ### I/O crate layers (sub-crate `improvise-io` under `crates/`)
All of `persistence/` and `import/` now live under `crates/improvise-io/src/`.
Paths below are relative to that root. The main crate re-exports each
as `crate::persistence` and `crate::import` via `src/lib.rs`, so every
consumer path stays unchanged.
#### Persistence
``` ```
773 / 38t import/wizard.rs ImportPipeline + ImportWizard 124 / 0t persistence/improv.pest PEG grammar — single source of truth for .improv format
292 / 9t import/analyzer.rs Field kind detection (Category/Measure/Time/Skip) 2410 / 83t persistence/mod.rs .improv save/load (pest parser + format + gzip + legacy JSON), export_csv
244 / 8t import/csv_parser.rs CSV parsing, multi-file merge ```
#### Import
```
1117 / 38t import/wizard.rs ImportPipeline + ImportWizard
292 / 9t import/analyzer.rs Field kind detection (Category/Measure/Time/Skip)
300 / 8t import/csv_parser.rs CSV parsing, multi-file merge
3 / 0t import/mod.rs 3 / 0t import/mod.rs
16 / 0t lib.rs Module decls + re-exports of improvise-core/formula modules
``` ```
### Top-level ### Top-level
``` ```
400 / 0t draw.rs TUI event loop (run_tui), frame composition 400 / 0t draw.rs TUI event loop (run_tui), frame composition
391 / 0t main.rs CLI entry (clap): open, import, cmd, script 391 / 0t main.rs CLI entry (clap): open, import, cmd, script
10 / 0t lib.rs Public module exports (enables examples) 10 / 0t lib.rs Public module re-exports (routes to sub-crates)
228 / 29t format.rs Number display formatting (view-only rounding)
124 / 0t persistence/improv.pest PEG grammar — single source of truth for .improv format
2291 / 83t persistence/mod.rs .improv save/load (pest parser + format + gzip + legacy JSON)
``` ```
### Examples ### Examples