From 35f68cd9bac0d172c7e8170a71714eb873dce6db Mon Sep 17 00:00:00 2001 From: "Troy A. Griffitts" Date: Tue, 25 Oct 2011 18:51:54 +0000 Subject: Added tools to process INTF base text git-svn-id: https://www.crosswire.org/svn/sword-tools/trunk@338 07627401-56e2-0310-80f4-f8cd0041bdcd --- intf/Makefile | 10 +++++++ intf/collate2imp.cpp | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++ intf/prepare.sh | 2 ++ intf/replaces.sed | 3 ++ 4 files changed, 95 insertions(+) create mode 100644 intf/Makefile create mode 100644 intf/collate2imp.cpp create mode 100755 intf/prepare.sh create mode 100644 intf/replaces.sed diff --git a/intf/Makefile b/intf/Makefile new file mode 100644 index 0000000..4552ec1 --- /dev/null +++ b/intf/Makefile @@ -0,0 +1,10 @@ +TARGETS= collate2imp +all: $(TARGETS) + +clean: + rm $(TARGETS) + +.cpp: + g++ -O0 -g `pkg-config --cflags sword` $< -o $@ `pkg-config --libs sword` + + diff --git a/intf/collate2imp.cpp b/intf/collate2imp.cpp new file mode 100644 index 0000000..ee5a359 --- /dev/null +++ b/intf/collate2imp.cpp @@ -0,0 +1,80 @@ +#include +#include +#include +#include + + +using namespace sword; +using namespace std; + +void usage(const char *app, const char *error = 0) { + + if (error) fprintf(stderr, "\n%s: %s\n", app, error); + + fprintf(stderr, "Convert Collate Plain Text collation to imp format\n"); + fprintf(stderr, "\nusage: %s \n", app); + fprintf(stderr, "\n"); + exit(-1); +} + +int main(int argc, char **argv) { + + if (argc < 2) usage(*argv); + + SWBuf inFile = argv[1]; + SWBuf lineBuffer; + SWBuf bookTag="
open(inFile, FileMgr::RDONLY); + if (fd->getFd() < 0) { + fprintf(stderr, "error: %s: couldn't open input file: %s \n", argv[0], inFile.c_str()); + exit(-2); + } + bool more = true; + do { + more = FileMgr::getLine(fd, lineBuffer)!=0; + if (inVerse) { + if (lineBuffer.indexOf("") > -1) { + lineBuffer.setSize(lineBuffer.indexOf("")); + inVerse = false; + } + cout << lineBuffer.trim() << endl; + } + if (lineBuffer.startsWith(bookTag)) { + lineBuffer << bookTag.length(); + SWBuf book = lineBuffer.stripPrefix('"'); + vk.setBook(atoi(book.c_str())); + } + else if (lineBuffer.startsWith(chapTag)) { + lineBuffer << chapTag.length(); + SWBuf chapter = lineBuffer.stripPrefix('"'); + vk.setChapter(atoi(chapter.c_str())); + } + else if (lineBuffer.startsWith(verseTag)) { + lineBuffer << verseTag.length(); + SWBuf verse = lineBuffer.stripPrefix('"'); + vk.setVerse(atoi(verse.c_str())); + lineBuffer.stripPrefix('>'); + if (lineBuffer.indexOf("") > -1) { + lineBuffer.setSize(lineBuffer.indexOf("")); + inVerse = false; + } + else { + inVerse = true; + } + cout << "$$$" << vk.getOSISRef() << "\n"; + cout << lineBuffer.trim() << endl; + } + } while (more); +} + + + diff --git a/intf/prepare.sh b/intf/prepare.sh new file mode 100755 index 0000000..c83a985 --- /dev/null +++ b/intf/prepare.sh @@ -0,0 +1,2 @@ +#!/bin/sh +sed -f replaces.sed $1 | awk '{gsub(/\r/,"\n");print}' diff --git a/intf/replaces.sed b/intf/replaces.sed new file mode 100644 index 0000000..26b5f80 --- /dev/null +++ b/intf/replaces.sed @@ -0,0 +1,3 @@ +/<\/ab> /s//<\/ab> /g +/\(.\)