<!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>gbfhtmlhref.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>gbfhtmlhref.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************************************</font> 00002 <font class="comment"> gbfhtmlhref.cpp - GBF to HTML filter with hrefs </font> 00003 <font class="comment"> for strongs and morph tags</font> 00004 <font class="comment"> -------------------</font> 00005 <font class="comment"> begin : 2001-09-03</font> 00006 <font class="comment"> copyright : 2001 by CrossWire Bible Society</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 <gbfhtmlhref.h></font> 00021 00022 GBFHTMLHREF::GBFHTMLHREF() { 00023 setTokenStart(<font class="stringliteral">"<"</font>); 00024 setTokenEnd(<font class="stringliteral">">"</font>); 00025 00026 setTokenCaseSensitive(<font class="keyword">true</font>); 00027 00028 addTokenSubstitute(<font class="stringliteral">"Rf"</font>, <font class="stringliteral">")</small></font>"</font>); 00029 addTokenSubstitute(<font class="stringliteral">"Rx"</font>, <font class="stringliteral">"</a>"</font>); 00030 addTokenSubstitute(<font class="stringliteral">"FI"</font>, <font class="stringliteral">"<i>"</font>); <font class="comment">// italics begin</font> 00031 addTokenSubstitute(<font class="stringliteral">"Fi"</font>, <font class="stringliteral">"</i>"</font>); 00032 addTokenSubstitute(<font class="stringliteral">"FB"</font>, <font class="stringliteral">"<n>"</font>); <font class="comment">// bold begin</font> 00033 addTokenSubstitute(<font class="stringliteral">"Fb"</font>, <font class="stringliteral">"</n>"</font>); 00034 addTokenSubstitute(<font class="stringliteral">"FR"</font>, <font class="stringliteral">"<font color=\"#FF0000\">"</font>); <font class="comment">// words of Jesus begin</font> 00035 addTokenSubstitute(<font class="stringliteral">"Fr"</font>, <font class="stringliteral">"</font>"</font>); 00036 addTokenSubstitute(<font class="stringliteral">"FU"</font>, <font class="stringliteral">"<u>"</font>); <font class="comment">// underline begin</font> 00037 addTokenSubstitute(<font class="stringliteral">"Fu"</font>, <font class="stringliteral">"</u>"</font>); 00038 addTokenSubstitute(<font class="stringliteral">"FO"</font>, <font class="stringliteral">"<cite>"</font>); <font class="comment">// Old Testament quote begin</font> 00039 addTokenSubstitute(<font class="stringliteral">"Fo"</font>, <font class="stringliteral">"</cite>"</font>); 00040 addTokenSubstitute(<font class="stringliteral">"FS"</font>, <font class="stringliteral">"<sup>"</font>); <font class="comment">// Superscript begin// Subscript begin</font> 00041 addTokenSubstitute(<font class="stringliteral">"Fs"</font>, <font class="stringliteral">"</sup>"</font>); 00042 addTokenSubstitute(<font class="stringliteral">"FV"</font>, <font class="stringliteral">"<sub>"</font>); <font class="comment">// Subscript begin</font> 00043 addTokenSubstitute(<font class="stringliteral">"Fv"</font>, <font class="stringliteral">"</sub>"</font>); 00044 addTokenSubstitute(<font class="stringliteral">"TT"</font>, <font class="stringliteral">"<big>"</font>); <font class="comment">// Book title begin</font> 00045 addTokenSubstitute(<font class="stringliteral">"Tt"</font>, <font class="stringliteral">"</big>"</font>); 00046 addTokenSubstitute(<font class="stringliteral">"PP"</font>, <font class="stringliteral">"<cite>"</font>); <font class="comment">// poetry begin</font> 00047 addTokenSubstitute(<font class="stringliteral">"Pp"</font>, <font class="stringliteral">"</cite>"</font>); 00048 addTokenSubstitute(<font class="stringliteral">"Fn"</font>, <font class="stringliteral">"</font>"</font>); <font class="comment">// font end</font> 00049 addTokenSubstitute(<font class="stringliteral">"CL"</font>, <font class="stringliteral">"<br />"</font>); <font class="comment">// new line</font> 00050 addTokenSubstitute(<font class="stringliteral">"CM"</font>, <font class="stringliteral">"<!P><br />"</font>); <font class="comment">// paragraph <!P> is a non showing comment that can be changed in the front end to <P> if desired</font> 00051 addTokenSubstitute(<font class="stringliteral">"CG"</font>, <font class="stringliteral">""</font>); <font class="comment">// ???</font> 00052 addTokenSubstitute(<font class="stringliteral">"CT"</font>, <font class="stringliteral">""</font>); <font class="comment">// ???</font> 00053 addTokenSubstitute(<font class="stringliteral">"JR"</font>, <font class="stringliteral">"<div align=\"right\">"</font>); <font class="comment">// right align begin</font> 00054 addTokenSubstitute(<font class="stringliteral">"JC"</font>, <font class="stringliteral">"<div align=\"center\">"</font>); <font class="comment">// center align begin</font> 00055 addTokenSubstitute(<font class="stringliteral">"JL"</font>, <font class="stringliteral">"</div>"</font>); <font class="comment">// align end</font> 00056 00057 } 00058 00059 <a name="l00060"></a><a class="code" href="class_g_b_f_h_t_m_l_h_r_e_f.html#b0">00060</a> <font class="keywordtype">bool</font> <a class="code" href="class_g_b_f_h_t_m_l_h_r_e_f.html#b0">GBFHTMLHREF::handleToken</a>(<font class="keywordtype">char</font> **buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *token, DualStringMap &userData) { 00061 <font class="keyword">const</font> <font class="keywordtype">char</font> *tok; 00062 00063 <font class="keywordflow">if</font> (!substituteToken(buf, token)) { 00064 <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"WG"</font>, 2) || !strncmp(token, <font class="stringliteral">"WH"</font>, 2)) { <font class="comment">// strong's numbers</font> 00065 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" <small><em>&lt;<a href=\"#"</font>); 00066 <font class="keywordflow">for</font> (tok = token+1; *tok; tok++) 00067 <font class="comment">//if(token[i] != '\"')</font> 00068 *(*buf)++ = *tok; 00069 *(*buf)++ = <font class="charliteral">'\"'</font>; 00070 *(*buf)++ = <font class="charliteral">'>'</font>; 00071 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++) 00072 <font class="comment">//if(token[i] != '\"')</font> 00073 *(*buf)++ = *tok; 00074 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"</a>&gt;</em></small>"</font>); 00075 } 00076 00077 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"WTG"</font>, 3) || !strncmp(token, <font class="stringliteral">"WTH"</font>, 3)) { <font class="comment">// strong's numbers tense</font> 00078 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" <small><em>(<A HREF=\"#"</font>); 00079 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++) 00080 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>) 00081 *(*buf)++ = *tok; 00082 *(*buf)++ = <font class="charliteral">'\"'</font>; 00083 *(*buf)++ = <font class="charliteral">'>'</font>; 00084 <font class="keywordflow">for</font> (tok = token + 3; *tok; tok++) 00085 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>) 00086 *(*buf)++ = *tok; 00087 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"</a>)</em></small>"</font>); 00088 } 00089 00090 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"WT"</font>, 2) && strncmp(token, <font class="stringliteral">"WTH"</font>, 3) && strncmp(token, <font class="stringliteral">"WTG"</font>, 3)) { <font class="comment">// morph tags</font> 00091 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">" <small><em>(<a href=\"M"</font>); 00092 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++) 00093 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>) 00094 *(*buf)++ = *tok; 00095 *(*buf)++ = <font class="charliteral">'\"'</font>; 00096 *(*buf)++ = <font class="charliteral">'>'</font>; 00097 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++) 00098 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>) 00099 *(*buf)++ = *tok; 00100 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"</a>)</em></small>"</font>); 00101 } 00102 00103 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"RX"</font>, 2)) { 00104 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"<a href=\""</font>); 00105 <font class="keywordflow">for</font> (tok = token + 3; *tok; tok++) { 00106 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'<'</font> && *tok+1 != <font class="charliteral">'R'</font> && *tok+2 != <font class="charliteral">'x'</font>) { 00107 *(*buf)++ = *tok; 00108 } 00109 <font class="keywordflow">else</font> { 00110 <font class="keywordflow">break</font>; 00111 } 00112 } 00113 *(*buf)++ = <font class="charliteral">'\"'</font>; 00114 *(*buf)++ = <font class="charliteral">'>'</font>; 00115 } 00116 00117 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"RB"</font>, 2)) { 00118 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"<i>"</font>); 00119 userData[<font class="stringliteral">"hasFootnotePreTag"</font>] = <font class="stringliteral">"true"</font>; 00120 } 00121 00122 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"RF"</font>, 2)) { 00123 <font class="keywordflow">if</font>(userData[<font class="stringliteral">"hasFootnotePreTag"</font>] == <font class="stringliteral">"true"</font>) { 00124 userData[<font class="stringliteral">"hasFootnotePreTag"</font>] = <font class="stringliteral">"false"</font>; 00125 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"</i> "</font>); 00126 } 00127 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"<font color=\"#800000\"><small> ("</font>); 00128 } 00129 00130 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"FN"</font>, 2)) { 00131 <a class="code" href="class_s_w_basic_filter.html#b12">pushString</a>(buf, <font class="stringliteral">"<font face=\""</font>); 00132 <font class="keywordflow">for</font> (tok = token + 2; *tok; tok++) 00133 <font class="keywordflow">if</font>(*tok != <font class="charliteral">'\"'</font>) 00134 *(*buf)++ = *tok; 00135 *(*buf)++ = <font class="charliteral">'\"'</font>; 00136 *(*buf)++ = <font class="charliteral">'>'</font>; 00137 } 00138 00139 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!strncmp(token, <font class="stringliteral">"CA"</font>, 2)) { <font class="comment">// ASCII value</font> 00140 *(*buf)++ = (char)atoi(&token[2]); 00141 } 00142 00143 <font class="keywordflow">else</font> { 00144 <font class="keywordflow">return</font> <font class="keyword">false</font>; 00145 } 00146 } 00147 <font class="keywordflow">return</font> <font class="keyword">true</font>; 00148 } </pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 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>