30467600bc
Front-door limpio: solo crates del dominio; Llimphi y lo fundacional por git-dep del monorepo gioser.git. cargo check pasa (40 crates, 0 errores). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
817 B
817 B
pluma-editor-cuerpo
Editor texto ↔ átomos con diff (greedy) para pluma.
EditorCuerpo { texto, atom_ids }. from_cuerpo(c, atoms) concatena con SEPARADOR = "\n\n". parrafos() recupera el split actual. diff(atoms_originales) -> Vec<CambioAtom> con greedy por contenido: párrafos que coinciden se saltan, los que difieren emiten Mutar reusando el Uuid (hebras vivas), sobrantes emiten Crear o Eliminar. aplicar_cambios(cambios, nuevos_ids) extiende/remueve el atom_ids tras persistir.
API
use pluma_editor_cuerpo::EditorCuerpo;
let mut e = EditorCuerpo::from_cuerpo(&c, &atoms);
e.set_texto(nuevo);
let cambios = e.diff(&atoms_originales);
Deps
pluma-core,pluma-cuerposerde,uuid