* normal.h >#define cr chr(13) >#define lf chr(10) >#define ff chr(12) >#define crlf cr+lf >#define c_tab chr(9) >#define c_quote ["] >#define c_apo ['] >#define c_tz [;] >#define c_bslash [\] >#define c_delim " -.,()$!?#/&\|[]@{}"+c_quote+c_apo >#define c_prazna "" > > >* dcHtml.prg >#include normal.h > > >define class cHtml as custom > nPretextLevel=0 > cCellClass="" > cRowClass="" > cTableClass="" > cTitle="" > cCSS="" > descr="" > keywords="VFP, Visual, FoxPro, Visual FoxPro" > language="en-us" > cPreFooter="" > ccrlf=chr(13)+chr(10) > >******************************* > procedure destroy() > _pretext="" > endproc > >******************************* > procedure IncPretext() > this.nPretextLevel = this.nPretextLevel + 1 > _pretext=replicate(c_tab, this.nPretextLevel) > endproc >******************************* > procedure DecPretext() > this.nPretextLevel = max(this.nPretextLevel - 1, 0) > _pretext=replicate(c_tab, this.nPretextLevel) > endproc > > >******************************* > procedure MakeCell(c, cAttrib) > local cClass > if empty(c) > c=" " > endif > this.IncPretext() > cClass=iif(empty(this.cCellClass)," ",[ class="]+this.cCellClass+[" ]) > cClass = cClass + iif(empty(cAttrib), "", cAttrib) > c="<td"+cClass+">"+this.ccrlf+; > this.indent(c)+ this.ccrlf+; > "</td>" > this.DecPretext() > return c >******************************* > procedure MakeHeaderCell(c, cAttrib) > local cClass > if empty(c) > c=" " > endif > this.IncPretext() > cClass=iif(empty(this.cCellClass)," ",[ class="]+this.cCellClass+[" ]) > cClass = cClass + iif(empty(cAttrib), "", cAttrib) > c=_pretext+"<th"+cClass+">"+this.ccrlf+; > this.indent(c)+ this.ccrlf+; > "</th>" > this.DecPretext() > return c >******************************* > procedure MakeRow(c, cAttrib) > local c, cClass > this.IncPretext() > cClass=iif(empty(this.cRowClass)," ",[ class="]+this.cRowClass+[" ]) > cClass = cClass + iif(empty(cAttrib), "", cAttrib) > c=_pretext+"<tr"+cClass+">"+this.ccrlf+; > this.indent(c)+ this.ccrlf+; > "</tr>" > this.DecPretext() > return c >******************************* > procedure MakeTable(c, cAttrib) > local c, cClass > this.IncPretext() > cClass=iif(empty(this.cTableClass)," ",[ class="]+this.cTableClass+[" ]) > cClass = cClass + iif(empty(cAttrib), "", cAttrib) > c=crlf+_pretext+"<table"+cClass+">"+crlf+; > this.indent(c)+ crlf+; > "</table>" > this.DecPretext() > return c >******************************* > procedure PageHeader > local c, cS > if empty(this.cCSS) > cS="" > else > cS=crlf+c_tab+[<link rel="stylesheet" href="]+this.cCSS+[" type="text/css">] > endif > this.descr=iif(empty(this.descr), this.cTitle, this.descr) >*-- TEXT BLOCK BEGIN > text TO c NOSHOW TEXTMERGE ><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" > "http://www.w3.org/TR/html4/loose.dtd"> > <HTML> ><HEAD> > <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1250"> > <META NAME="Author" CONTENT="Dragan Nedeljković, ndragan@ndragan.com"> > <META NAME="GENERATOR" CONTENT="<<sys(16,1)>>, <<ttoc(datetime())>>"> > <meta name="keywords" content="<<this.keywords>>"> > <meta name="revisit-after" content="15 days"> > <meta name="robots" content="index,follow"> > <meta name="language" content="<<this.language>>"> > <meta name="rating" content="General"> > <meta name="resource-type" content="document"> > <meta name="distribution" content="Global"> > <meta name="copyright" content="Copyright <<Year(Date())>> Dragan Nedeljkovich"> > <META NAME="Description" CONTENT="<<this.descr>>"> > <TITLE><<this.cTitle>></TITLE><<cS>> ></HEAD> ><BODY > > > ENDTEXT >*-- TEXT BLOCK END > > return c > endproc >******************************* > procedure PageFooter > local c > c=crlf+this.cPreFooter+crlf+"</BODY>"+crlf+"</HTML>" > return c > endproc > >******************************* > procedure MakeComment(cComm) > local c > c=crlf+_pretext+"<!-- "+cComm+" -->" > return c > endproc >******************************* > procedure indent(c) > local a[1], n, i > n=alines(a,c) > c="" > for i=1 to n > c = c + c_tab+a[i]+crlf > endfor > return c > endproc > >********************* > procedure ReColor(tnColor, tnFactor) >* return the html string for the color multiplied by the factor > local r,g,b, lcColor, lnNewColor > store 0 to r,g,b > if vartype(tnColor)="C" > tnColor=evaluate("0x"+tnColor) > endif > rgbcomp(tnColor, @r, @g, @b) > lnNewColor=rgb(r*tnFactor,g*tnFactor,b*tnFactor) > lcColor="#"+right(transform(lnNewColor, "@0"),6) > return lcColor > endproc > > >******************************* > procedure wraptag(c, cTag) > c="<"+cTag+">"+c+"</"+getwordnum(cTag,1)+">" > return c > endproc > >******************************* > procedure AddKeyword(cKW) > this.keywords = this.keywords + ", "+cKW > endproc > >******************************* > procedure ResetKeywords() > this.keywords="VFP, Visual, FoxPro, Visual FoxPro" > endproc > >******************************* >*[2006/12/21 18:24:28] dragan - load template and replace all properties in comments >*-- with their values > procedure LoadTemplate(oP, tcTemplate) > #define lGR "<!--" > #define dGR "-->" > #define lTemp "#1#" > #define dTemp "#2#" >*-- if it contains the delimiter, it's a template, else it's a filename of one > if not lGR$tcTemplate > c=filetostr(tcTemplate) > else > c=tcTemplate > endif > n=occurs(lGR, c) > for i=1 to n > lcChop=strextract(c, lGR, dGR,1,1+4) > lcToRepl=strextract(lcChop, lGR, dGR) > do case > case inlist(lcToRepl, space(1), chr(9)) >*-- do nothing, this is a comment > lcRepl=lTemp+lcToRepl+dTemp > case type(lcToRepl)#"U" >*-- it's an expression > lcRepl=transform(evaluate(lcToRepl)) > case pemstatus(oP,lcToRepl,5) >*-- it's a property of the parameter object > lcRepl=transform(getpem(oP,lcToRepl)) > otherwise > lcRepl=lTemp+lcToRepl+dTemp > endcase > if lcRepl#lcChop > c=strtran(c, lcChop, lcRepl) > endif > endfor >*-- we kept this one just to keep the number of occurrences constant, now it can go. >* c=Strtran(c, lGR+" OK "+dGR, "") > c=strtran(c, lTemp, lGR) > c=strtran(c, dTemp, dGR) > return c >enddefine >>