chore(merge): branch 'worktree-improvise-ewi-formula-crate'

Fixes: improvise-ewi
This commit is contained in:
Edward Langley
2026-04-15 03:02:14 -07:00
8 changed files with 35 additions and 9 deletions

View File

@ -1,8 +1,10 @@
# Repository Map (LLM Reference)
Terminal pivot-table modeling app. Rust, Ratatui TUI, command/effect architecture.
Crate `improvise` v0.1.0-rc2, Apache-2.0, edition 2024.
Cargo workspace, Apache-2.0, edition 2024. Root package `improvise` v0.1.0-rc2.
Library + binary crate: `src/lib.rs` exports public modules, `src/main.rs` is the CLI entry.
Sub-crates live under `crates/`:
- `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;`.
---
@ -153,7 +155,7 @@ pub enum CategoryKind { Regular, VirtualIndex, VirtualDim, VirtualMeasure, Label
### Formula System
```rust
// src/formula/ast.rs
// crates/improvise-formula/src/ast.rs
pub enum Expr {
Number(f64),
Ref(String), // reference to an item name
@ -172,7 +174,7 @@ pub struct Formula {
pub filter: Option<Filter>, // WHERE clause
}
// src/formula/parser.rs
// crates/improvise-formula/src/parser.rs
pub fn parse_formula(raw: &str, target_category: &str) -> Result<Formula>
```
@ -383,11 +385,11 @@ Lines / tests / path — grouped by layer.
6 / 0t model/mod.rs
```
### Formula layer
### Formula layer (sub-crate `improvise-formula` under `crates/`)
```
461 / 29t formula/parser.rs Recursive descent parser → Formula AST
77 / 0t formula/ast.rs Expr, BinOp, AggFunc, Formula, Filter (data only)
5 / 0t formula/mod.rs
776 / 35t crates/improvise-formula/src/parser.rs Recursive descent parser → Formula AST
77 / 0t crates/improvise-formula/src/ast.rs Expr, BinOp, AggFunc, Formula, Filter (data only)
5 / 0t crates/improvise-formula/src/lib.rs
```
### View layer