[jsword-devel] Limiting the number of verses in a passage

Stephen Denne spdlist at ihug.co.nz
Mon Jul 6 02:15:05 MST 2009

> > From: Brian Fernandes [mailto:infernalproteus at gmail.com] 
> > Given a passage object, say a RocketPassage - what is the 
> best way to 
> > limit the number of verses in it?
> > 
> > The verses in the passage may not be continuous. So something like 
> > "gen.1.1-3,lev.2.1-5,exo.3.1-ff" as a single passage object. 
> > If I want 
> > to restrict the lookup/retrieval to only the first 15 
> verses, what is 
> > the best way to achieve this with JSword?
> > 
> > Thanks!
> > Brian.
> There's an example or two of Passage.trimVerses() in 
> org.crosswire.jsword.examples.APIExamples that may do what you want.

Although if you wish to preserve the original order, you might be better using

StringUtil.split(refs, AbstractPassage.REF_ALLOWED_DELIMS);
VerseRange basis = VerseRangeFactory.fromString(parts[0].trim());

Using basis, and looping through:

VerseRange next = VerseRangeFactory.fromString(parts[i].trim(), basis);
basis = next;

Making use of the VerseRange.getCardinality() call to keep track of how many verses you've got so far, calling iterator() on each
range, stopping when you've looked up/retrieved the desired number of verses.

Stephen Denne.

More information about the jsword-devel mailing list