<!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>