blob: bbe773252058d80b21412db9203ad0cca0144b4e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
/***************************************************************************
plainfootnotes.cpp - description
-------------------
begin : Wed Oct 13 1999
copyright : (C) 1999 by The team of BibleTime
email : info@bibletime.de
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include <plainfootnotes.h>
#include <swkey.h>
#include <stdlib.h>
#include <string.h>
#ifndef __GNUC__
#else
#include <unixstr.h>
#endif
SWORD_NAMESPACE_START
const char PLAINFootnotes::on[] = "On";
const char PLAINFootnotes::off[] = "Off";
const char PLAINFootnotes::optName[] = "Footnotes";
const char PLAINFootnotes::optTip[] = "Toggles Footnotes On and Off In Bible Texts If They Exist";
PLAINFootnotes::PLAINFootnotes(){
option = false;
options.push_back(on);
options.push_back(off);
}
PLAINFootnotes::~PLAINFootnotes(){
}
void PLAINFootnotes::setOptionValue(const char *ival)
{
option = (!stricmp(ival, on));
}
const char *PLAINFootnotes::getOptionValue()
{
return (option) ? on:off;
}
char PLAINFootnotes::ProcessText(char *text, int maxlen, const SWKey *key, const SWModule *module)
{
char token[2048];
int tokpos = 0;
bool intoken = false;
bool lastspace = false;
if (!option) { // if we don't want footnotes
char *to, *from;
int len;
bool hide = false;
len = strlen(text) + 1; // shift string to right of buffer
if (len < maxlen)
{
memmove(&text[maxlen - len], text, len);
from = &text[maxlen - len];
}
else from = text; // -------------------------------
for (to = text; *from; from++) {
if (*from == '{') // Footnote start
{
hide = true;
continue;
}
if (*from == '}') // Footnote end
{
hide=false;
continue;
}
if (intoken) {
if (tokpos < 2045)
token[tokpos++] = *from;
token[tokpos+2] = 0;
}
else {
if (!hide) {
*to++ = *from;
lastspace = (*from == ' ');
}
}
}
*to++ = 0;
*to = 0;
}
return 0;
}
SWORD_NAMESPACE_END
|