blob: eca1cfdbfa4eb9b42fc59ed6dfe04f885878213c (
plain) (
tree)
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>rwphtml.cpp Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.15 -->
<center>
<a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </center>
<hr><h1>rwphtml.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font>
00002 <font class="comment"> rwphtml.cpp - description</font>
00003 <font class="comment"> -------------------</font>
00004 <font class="comment"> begin : Thu Jun 24 1999</font>
00005 <font class="comment"> copyright : (C) 1999 by Torsten Uhlmann</font>
00006 <font class="comment"> email : TUhlmann@gmx.de</font>
00007 <font class="comment"> ***************************************************************************/</font>
00008
00009 <font class="comment">/***************************************************************************</font>
00010 <font class="comment"> * *</font>
00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify *</font>
00012 <font class="comment"> * it under the terms of the GNU General Public License as published by *</font>
00013 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or *</font>
00014 <font class="comment"> * (at your option) any later version. *</font>
00015 <font class="comment"> * *</font>
00016 <font class="comment"> ***************************************************************************/</font>
00017
00018 <font class="preprocessor">#include <stdlib.h></font>
00019 <font class="preprocessor">#include <string.h></font>
00020 <font class="preprocessor">#include <ctype.h></font>
00021 <font class="preprocessor">#include <rwphtml.h></font>
00022
00023 RWPHTML::RWPHTML()
00024 {
00025 }
00026
00027
00028 <font class="keywordtype">char</font> RWPHTML::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
00029 {
00030 <font class="keywordtype">char</font> *to, *from;
00031 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> greek_str[500];
00032 <font class="keywordtype">bool</font> inverse = <font class="keyword">false</font>;
00033 <font class="keywordtype">bool</font> first_letter = <font class="keyword">false</font>;
00034 <font class="keywordtype">int</font> len;
00035
00036 len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
00037 <font class="keywordflow">if</font> (len < maxlen) {
00038 memmove(&text[maxlen - len], text, len);
00039 from = &text[maxlen - len];
00040 } <font class="keywordflow">else</font>
00041 from = text;
00042 <font class="keywordflow">for</font> (to = text; *from; from++) {
00043 <font class="keywordflow">if</font> (*from == <font class="charliteral">'\\'</font>) {
00044 ++from;
00045 <font class="keywordtype">int</font> i=0;
00046 first_letter = <font class="keyword">true</font>;
00047 greek_str[0] = <font class="charliteral">'\0'</font>;
00048 <font class="keywordflow">while</font> (*from != <font class="charliteral">'\\'</font>) { <font class="comment">/* get the greek word or phrase */</font>
00049 greek_str[i++] = *from;
00050 greek_str[i + 1] = <font class="charliteral">'\0'</font>;
00051 from++;
00052 } <font class="comment">/* convert to symbol font as best we can */</font>
00053 strcpy(to,<font class="stringliteral">"<I> </I><FONT FACE=\"symbol\">"</font>);
00054 to += strlen(to);
00055 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> j = 0; j < i; j++) {
00056 <font class="keywordflow">if</font> ((first_letter)
00057 && (greek_str[j] == <font class="charliteral">'h'</font>)) {
00058 <font class="keywordflow">if</font> (greek_str[j + 1] == <font class="charliteral">'o'</font>) {
00059 *to++ = <font class="charliteral">'o'</font>;
00060 first_letter = <font class="keyword">false</font>;
00061 ++j;
00062 <font class="keywordflow">continue</font>;
00063 } <font class="keywordflow">else</font> <font class="keywordflow">if</font> (greek_str[j + 1] == <font class="charliteral">'a'</font>) {
00064 *to++ = <font class="charliteral">'a'</font>;
00065 first_letter = <font class="keyword">false</font>;
00066 ++j;
00067 <font class="keywordflow">continue</font>;
00068 } <font class="keywordflow">else</font> <font class="keywordflow">if</font> (greek_str[j + 1] == <font class="charliteral">'w'</font>) {
00069 *to++ = <font class="charliteral">'w'</font>;
00070 first_letter = <font class="keyword">false</font>;
00071 ++j;
00072 <font class="keywordflow">continue</font>;
00073 } <font class="keywordflow">else</font> <font class="keywordflow">if</font> (greek_str[j + 1] == <font class="charliteral">'u'</font>) {
00074 *to++ = <font class="charliteral">'u'</font>;
00075 first_letter = <font class="keyword">false</font>;
00076 ++j;
00077 <font class="keywordflow">continue</font>;
00078 } <font class="keywordflow">else</font> <font class="keywordflow">if</font> (greek_str[j + 1] ==
00079 -109) {
00080 *to++ = <font class="charliteral">'w'</font>;
00081 first_letter = <font class="keyword">false</font>;
00082 ++j;
00083 <font class="keywordflow">continue</font>;
00084 } <font class="keywordflow">else</font> <font class="keywordflow">if</font> (greek_str[j + 1] ==
00085 -120) {
00086 *to++ = <font class="charliteral">'h'</font>;
00087 first_letter = <font class="keyword">false</font>;
00088 ++j;
00089 <font class="keywordflow">continue</font>;
00090 } <font class="keywordflow">else</font> <font class="keywordflow">if</font> (greek_str[j + 1] == <font class="charliteral">'i'</font>) {
00091 *to++ = <font class="charliteral">'i'</font>;
00092 first_letter = <font class="keyword">false</font>;
00093 ++j;
00094 <font class="keywordflow">continue</font>;
00095 }<font class="keywordflow">else</font> <font class="keywordflow">if</font> (greek_str[j + 1] == <font class="charliteral">'e'</font>) {
00096 *to++ = <font class="charliteral">'e'</font>;
00097 first_letter = <font class="keyword">false</font>;
00098 ++j;
00099 <font class="keywordflow">continue</font>;
00100 }
00101 first_letter = <font class="keyword">false</font>;
00102 }
00103 <font class="keywordflow">if</font> ((greek_str[j] == <font class="charliteral">'t'</font>)
00104 && (greek_str[j + 1] == <font class="charliteral">'h'</font>)) {
00105 *to++ = <font class="charliteral">'q'</font>;
00106 ++j;
00107 <font class="keywordflow">continue</font>;
00108 }
00109 <font class="keywordflow">if</font> ((greek_str[j] == <font class="charliteral">'c'</font>)
00110 && (greek_str[j + 1] == <font class="charliteral">'h'</font>)) {
00111 *to++ = <font class="charliteral">'c'</font>;
00112 ++j;
00113 <font class="keywordflow">continue</font>;
00114 }
00115 <font class="keywordflow">if</font> ((greek_str[j] == <font class="charliteral">'p'</font>)
00116 && (greek_str[j + 1] == <font class="charliteral">'h'</font>)) {
00117 ++j;
00118 *to++ = <font class="charliteral">'f'</font>;
00119 <font class="keywordflow">continue</font>;
00120 }
00121 <font class="keywordflow">if</font> (greek_str[j] == -120) {
00122 *to++ = <font class="charliteral">'h'</font>;
00123 <font class="keywordflow">continue</font>;
00124 }
00125 <font class="keywordflow">if</font> (greek_str[j] == -125) {
00126 *to++ = <font class="charliteral">'a'</font>;
00127 <font class="keywordflow">continue</font>;
00128 }
00129 <font class="keywordflow">if</font> (greek_str[j] == -109) {
00130 <font class="keywordflow">if</font>(greek_str[j+1] == <font class="charliteral">'i'</font>) ++j;
00131 *to++ = <font class="charliteral">'w'</font>;
00132 <font class="keywordflow">continue</font>;
00133 }
00134 <font class="keywordflow">if</font> (greek_str[j] == <font class="charliteral">' '</font>)
00135 first_letter = <font class="keyword">true</font>;
00136 <font class="keywordflow">if</font> (greek_str[j] == <font class="charliteral">'s'</font>) {
00137 <font class="keywordflow">if</font>(isalpha(greek_str[j + 1])) *to++ = <font class="charliteral">'s'</font>;
00138 <font class="keywordflow">else</font> <font class="keywordflow">if</font>(!isprint(greek_str[j] )) *to++ = <font class="charliteral">'s'</font>;
00139 <font class="keywordflow">else</font> *to++ = <font class="charliteral">'V'</font>;
00140 <font class="keywordflow">continue</font>;
00141 }
00142 <font class="keywordflow">if</font> (greek_str[j] == <font class="charliteral">'\''</font>) {
00143 <font class="keywordflow">continue</font>;
00144 }
00145 *to++ = greek_str[j];
00146 }
00147 strcpy(to,<font class="stringliteral">"</FONT><I> </I>"</font>);
00148 to += strlen(to);
00149 <font class="keywordflow">continue</font>;
00150 }
00151 <font class="keywordflow">if</font> (*from == <font class="charliteral">'#'</font>) { <font class="comment">// verse markings (e.g. "#Mark 1:1|")</font>
00152 inverse = <font class="keyword">true</font>;
00153 strcpy(to,<font class="stringliteral">"<FONT COLOR=#0000FF>"</font>);
00154 to += strlen(to);
00155 <font class="keywordflow">continue</font>;
00156 }
00157 <font class="keywordflow">if</font> ((*from == <font class="charliteral">'|'</font>) && (inverse)) {
00158 inverse = <font class="keyword">false</font>;
00159 strcpy(to,<font class="stringliteral">"</FONT>"</font>);
00160 to += strlen(to);
00161 <font class="keywordflow">continue</font>;
00162 }
00163 <font class="keywordflow">if</font> (*from == <font class="charliteral">'{'</font>) {
00164 strcpy(to,<font class="stringliteral">"<BR><STRONG>"</font>);
00165 to += strlen(to);
00166 <font class="keywordflow">if</font> ((from - &text[maxlen - len]) > 10) { <font class="comment">// not the beginning of the entry</font>
00167 strcpy(to,<font class="stringliteral">"<P>"</font>);
00168 to += strlen(to);
00169 }
00170 <font class="keywordflow">continue</font>;
00171 }
00172 <font class="keywordflow">if</font> (*from == <font class="charliteral">'}'</font>) {
00173 strcpy(to,<font class="stringliteral">" </STRONG>"</font>);
00174 to += strlen(to);
00175 <font class="keywordflow">continue</font>;
00176 }
00177 <font class="keywordflow">if</font> ((*from == <font class="charliteral">'\n'</font>) && (from[1] == <font class="charliteral">'\n'</font>)) {
00178 strcpy(to,<font class="stringliteral">"<P>"</font>);
00179 to += strlen(to);
00180 <font class="keywordflow">continue</font>;
00181 }
00182 *to++ = *from;
00183 }
00184 *to++ = 0;
00185 *to = 0;
00186 <font class="keywordflow">return</font> 0;
00187 }
</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.2.15 </small></address>
</body>
</html>
|