From 3088f241c8c2d63c3557c608134687a71fc29b39 Mon Sep 17 00:00:00 2001 From: Dzmitry Antonenka Date: Tue, 5 Sep 2023 00:56:46 +0300 Subject: [PATCH] feat(core): update readme --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index deb44f5..34c9125 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,17 @@ Add/Insert/Delete - quick helper methods: addItems(items, itemChildren: { $0.subitems }, to: listTreeDataSource) ``` +Fold (inorder traversal + map into final result): +Use case: changes were made and we need final tree. FO +``` +let folded = listTreeDataSource.fold(NodeTestItem.init) { item, subitems in + NodeTestItem(identifier: item.identifier, title: item.title, subitems: subitems) +} + +Or Fold with Identity (when element already hierarchical item): +let folded = sut.fold({ $0 }) { root, _ in root } +``` + Add/Insert/Delete/Move - More grannular control: ``` // Append: @@ -63,8 +74,9 @@ listTreeDataSource.delete([itemToDelete]) // Move: // E.g. user drags `existingNode` into `newParent` subitems with 0 index. -// existingNode = listTreeDataSource.items[sourceIdx] +// existingNode = listTreeDataSource.items[sourceIdx]; // newParent = listTreeDataSource.items[dropParentIdx]; +// toIndex = drop index in newParent; listTreeDataSource.move(existingNode, toIndex: 0, inParent: newParent) // NOTE: Reload data source at the end of changes.