[sword-devel] verse parsing
Troy A. Griffitts
scribe at crosswire.org
Sat Mar 25 18:33:34 MST 2006
Hey guys (especially frontend writers),
I've been working on providing a VerseKey key interface for traversing
modules like the LXXM:
I'm having some difficulty fitting this into the exposed VerseKey
Obviously, my goal was to save everyone as much modification as
possible, but there just doesn't seem like there is a good fit for
modules like these.
Here's a little background of what I was trying and were I ran into
troubles, and why I've come to this conclusion:
First, I attempted to redo this module using OSIS book names for
everything, and discovered that there just wasn't a nice book list we
could display to the user. For example, JoshB (from the link above)
seems to be the standard book of Joshua we'd all expect, but then JoshA
(browse to it using the left index) contains 3 chapters: 15, 18, 19 Not
sure exactly what these are, but I'm guessing they are replacements or
additions to Joshua or some other book. Actually, I just have no idea.
The next thing I began to realize is that this module uses a,b,c type
suffixes on verses (click on the first link in this email again and
scroll to the bottom of the page). This does not fit nicely into our
integer concept for verses. I considered adding a 5th level:
Testament/Book/Chapter/Verse/Sub. But this really breaks the whole
paradigm anyway, as sub will mostly be blank except when there might be
a letter tacked to the end. It really doesn't solve any problems, e.g.
key.Verse(key.Verse()+1) still will break. key++ would work, I guess,
but you'd have to always check if Sub was set to anything. And who
knows what Sub really means. Is it a replacement? Is it really a
subdivision of the verse? It just doesn't seem like it solves any
problems nicely. It seems like the LXX really is sequentially 31, 31a,
32, 33, 33a, 33b. When I know that other Bibles and commentaries mean
the first part of 33 when they say 33a. So adding Sub doesn't seem like
it gives us much except keeping Verse an integer.
So, I have a few ideas, and would like to hear from you.
Basically, I think the way we present and display the LXXM with swordweb
(the link above) is actually pretty ok. There are a few deficiencies:
The 'reference' is display like:
We could add a flag which says to display using a BK CH:VS format. I
was thinking about adding a pattern, like letting the modules.conf file
specify something like:
but I think this is more work for everyone than it benefits. Besides,
other languages probably prefer other formats (BK CH.VS). So I think
we'd like to just say something like KeyFormat=BCV
The other problem is parsing...
Currently VerseKey provides all the nice parsing functionality that
It can do this because it has a set of books that it know about, along
with all kinds of abbreviations and translated into a number of
languages. Our current parser also drops suffixed letters.
Finally, if we solve these problems, and place an entry in LXXM:
Category=Biblical Texts, it will probably break most frontends which
expect all Biblical Texts to use a VerseKey. I don't know how to solve
I also considered a major change to VerseKey which would make all levels
strings and not integers. I realize many frontends use integer spin
controls to increase/decrease chapter and verse. There may also be
linear logic regarding these things.
I guess the real question is, would it be easier for everyone to add
parsing and display support to treekey and leave versekey alone? This
is the direction I'm leaning right now. Any thoughts to sway me would
More information about the sword-devel