aboutsummaryrefslogtreecommitdiffstats
path: root/utilities/imp2vs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utilities/imp2vs.cpp')
-rw-r--r--utilities/imp2vs.cpp94
1 files changed, 14 insertions, 80 deletions
diff --git a/utilities/imp2vs.cpp b/utilities/imp2vs.cpp
index 9a47301..c7ee1c6 100644
--- a/utilities/imp2vs.cpp
+++ b/utilities/imp2vs.cpp
@@ -59,15 +59,18 @@ int main(int argc, char **argv) {
RawText::createModule(modname);
RawText modRaw(modname);
mod = &modRaw;
-
+
VerseKey* vkey = new VerseKey;
vkey->Headings(1);
vkey->AutoNormalize(0);
vkey->Persist(1);
mod->setKey(*vkey);
-
- while (readline(infile, linebuffer)) {
- if (!strncmp(linebuffer, "$$$", 3)) {
+ char final; // 2 == pre-final line; 1 == final line; 0 == EOF
+
+ final = ((bool)(readline(infile, linebuffer)) + 1);
+
+ while (final) {
+ if (!strncmp(linebuffer, "$$$", 3) || final == 1) {
if (strlen(keybuffer) && strlen(entbuffer)) {
std::cout << "from file: " << keybuffer << std::endl;
*vkey = keybuffer;
@@ -87,7 +90,7 @@ int main(int argc, char **argv) {
}
vkey->Verse(0);
}
-
+
std::cout << "adding entry: " << *vkey << std::endl;
mod->setEntry(entbuffer, strlen(entbuffer));
}
@@ -108,12 +111,12 @@ int main(int argc, char **argv) {
if (!havefirst) {
havefirst = true;
firstverse = *vkey;
-
+
std::cout << "adding entry: " << *vkey << std::endl;
mod->setEntry(entbuffer, strlen(entbuffer));
(*vkey)++;
}
- while (*vkey <= finalkey) {
+ while (! (finalkey < (*vkey))) {
std::cout << "linking entry: " << *vkey << " to " << firstverse << std::endl;
*mod << &firstverse;
(*vkey)++;
@@ -129,7 +132,7 @@ int main(int argc, char **argv) {
*vkey = (*listkey.GetElement(i));
havefirst = true;
firstverse = *vkey;
-
+
std::cout << "adding entry: " << *vkey << std::endl;
mod->setEntry(entbuffer, strlen(entbuffer));
}
@@ -144,81 +147,12 @@ int main(int argc, char **argv) {
else {
strcat (entbuffer, linebuffer);
}
- }
-
- //handle final entry
- if (strlen(keybuffer) && strlen(entbuffer)) {
- std::cout << "from file: " << keybuffer << std::endl;
- *vkey = keybuffer;
- if (!vkey->Chapter()) {
- // bad hack: 0:0 is Book intro; (chapter):0 is Chapter intro; 0:2 is Module intro; 0:1 is Testament intro
- int backstep = vkey->Verse();
- if (backstep) {
- vkey->Verse(1);
- vkey->Chapter(1);
- switch (backstep) {
- case 2:
- vkey->Book(1);
- vkey->Testament(0);
- case 1:
- vkey->Book(0);
- vkey->Chapter(0);
- }
- vkey->Verse(0);
- }
-
- std::cout << "adding entry: " << *vkey << std::endl;
- mod->setEntry(entbuffer, strlen(entbuffer));
- }
- else {
- ListKey listkey = vkey->ParseVerseList(keybuffer, "Gen1:1", true);
- int i;
- bool havefirst = false;
- VerseKey firstverse;
- firstverse.Headings(1);
- firstverse.AutoNormalize(0);
- for (i = 0; i < listkey.Count(); i++) {
- VerseKey *element = SWDYNAMIC_CAST(VerseKey, listkey.GetElement(i));
- if (element) {
- *vkey = element->LowerBound();
- VerseKey finalkey = element->UpperBound();
- finalkey.Headings(1);
- finalkey.AutoNormalize(0);
- if (!havefirst) {
- havefirst = true;
- firstverse = *vkey;
-
- std::cout << "adding entry: " << *vkey << std::endl;
- mod->setEntry(entbuffer, strlen(entbuffer));
- (*vkey)++;
- }
- while (*vkey <= finalkey) {
- std::cout << "linking entry: " << *vkey << " to " << firstverse << std::endl;
- *(SWModule*)mod << &firstverse;
- (*vkey)++;
- }
- }
- else {
- if (havefirst) {
- *vkey = (*listkey.GetElement(i));
- std::cout << "linking entry: " << *vkey << " to " << firstverse << std::endl;
- *mod << &firstverse;
- }
- else {
- *vkey = (*listkey.GetElement(i));
- havefirst = true;
- firstverse = *vkey;
-
- std::cout << "adding entry: " << *vkey << std::endl;
- mod->setEntry(entbuffer, strlen(entbuffer));
- }
- }
- }
+ final--;
+ if (final) {
+ final = ((bool)(readline(infile, linebuffer)) + 1);
}
}
- //DEBUG printTree(root, treeKey);
-
delete entbuffer;
delete linebuffer;
delete keybuffer;