more ReprTree refactoring

- <Vec Char>  ~>  <Vec ReprTree>  packing/unpacking
- remove Arc<RwLock<>> around EditTree
- gentle ListEditor update
- reactivate PosInt example
This commit is contained in:
Michael Sippel 2025-01-02 12:35:13 +01:00
parent 26186b3375
commit 47dd4ce747
Signed by: senvas
GPG key ID: F96CF119C34B64A6
20 changed files with 564 additions and 508 deletions
examples/tty-06-lines/src

View file

@ -148,7 +148,7 @@ impl LineEditor {
ctx.clone(),
Context::parse(&ctx, "<List Char>")
);
let chars_seg_seq = ListSegmentSequence::new(chars_edit.get_cursor_port(), chars_edit.get_data_port())
let chars_seg_seq = ListSegmentSequence::new(chars_edit.get_cursor_port(), chars_edit.get_edittree_seq() )
.read().unwrap().get_view();
let out_port = ViewPort::new();
@ -234,7 +234,7 @@ impl LinesEditor {
let lines_segments = nested::editors::list::ListSegmentSequence::new(
list_edit.get_cursor_port(),
list_edit.get_data_port()
list_edit.get_edittree_seq()
).read().unwrap().get_view();
let lines_view = lines_segments
.map({
@ -284,7 +284,6 @@ impl LinesEditor {
let chars_rt = self.make_line(line_value);
let chars_edittree = chars_rt
.descend(Context::parse(&self.ctx, "EditTree")).unwrap()
.edittree(&self.ctx).get()
.read().unwrap().clone();
@ -303,19 +302,24 @@ impl LinesEditor {
ReprLeaf::from_view( line_port )
);
let mut le_rt = ReprTree::from_singleton_buffer(
Context::parse(&self.ctx, "EditTree"),
SingletonBuffer::new( Arc::new(RwLock::new(line_edittree)) )
);
le_rt.write().unwrap().set_halo(Context::parse(&self.ctx, "Line"));
le_rt = ReprTree::rise(le_rt);
self.edit.write().unwrap()
.get_edit::< ListEditor >().unwrap()
.write().unwrap()
.data
.push( Arc::new(RwLock::new(line_edittree)) );
.push( le_rt );
}
pub fn make_line(&self, line_value: &str) -> Arc<RwLock<ReprTree>> {
let ctx = &self.ctx;
let mut rt_line = ReprTree::from_str(
Context::parse(&ctx, "<List Char>~<Vec Char>"),
line_value
);
let mut rt_line = ReprTree::from_str(line_value);
rt_line.write().unwrap().set_halo(Context::parse(&ctx, "<List Char>~<Vec Char>"));
// create Editor & transfer data to Editor
ctx.read().unwrap().apply_morphism(