From fc9d9cb52a6791ae3895bd0ecb7fa30400d35493 Mon Sep 17 00:00:00 2001 From: Edward Langley Date: Wed, 15 Apr 2026 22:31:42 -0700 Subject: [PATCH] refactor(core): move model, view, workbook, format into improvise-core MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Relocate the four pure-data module trees into the improvise-core sub-crate scaffolded in the previous commit. Phase A already made these modules UI/IO-free; this commit is purely mechanical: git mv src/format.rs -> crates/improvise-core/src/format.rs git mv src/workbook.rs -> crates/improvise-core/src/workbook.rs git mv src/model -> crates/improvise-core/src/model git mv src/view -> crates/improvise-core/src/view The moved code contains no path edits: the `crate::formula::*`, `crate::model::*`, `crate::view::*`, `crate::workbook::*`, `crate::format::*` imports inside the four trees all continue to resolve because the new crate mirrors the same module layout and re-exports improvise_formula under `formula` via its lib.rs. Main-crate `src/lib.rs` flips from declaring these as owned modules (`pub mod model;` etc.) to re-exporting them from improvise-core (`pub use improvise_core::model;` etc.). This keeps every `crate::model::*`, `crate::view::*`, `crate::workbook::*`, `crate::format::*` path inside the 26 consumer files in src/ (ui, command, persistence, import, draw, main) resolving unchanged — no downstream edits needed. Verification: - cargo check --workspace: clean - cargo test --workspace: 612 passing (357 main + 190 core + 65 formula) - cargo clippy --workspace --tests: clean - cargo build -p improvise-core: standalone build succeeds, confirming zero UI/IO leakage into the core crate Co-Authored-By: Claude Opus 4.6 (1M context) --- {src => crates/improvise-core/src}/format.rs | 0 crates/improvise-core/src/lib.rs | 8 +++++++- {src => crates/improvise-core/src}/model/category.rs | 0 {src => crates/improvise-core/src}/model/cell.rs | 0 {src => crates/improvise-core/src}/model/mod.rs | 0 {src => crates/improvise-core/src}/model/symbol.rs | 0 {src => crates/improvise-core/src}/model/types.rs | 0 {src => crates/improvise-core/src}/view/axis.rs | 0 {src => crates/improvise-core/src}/view/layout.rs | 0 {src => crates/improvise-core/src}/view/mod.rs | 0 {src => crates/improvise-core/src}/view/types.rs | 0 {src => crates/improvise-core/src}/workbook.rs | 0 src/lib.rs | 8 ++++---- 13 files changed, 11 insertions(+), 5 deletions(-) rename {src => crates/improvise-core/src}/format.rs (100%) rename {src => crates/improvise-core/src}/model/category.rs (100%) rename {src => crates/improvise-core/src}/model/cell.rs (100%) rename {src => crates/improvise-core/src}/model/mod.rs (100%) rename {src => crates/improvise-core/src}/model/symbol.rs (100%) rename {src => crates/improvise-core/src}/model/types.rs (100%) rename {src => crates/improvise-core/src}/view/axis.rs (100%) rename {src => crates/improvise-core/src}/view/layout.rs (100%) rename {src => crates/improvise-core/src}/view/mod.rs (100%) rename {src => crates/improvise-core/src}/view/types.rs (100%) rename {src => crates/improvise-core/src}/workbook.rs (100%) diff --git a/src/format.rs b/crates/improvise-core/src/format.rs similarity index 100% rename from src/format.rs rename to crates/improvise-core/src/format.rs diff --git a/crates/improvise-core/src/lib.rs b/crates/improvise-core/src/lib.rs index 68364e4..e3366de 100644 --- a/crates/improvise-core/src/lib.rs +++ b/crates/improvise-core/src/lib.rs @@ -2,5 +2,11 @@ //! and number formatting. Depends on `improvise-formula` for AST types; //! has no awareness of UI, I/O, or commands. //! -//! Scaffolded empty in this commit; the modules land in the next commit. +//! Re-exports `improvise_formula` under `formula` so internal code can use +//! `crate::formula::*` paths, mirroring the main crate's convention. pub use improvise_formula as formula; + +pub mod format; +pub mod model; +pub mod view; +pub mod workbook; diff --git a/src/model/category.rs b/crates/improvise-core/src/model/category.rs similarity index 100% rename from src/model/category.rs rename to crates/improvise-core/src/model/category.rs diff --git a/src/model/cell.rs b/crates/improvise-core/src/model/cell.rs similarity index 100% rename from src/model/cell.rs rename to crates/improvise-core/src/model/cell.rs diff --git a/src/model/mod.rs b/crates/improvise-core/src/model/mod.rs similarity index 100% rename from src/model/mod.rs rename to crates/improvise-core/src/model/mod.rs diff --git a/src/model/symbol.rs b/crates/improvise-core/src/model/symbol.rs similarity index 100% rename from src/model/symbol.rs rename to crates/improvise-core/src/model/symbol.rs diff --git a/src/model/types.rs b/crates/improvise-core/src/model/types.rs similarity index 100% rename from src/model/types.rs rename to crates/improvise-core/src/model/types.rs diff --git a/src/view/axis.rs b/crates/improvise-core/src/view/axis.rs similarity index 100% rename from src/view/axis.rs rename to crates/improvise-core/src/view/axis.rs diff --git a/src/view/layout.rs b/crates/improvise-core/src/view/layout.rs similarity index 100% rename from src/view/layout.rs rename to crates/improvise-core/src/view/layout.rs diff --git a/src/view/mod.rs b/crates/improvise-core/src/view/mod.rs similarity index 100% rename from src/view/mod.rs rename to crates/improvise-core/src/view/mod.rs diff --git a/src/view/types.rs b/crates/improvise-core/src/view/types.rs similarity index 100% rename from src/view/types.rs rename to crates/improvise-core/src/view/types.rs diff --git a/src/workbook.rs b/crates/improvise-core/src/workbook.rs similarity index 100% rename from src/workbook.rs rename to crates/improvise-core/src/workbook.rs diff --git a/src/lib.rs b/src/lib.rs index 19986e6..642b696 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,10 +1,10 @@ pub mod command; pub mod draw; -pub mod format; +pub use improvise_core::format; pub use improvise_formula as formula; pub mod import; -pub mod model; +pub use improvise_core::model; pub mod persistence; pub mod ui; -pub mod view; -pub mod workbook; +pub use improvise_core::view; +pub use improvise_core::workbook;