[sword-devel] preverse divs

Troy A. Griffitts scribe at crosswire.org
Tue Feb 28 11:50:13 MST 2012


An issue came up today that reminding me that we haven't officially 
finished our support for 'preverse divs'.

You can search the archives, but a brief summary:

Material associated with a verse, but that should be displayed before 
the verse marker, used to be called "preverse title" or "preverse 
heading".  We agreed a while back to generalize this concept to simply 
be called a 'preverse div'.  Other things besides a single title might 
be show before a verse.

---- end of brief summary


So, we have basic support in the engine for this.  At one point osis2mod 
started generating this new format, it was deemed not yet completely 
supported in the engine, and reverted back, and now I'm not sure what 
state osis2mod is in regarding this.

The situation which came up today gives a perfect scenario to fix the 
problem and put the wraps on this one.  We have 2 modules

CrossWire - KJV 2.3
CrossWire Beta - KJV 2.4

Stable 2.3 uses the old scheme
Beta 2.4 uses the new scheme

If you run sword/examples/lookup on both modules to dump the 
EntryAttributes of a verse with preverse material, say Psalm 3:1, you'll 
see all the differences (old first, then new):

http://pastebin.com/raw.php?i=wt03hRK0
http://pastebin.com/raw.php?i=dhWaVr5P

toggle between the two tabs in your browser and see the changes.

So, it looks like we're mostly working.  The 'preverse div' is now 
showing up in the Heading/Preverse/0 slot, just like the title used to. 
  Great.

BUT, it seems, in a normal frontend experience, that when this is passed 
to RenderText, something is not quite right.  Maybe the <title> tag and 
it's content is getting stripped because it is thought to already be in 
the headings section and we're trying to not render it twice?  Just a guess.

Dunno.

But it would be interesting to:

module.setKey("Ps.3.1");
// force parse to generate entry attributes
module.RenderText();

SWBuf preverseMaterial = 
module.getEntryAttributes()["Heading"]["Preverse"]["0"];

cout << preverseMaterial << endl;

cout << module.RenderText(preverseMaterial) << endl;

and see what you get.

Anyone have time to track this one down?

Troy



More information about the sword-devel mailing list