Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is the biggest refactoring in a long time. This address several issues with the API that have been bothing me.
All nodes were created with basically the same interface, that always required a document. Now constructors are much more simple for most of them that do not need a document. For the handful that still do, these can only be created from the document itself to prevent the need to pass the Document around separately.
Since nodes that require an owner (such as a Document or Family) can only be created through these entities it will greatly improve strategies for caching where changed occur after the document is initially loaded. I haven't heavily jumped into this teritory, but it will have to happen soon.
Families are now structures correctly with ChildNode, HusbandNode and WifeNode rather than trying to step around these. Apart from being closer to the GEDCOM structure this also make it easier to build families programamtically without awkwardly moving pointers around as values.
Nodes is a new type for []Node.
Other more minor changes such as deleting nodes and correctly mapping documents when duplicating nodes.
This change is