[sword-devel] Efficiently extracting section + chapter headers
Tobias Klein
contact at tklein.info
Sat Jan 8 03:15:18 EST 2022
Hi Troy,
Thank you so much for looking into this!
setIntros is not available on SWModule, but only on SWKey.
I suppose the setIntros must be used like this?
SWKey*key= module->getKey();
VerseKey*verseKey= SWDYNAMIC_CAST(VerseKey, key);
*verseKey**->**setIntros**(**true**);*
ListKeyscope= verseKey->parseVerseList(bookCode, *verseKey, true);
ListKeyresultKey= module->search("/Heading",
SWModule::SEARCHTYPE_ENTRYATTR, 0, &scope);
When I did that I still did not get the chapter headings, though.
Best regards,
Tobias
On 1/7/22 3:44 PM, Troy A. Griffitts wrote:
> Dear Tobias,
>
> I haven't had a chance to dig into this yet, but my first guess is
> that you may be missing the intro slots from the module.
>
> VerseKey modules have intro entries:
>
> for the chapter if you set verse to 0
> for the book, if you set chapter to 0
> for the testament, if you set book to 0
> for the module, if you set testament to 0
>
> You'll need to module->setIntros(true) if you want to access these.
>
> Actually, maybe even just try setIntros(true) before your headings
> search. The content in these entries is likely marked up as headings,
> as well. For your purposes, you'll need to decide if you want anything
> in these entries. They might be a long book introduction. The presence
> of intro entries, length, and type of content varies greatly between
> modules.
>
> Hope this give something to try,
>
> Troy
>
> On January 6, 2022 9:41:31 AM MST, Tobias Klein <contact at tklein.info>
> wrote:
>
> Hi Troy,
>
> I have started looking again into extracting book headings, so that I
> can generate a book outline in Ezra Bible App even when looking at
> individual chapters only. I had stopped looking at it when I was not
> successfully generating a Windows build any longer last year - but I
> could fix that, so now the work continues.
>
> I based my code on your example findHeadings.cpp.
>
> It seems like the list of extracted headings is not complete, though.
>
> When running this with the module GerNeUe and the book Acts I find that
> the headers returned are only section headers, but not chapter headers.
> Could you have another look based on the example and GerNeUe/Acts and
> advise?
>
> I have attached a list of headers that I get from the Bible text of
> GerNeUe/Acts - just for reference.
>
> Best regards,
> Tobias
>
> On 4/12/21 9:07 PM, Troy A. Griffitts wrote:
>
> Sure Tobias, module->getEntryAttributes() will allow you to
> pull the headings from a verse, and an Entry Attributes search
> for '/Heading' will give you only the verses with Heading
> entries attributes. I've thrown together a quick example here,
> which you can use with something like: ./showHeadings NASB
> Matt-John which will give you the headings from the Gospels.
> https://crosswire.org/svn/sword/trunk/examples/tasks/findHeadings.cpp
> <https://crosswire.org/svn/sword/trunk/examples/tasks/findHeadings.cpp>
> Creating this example, I found I needed to fix a bug in the
> engine. The engine Entry Attributes search lets you search
> for values in the entry attributes (e.g., a Strong's number
> 1234). In your use case, when searching, you don't care about
> the value; you only care about presence. This wasn't working,
> but simple presence can now be searched for with my latest
> commit. Hope this helps, Troy On 4/12/21 9:31 AM, Tobias Klein
> wrote:
>
> Hi, I have been getting a request from a user to render
> section headings independently of the currently opened
> bible translation module. So for example when opening the
> KJV still using the section/chapter headers of the NASB.
> This would be useful in those cases when the respective
> bible translation module does not come with
> section/chapter headers, but another one does. A
> requirement would be to efficiently extract
> section/chapter headers from a module using the SWORD API.
> As of now I only see that you can iterate over the verses
> of a book and individually scan each verse for the
> headers. Is there a more efficient way of doing that?
> Another use case could be to render a book outline. This
> is what I am already doing now in Ezra, but in a way that
> is not so clean (I am traversing the DOM looking for all
> section header elements of the current book). Best
> regards, Tobias
> ------------------------------------------------------------------------
> sword-devel mailing list: sword-devel at crosswire.org
> http://crosswire.org/mailman/listinfo/sword-devel
> <http://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://crosswire.org/mailman/listinfo/sword-devel
> <http://crosswire.org/mailman/listinfo/sword-devel>
> Instructions to unsubscribe/change your settings at above page
>
> -- Sent from my Android device with K-9 Mail. Please excuse my brevity.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://crosswire.org/pipermail/sword-devel/attachments/20220108/8355c0fd/attachment.html>
More information about the sword-devel
mailing list