[sword-devel] [bt-devel] Judges: Judg or Jud? and the handling of invalid references

Chris Little chrislit at crosswire.org
Fri Mar 27 23:34:51 MST 2009

Jonathan Morgan wrote:
> On Sat, Mar 28, 2009 at 3:34 PM, Jonathan Marsden <jmarsden at fastmail.fm> wrote:
>> I think I've found an interesting bug... or maybe more than one?
> This is a module problem, so I have  CC'ed sword-devel.

There's no mention of which version of ISBE was tested here, but I'll 
address this as if it were the latest edition that is being discussed 
since the problem does exist there. (But it's my suspicion that this 
report is actually based on the previous version.)

The problem, in any event, is in the module (at least for now).

>> Bugs:
>> (a) References to books of the Bible should use some standard form for
>> the names of books.  MHC uses Judg for Judges, which works fine in BT.
>> ISBE uses Jud for Judges, which does not work correctly in BT.  Where is
>> the standard defined, and which one is correct (I'd guess ISBE is
>> correct) according to that standard?
> I believe Jud for Jude and Judg for Judges is considered correct.
> From memory, the TSK also shares the same problem, which is why the
> BPBible locale uses Jud for Judges rather than Jude.  I don't think it
> is possible to tell easily which one the user might "expect" (though
> Jud 19:2 is a pretty fair giveaway), but the modules should be made
> unambiguous (if it were using OSIS, as it probably will in the future,
> then I think it would use OSIS refs, which are (or should be)
> unambiguous).

The standard forms will appear within osisRefs and they will be Jude for 
Jude and Judg for Judges. References still go through the verse list 
parser, though, so Jud gets mapped to Jude--and there's plenty of good 
logic to that, so I wouldn't suggest we change that.

The current TEI module uses osisRefs, but since they were generated by 
parsing the verse references through the Sword engine, the osisRefs are 
incorrect wherever Jud should indicate Judges.

When using the TEI module, once I get it updated to take this into 
account, if you still have a problem, it's because your front end is not 
using the osisRef attribute, but is parsing the CDATA within the 
reference element itself. Then it would be a front end bug.

>> (b) References to "Jud X:Y" should *never* link into Revelation.  Either
>> Jud is an invalid book abbrevation, in which case BT should probably say
>> that in the mag window, or else it is a valid book abbreviation for
>> either Judges (so link there) or Jude (so link there, if the chapter and
>> verse exist, and display a warning if they don't).  But linking into
>> Revelation in these circumstances is just plain wrong... surely?
> In Sword, Jude X:Y, is Revelation X - 1: Y when X > 1.  I don't think
> that behaviour desirable, but some people seem to like it.

Verse normalization can be disabled.

>> (c) I'd expect that a quick fix would be to change all the references
>> that start with "Jud " in the ISBE into "Judg " and then compile the
>> resulting text back into a module again.  That's theoretically a simple
>> one liner:
>>  mod2imp ISBE |sed -e 's/>Jud />Judg /g' |imp2ld ISBE ISBE
>> On my system that takes up 100% of one CPU core... for a long time...!
>> I'm not sure if I did something wrong in the command above, am just too
>> impatient to wait for it to run, or if imp2ld is buggy on my system in
>> some way?

I believe the old ISBE has a key sorting error that will result in an 
infinite loop.


More information about the sword-devel mailing list