1
/***************************************************************************
2
* gbfcgi.cpp - GBF to Diatheke/CGI format
5
* copyright : 2001 by CrossWire Bible Society
8
* Copyright 2009 CrossWire Bible Society (http://www.crosswire.org)
9
* CrossWire Bible Society
11
* Tempe, AZ 85280-2528
13
* This program is free software; you can redistribute it and/or modify it
14
* under the terms of the GNU General Public License as published by the
15
* Free Software Foundation version 2.
17
* This program is distributed in the hope that it will be useful, but
18
* WITHOUT ANY WARRANTY; without even the implied warranty of
19
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20
* General Public License for more details.
34
setTokenCaseSensitive(true);
36
addTokenSubstitute("Rf", ")</small></font>");
37
addTokenSubstitute("FI", "<i>"); // italics begin
38
addTokenSubstitute("Fi", "</i>");
39
addTokenSubstitute("FB", "<n>"); // bold begin
40
addTokenSubstitute("Fb", "</n>");
41
addTokenSubstitute("FR", "<font color=\"#FF0000\">"); // words of Jesus begin
42
addTokenSubstitute("Fr", "</font>");
43
addTokenSubstitute("FU", "<u>"); // underline begin
44
addTokenSubstitute("Fu", "</u>");
45
addTokenSubstitute("FO", "<cite>"); // Old Testament quote begin
46
addTokenSubstitute("Fo", "</cite>");
47
addTokenSubstitute("FS", "<sup>"); // Superscript begin// Subscript begin
48
addTokenSubstitute("Fs", "</sup>");
49
addTokenSubstitute("FV", "<sub>"); // Subscript begin
50
addTokenSubstitute("Fv", "</sub>");
51
addTokenSubstitute("TT", "<big>"); // Book title begin
52
addTokenSubstitute("Tt", "</big>");
53
addTokenSubstitute("PP", "<cite>"); // poetry begin
54
addTokenSubstitute("Pp", "</cite>");
55
addTokenSubstitute("Fn", "</font>"); // font end
56
addTokenSubstitute("CL", "<br />"); // new line
57
addTokenSubstitute("CM", "<br />"); // paragraph
58
addTokenSubstitute("CG", ">"); // ???
59
addTokenSubstitute("CT", "<"); // ???
60
addTokenSubstitute("JR", "<div align=\"right\">"); // right align begin
61
addTokenSubstitute("JC", "<div align=\"center\">"); // center align begin
62
addTokenSubstitute("JL", "</div>"); // align end
67
bool GBFCGI::handleToken(SWBuf &buf, const char *token, DualStringMap &userData) {
69
if (!substituteToken(buf, token)) {
70
if (!strncmp(token, "WG", 2) || !strncmp(token, "WH", 2)) { // strong's numbers
71
buf += " <small><em><<a href=\"!DIATHEKE_URL!";
72
if (token[1] == 'H') {
73
buf += "StrongsHebrew";
75
else if (token[1] == 'G') {
76
buf += "StrongsGreek";
79
for (i = 2; i < strlen(token); i++)
82
for (i = 2; i < strlen(token); i++)
84
buf += "</a>></em></small>";
87
else if (!strncmp(token, "WTG", 3) || !strncmp(token, "WTH", 3)) { // strong's numbers tense
88
buf += " <small><em><<a href=\"!DIATHEKE_URL!";
89
if (token[2] == 'H') {
90
buf += "StrongsHebrew";
92
else if (token[2] == 'G') {
93
buf += "StrongsGreek";
96
for (i = 3; i < strlen(token); i++)
99
for (i = 3; i < strlen(token); i++)
101
buf += "</a>></em></small>";
104
else if (!strncmp(token, "WT", 2)) { // morph tags
105
buf += " <small><em>(<a href=\"!DIATHEKE_URL!Packard=on&verse=";
106
for (i = 1; i < strlen(token); i++)
109
for (i = 1; i < strlen(token); i++)
111
buf += "</a>)</em></small>";
114
else if (!strncmp(token, "RB", 2)) {
116
userData["hasFootnotePreTag"] = "true";
119
else if (!strncmp(token, "RF", 2)) {
120
if(userData["hasFootnotePreTag"] == "true") {
121
userData["hasFootnotePreTag"] = "false";
124
buf += "<font color=\"#800000\"><small> (";
127
else if (!strncmp(token, "FN", 2)) {
128
buf += "<font face=\"";
129
for (i = 2; i < strlen(token); i++)
134
else if (!strncmp(token, "CA", 2)) { // ASCII value
135
buf += (char)atoi(&token[2]);