Time for a bit of an interlude. There are a few things I found that don’t work exactly right. Any hidden items need the sources they contain to be hidden as well. Hidden items must be numbered differently. References to notes are not being displayed. Concatenated lines used for titles of sources and citations are not being processed correctly.
I could fix each of these individually by adding patches to my code. For the hidden items, that code is already in a dozen places and already has gone through several versions of improvements. That all happened while I was still building my final data structure. Doing the patching would take time and would have to be done case by case checking each one along the way. Rather than doing that, it’s probably worth my time right now to rework two important parts of Behold.
The first is to rework my input routine so that the Concatenated lines are pre-concatenated. Then I won’t have to check for them everywhere. This would involve pre-reading the next line, and that’s a little tougher than it sounds because of the way I’ve “globalized” that routine. It should only take a day or two.
The second and more important task is to get my five different types of GEDCOM objects that I’m handling combined into just two, and have both of them use a similar data structure, thus merging the separate functions into single ones that will work in all cases. This will “formalize” my implementation of what I call Behold’s “Extended GEDCOM” data structure. There are two structures involved: Records and Links. Each can have subordinate data. Records can contain Links. Links always point to Records and can contain other Links. When a Link contains subordinate data, it becomes a citation. Now that may all sound confusing to you, and you need not worry about it, but the exact structure has been eluding me up to last night. It took a bike ride, a 2 a.m. awakening, and a shower for me to finally figure it out.
The nice thing about doing this now is that the beta coming up will be perfect to ensure this improved implementation is all bug free. Nothing on the outside will change because of it. The Everything Report will look the same except some bugs will be fixed. The code will be simplified and generalized, hopefully becoming somewhat faster because of improved data structures. But future changes will be much easier, and Behold will be better prepared for the reading in of data directly from other programs, and later for GEDCOM output and editing.
If all goes well, this all could be done within a week or two. Then back to the show.