[sword-devel] Headings, Titles and Intros

Manfred Bergmann bergmannmd at web.de
Fri Dec 18 09:08:42 MST 2009


Am 18.12.2009 um 13:33 schrieb DM Smith:

> For details see:
> 	http://crosswire.org/wiki/OSIS_Bibles
> and
> 	http://crosswire.org/wiki/Osis2mod#Handling_of_Introductions.2C_Titles_and_Inter-Verse_Material

Umm. I haven't seen the wiki page about Osis2Mod.
Actually I think many things there should rather go into OsisBibles instead.


Manfred

> On Dec 18, 2009, at 5:10 AM, Manfred Bergmann wrote:
> 
>> Hello Troy.
>> 
>> Ok, let me summarise:
>> 
>> Headings (as the name of the VerseKey function) are used for module, testament, book and chapter intros.
>>> From looking into osis2mod.cpp they have to be encoded in OSIS like:
>> // Everything between the begin book tag and the first begin chapter tag is inBookIntro
>> // Everything between the begin chapter tag and the first begin verse tag is inChapterIntro
>> Books are encoded with:
>> <div canonical="true" type="book" osisID="Gen">
>> So everything between this tag and the first <chapter /> tag is a book intro and retrievable using:
>> testament.book.0
>> 
>> Can the intro be embedded in another node which is not a text node?
>> Chris mentioned something like:
>> <div type="introduction" />
>> 
>> 
>> The global option "Headings" is used for pre-verse titles/headings.
>> They have to be embedded in a <title /> tag and have to be placed right before the <verse /> tag.
>> They are retrievable using:
>> getEntryAttributes()["Heading"]["Preverse"]["0"]
>> 
>> 
>>> Hope this is helpful.
>> 
>> Yes, very much.
>> 
>> 
>> 
>> Manfred
>> 
>> 
>> Am 17.12.2009 um 22:52 schrieb Troy A. Griffitts:
>> 
>>> Dear Manfred,
>>> 
>>> On 12/17/2009 12:02 PM, Manfred Bergmann wrote:
>>>> Is it necessary to use a VerseKey for positioning in order to retrieve the headings?
>>>> 
>>> VerseKey::Headings(true|false) is currently how to turn intro records on
>>> and off for VerseKey navigated modules.  These include:
>>> testament.book.chap.0 for chapter intro
>>> testament.book.0 for book intro
>>> testament.0 for testament intro
>>> 0 for module intro
>>> 
>>> By default intro's are turned off.
>>> 
>>> The method name is confusing because 'Headings' was chosen before we had
>>> any semblance of OSIS subheadings in verses.  VerseKey::Headings is a
>>> prime candidate for a name change when we normalize the API naming
>>> conventions in 2.0.
>>> 
>>>> Which XML/OSIS tags are then used to create the headings in the module?
>>>> 
>>> DM and others who maintain osis2mod can answer better than me, but I
>>> believe these intros are populated from an OSIS doc by osis2mod choosing
>>> the interverse text in the correct position, e.g.
>>> 
>>> <verse osisID="John.1.51">
>>> ...
>>> </verse>
>>> John Chapter 2 intro material
>>> <verse osisID="John.2.1">
>>> ...
>>> </verse>
>>> 
>>> The API lets you set this material with code like:
>>> 
>>> VerseKey *vk = (VerseKey *)module.getKey();
>>> vk->Headings(true);
>>> (*vk) = "jn.2.0";
>>> module.setEntry("Intro Text for John 2");
>>> The wiki mentions the <title/> tag and that it has to be placed right
>>> before the verse/chapter.
>>> 
>>>> Does this also work for testament and book?
>>>> 
>>> Text parsing should work for jn.0.0, but I think you have to use some
>>> crazy text for text parsing of book and testament headings... 
>>> Basically, the text you get out of VerseKey::getText() should work for
>>> setting with VerseKey::setText(), but I would suggest just using the
>>> setters:
>>> 
>>> VerseKey::setTestament(0);
>>> VerseKey::setBook(0);
>>> 
>>>> What is the "Headings" global option doing?
>>>> 
>>> Something entirely different.  These are for sections headings in the
>>> text, including 'pre-verse' section headings.  These can be turned on
>>> and off.  Headings are the little blurbs before a section like:
>>> 
>>> The Baptism of Jesus
>>> 
>>> Some of these are 'pre-verse', which means they should be displayed
>>> before your frontend's verse marker.  These can be pulled from
>>> entryAttributes, and each SWORD frontend has chapter display logic
>>> similar to:
>>> 
>>>      VerseKey *key = (VerseKey *)currentText.getKey();
>>>      VerseKey saveKey = *key;
>>> 
>>>      if (key->getVerse() != 1) {
>>>              key->setChapter(0);
>>>      } else {
>>>              key->setVerse(0);
>>> 
>>>      SWBuf text = "<html><body>";
>>>      for (; ((key->Chapter() == chapter) && (key->Book() == book) &&
>>> !currentText.Error()); currentText++) {
>>> 
>>>           if (key->getVerse() == 0) {
>>>               text += currentText.RenderText();    // intro material
>>>               text += "<br/><br/>";
>>>               continue;
>>>           }
>>> 
>>>          // see if there are any pre-verse headings
>>>          SWBuf preverseHeading =
>>> currentText->getEntryAttributes()["Heading"]["Preverse"]["0"].c_str();
>>>          if (preverseHeading.length()) {
>>>              text += "<br/><br/><b>";
>>>              text += currentText.RenderText(preverseHeading); // do
>>> any tag conversions for our requested markup
>>>              text += "</b><br/><br/>";
>>>          }
>>> 
>>>          // render our verse number marker
>>>          text += "<font color=\"#0000ff\"><small>" + key->getVerse()
>>> + "</small></font>";
>>>      }
>>>      text += "</body></html>";
>>>      textDisplay->setText(text);
>>>      textDisplay->scrollToAnchor("curVerse");
>>>      currentText->SetKey(saveKey);
>>> 
>>>  }
>>> 
>>> Hope this is helpful.
>>> 
>>> Troy
>>> 
>>> 
>>>> 
>>>> 
>>>> Manfred
>>>> _______________________________________________
>>>> sword-devel mailing list: sword-devel at crosswire.org
>>>> http://www.crosswire.org/mailman/listinfo/sword-devel
>>>> Instructions to unsubscribe/change your settings at above page
>>>> 
>>> 
>>> 
>>> _______________________________________________
>>> sword-devel mailing list: sword-devel at crosswire.org
>>> http://www.crosswire.org/mailman/listinfo/sword-devel
>>> Instructions to unsubscribe/change your settings at above page
>> 
>> 
>> _______________________________________________
>> sword-devel mailing list: sword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page
> 
> 
> _______________________________________________
> sword-devel mailing list: sword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/sword-devel
> Instructions to unsubscribe/change your settings at above page




More information about the sword-devel mailing list