diff options
author | Your Name <you@example.com> | 2021-08-10 12:29:46 -0400 |
---|---|---|
committer | Your Name <you@example.com> | 2021-08-10 12:29:46 -0400 |
commit | 350a11b05c6496b3628dd18704b9f7e0b3f29403 (patch) | |
tree | cd406ff9a27113ab0f27386e1051ff4254c7c295 /libbible.cc | |
parent | ab2668a4b0e6eebd80668aea9110f6fb86aed5a4 (diff) | |
download | libbible-350a11b05c6496b3628dd18704b9f7e0b3f29403.tar.gz libbible-350a11b05c6496b3628dd18704b9f7e0b3f29403.tar.bz2 libbible-350a11b05c6496b3628dd18704b9f7e0b3f29403.zip |
Fixed handling of titles
Diffstat (limited to 'libbible.cc')
-rw-r--r-- | libbible.cc | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/libbible.cc b/libbible.cc index 12e45a0..c9acb7d 100644 --- a/libbible.cc +++ b/libbible.cc @@ -3,12 +3,14 @@ #include <sword/markupfiltmgr.h> #include <sword/swmodule.h> #include <sword/swmgr.h> +#include <sword/osisfootnotes.h> #include <algorithm> using namespace sword; using namespace std; SWMgr library(new MarkupFilterMgr(FMT_XHTML)); +OSISFootnotes filter; vector<string> getBooks(SWModule *target) { vector<string> books; @@ -145,6 +147,8 @@ libbible::passage libbible::getPassage(string modName, string reference) { vector<libbible::text> libbible::getText(libbible::passage pass) { vector<libbible::text> texts; SWModule *target = library.getModule(pass.modName.c_str()); + filter.setOptionValue("Off"); + target->addOptionFilter(&filter); if(target == nullptr) { // Module doesn't exist return texts; @@ -196,10 +200,13 @@ vector<libbible::text> libbible::getText(libbible::passage pass) { } } } + if(*i == '\n') { + continue; // We add newlines with <br /> + } if(! hasAddedText && (*i == ' ' || *i == '\t')) { continue; } - if(*i == "¶"[0] && *(i+1) == "¶"[1]) { + if(*i == "¶"[0] && i+1 != text.end() && *(i+1) == "¶"[1]) { i++; if(hasAddedText) { texts.back().text += '\n'; @@ -238,6 +245,11 @@ vector<libbible::text> libbible::getText(libbible::passage pass) { size_t end = span.find("\"", start); spans.push_back(std::pair<string, string>(tag, span.substr(start, end-start))); spansChanged = true; + } else if(span.find("preverse") != string::npos) { + string tag = span.substr(1, span.find(" ")-1); + spans.push_back(std::pair<string, string>(tag, "preverse")); + } else if(span == "<br />" || span == "<br/>") { + texts.back().text += '\n'; } break; } |