Greg Hellings wrote:
On Tue, Apr 28, 2009 at 7:50 AM, DM Smith <dmsm...@crosswire.org> wrote:
On Apr 28, 2009, at 8:40 AM, Barry Drake wrote:
Hi there ......
I've just discovered that mod2osis doesn't currently handle linked verses
in bible texts. It outputs the entire linked block for every verse that it
is linked from.
There is a new method for the module: isLinked(VerseKey *v1, VerseKey* v2)
This is helpful. So can I do something like this:
VerseKey* endRange = myKey.clone();
while(myModule.isLinked(myKey, endRange)) {
endRange.increment();
}
// Necessary, because we stepped one beyond the linking range
endRange.decrement();
SWBuf osisIDValue = myKey.equals(endRange) : myKey.getOSISRef() ?
SWBuf(myKey.getOSISRef()) + SWBuf(".") + SWBuf(endRange.getOSISRef());
to determine the key range?
Looks good. I think it needs some error checking as in (I don't know if
this is correct.):
// have to increment in case you don't get in the loop body
endRange.increment();
// check error so that if you are on the last verse in the
versification, you don't loop forever.
while (!endRange.Error() && myModule.isLinked(myKey, endRange)) {
endRange.increment();
}
// If you hit the last verse you don't need to decrement
if (!endRange.Error()) {
endRange.decrement();
}
// test to see that you have a range.
if (myKey != endRange) {
... then I have a range ...
}
This has some theoretical drawbacks:
1) A verse in the range might not have an entry in the module. I think
this is unlikely.
<div annotateType="xxx" annotateRef="Matt.1.1-Matt.1.5
Matt.2.10-Matt.2.11">...</div>
2) One could have non-adjacent references to be linked. I think this is
unlikely.
<div annotateType="xxx" annotateRef="Matt.1.1-Matt.1.5
Matt.2.10-Matt.2.11">...</div>
<div annotateType="xxx" annotateRef="Matt.1.6-Matt.2.9">...</div>
I don't know how to solve the second one. The first can use
module.hasEntry(vk);
And is a "." the proper value to use when
linking two osisIDs together into a range?
For an annotateRef, use '-' e.g. annotateRef="Matt.1.1-Matt.1.5". For an
osisID, you need each osisID separated by space, e.g. osisID="Matt.1.1
Matt.1.2 Matt.1.3 Matt.1.4 Matt.1.5"
--Greg
By passing the current and the next verse keys, one can determine the osisID
to use.
In Him,
DM
_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page