refactor(kernels): extract reusable clipboard and matchprop kernels

Publishes app-free domain logic for shared use: match_special_props and PolylineMatchStyle move to entities::match_props; xdict trio usable headlessly; new match_layer, copy_to_clipboard, paste_entities and match_properties kernels over CadDocument. Handlers stay thin shells keeping undo, dirty flags, selection and command-line echo.

Adds cross-document copy, paste and property-match tests plus a headless proof driving copy, paste and match with no app instance.
This commit is contained in:
Karim Jerbi committed 2026-09-24 21:47:14 +01:00
1 parent e4fa5232f6
commit 7052016dce
6 files changed
+1556 -631

No files matched your search

+5 -3
View File
@@ -51,14 +51,16 @@
//! dynamic dimensions, and the constraint-inference entry points
//! (`apply_continuous_constraints`, `apply_inferred_constraints`) shared by
//! the `constraint.rs` arms.
//! - `property_match.rs` — MATCHPROP/LAYMATCH + `match_special_props`.
//! - `property_match.rs` — MATCHPROP/LAYMATCH arms (special-prop kernels live
//! in `crate::entities::match_props`).
//! - `entity_commit.rs` — entity/dimension/hatch/block commit arms.
//! - `solid3d.rs` — extrude/thicken/presspull/revolve/sweep/loft/shell/boolean/slice.
//! - `viewport.rs` — MVIEW/layout/plot/zoom/print arms.
//! - `transform.rs` — MOVE/COPY/ALIGN/STRETCH arms.
//! - `clipboard.rs` — COPYCLIP/PASTECLIP/PASTEORIG/PASTEBLOCK arms,
//! clipboard merge + xdict helpers; re-exports
//! `remap_ext_subtree_reference` for `app::commands::blocks`.
//! `remap_ext_subtree_reference` and `copy_to_clipboard_kernel`
//! for `app::commands::blocks`.
//! - `modify.rs` — LENGTHEN/DIVIDE/MEASURE/PEDIT/JOIN/BREAK/HATCHEDIT arms +
//! `apply_pedit_result`. (Entity BREAK itself delegates to
//! `break_cmd::break_entity`; the DIMBREAK free helpers live in `dim_edit`.)
@@ -92,7 +94,7 @@ mod text_edit;
mod constraint;
mod dim_edit;
pub(crate) use clipboard::remap_ext_subtree_reference;
pub(crate) use clipboard::{copy_to_clipboard_kernel, remap_ext_subtree_reference};
impl OpenCADStudio {
/// Applies one command result, then — when that result ended the active