See changelog 20000616-22:10 GMT -3

This commit is contained in:
Luiz Rafael Culik
2000-06-17 01:07:55 +00:00
parent dc499e63bf
commit f6cd612cb0
8 changed files with 313 additions and 92 deletions

View File

@@ -14,7 +14,6 @@ PRG_SOURCES=\
gentrf.prg \
genng.prg \
genhtm.prg \
genchm.prg \
genrtf.prg \
genhpc.prg \
genasc.prg \

View File

@@ -308,38 +308,35 @@ FUNCTION ProcessChm()
ENDIF
cFileName := ""
// Strip off any other non-alphabetic/numeric characters
FOR j := 1 TO LEN( cTemp )
cChar := SUBSTR( cTemp, j, 1 )
IF ( cChar >= "0" .AND. cChar <= "9" ) .OR. ;
( cChar >= "A" .AND. cChar <= "Z" ) .OR. cChar = "_"
( cChar >= "A" .AND. cChar <= "Z" ) .OR. cChar = "_"
cFileName += cChar
ENDIF
NEXT
// See if file name is present already. If so then modify
cFileName := LEFT( cFileName, 21 )
cFileName := LEFT( cFileName, 36 )
nEnd := 1
nCount := 0
DO WHILE nEnd > 0
nEnd := ASCAN( aDocInfo, { | a | a[ 4 ] == cFileName + ".htm" } )
nEnd := ASCAN( aDocInfo, { | a | lower(a[ 4 ]) == lower(cFileName) + ".htm" } )
IF nEnd > 0
// This will break if there are more than 10 files with the same first
// seven characters. We take our chances.
IF LEN( cFileName ) = 21
cFileName := STUFF( cFileName, 21, 1, STR( nCount, 1, 0 ) )
IF LEN( cFileName ) = 36
cFileName := STUFF( cFileName, 36, 1, STR( nCount, 1, 0 ) )
ELSE
cFileName += STR( nCount, 1, 0 )
ENDIF
nCount ++
ENDIF
ENDDO
// Add on the extension
cFileName := LEFT( cFileName, 21 ) + ".htm"
cFileName := LEFT( cFileName, 36 ) + ".htm"
IF lDoc
oChm := THTML():NewChm( 'chm\' + cFileName ,,cFuncName)
ENDIF

View File

@@ -311,14 +311,14 @@ FUNCTION ProcessWww()
FOR j := 1 TO LEN( cTemp )
cChar := SUBSTR( cTemp, j, 1 )
IF ( cChar >= "0" .AND. cChar <= "9" ) .OR. ;
( cChar >= "A" .AND. cChar <= "Z" ) .OR. cChar = "_"
( cChar >= "A" .AND. cChar <= "Z" ) .OR. cChar = "_" .or. cchar ="@"
cFileName += cChar
ENDIF
NEXT
// See if file name is present already. If so then modify
cFileName := LEFT( cFileName, 21 )
cFileName := LEFT( cFileName, 36 )
nEnd := 1
nCount := 0
DO WHILE nEnd > 0
@@ -328,8 +328,8 @@ FUNCTION ProcessWww()
// This will break if there are more than 10 files with the same first
// seven characters. We take our chances.
IF LEN( cFileName ) = 21
cFileName := STUFF( cFileName, 21, 1, STR( nCount, 1, 0 ) )
IF LEN( cFileName ) = 36
cFileName := STUFF( cFileName, 36, 1, STR( nCount, 1, 0 ) )
ELSE
cFileName += STR( nCount, 1, 0 )
ENDIF
@@ -338,7 +338,7 @@ FUNCTION ProcessWww()
ENDDO
// Add on the extension
cFileName := LEFT( cFileName, 21 ) + ".htm"
cFileName := LEFT( cFileName, 36 ) + ".htm"
IF lDoc
oHtm := THTML():New( 'htm\' + cFileName )
ENDIF
@@ -405,13 +405,13 @@ FUNCTION ProcessWww()
// Now start writing out what we know
IF lData
oHtm:WriteText( "<H1>DATA " + ALLTRIM( PAD( cFuncName, 21 ) ) + "</H1>" )
oHtm:WriteText( "<H1>DATA " + ALLTRIM( cFuncName ) + "</H1>" )
oHtm:WriteText( "<p>" + cOneline + "</p>" + hb_osnewline() )
ELSEIF lMethod
oHtm:WriteText( "<H1> METHOD " + ALLTRIM( PAD( cFuncName, 21 ) ) + "</H1>" )
oHtm:WriteText( "<H1> METHOD " + ALLTRIM( cFuncName ) + "</H1>" )
oHtm:WriteText( "<p>" + cOneline + "</p>" + hb_osnewline() )
ELSE
oHtm:WriteText( "<H1>" + ALLTRIM( PAD( cFuncName, 21 ) ) + "</H1>" )
oHtm:WriteText( "<H1>" + ALLTRIM( cFuncName ) + "</H1>" )
AADD( aWWW, { cFuncName, LEFT( cFileName, AT( ".", cFileName ) - 1 ) } )
oHtm:WriteText( "<p>" + cOneline + "</p>" + hb_osnewline() )
ENDIF

View File

@@ -240,7 +240,7 @@ FUNCTION ProcessOs2()
ENDIF
IF .NOT. EMPTY( cSeeAlso )
oOs2:WriteText( ".br")
oOs2:WriteParBold( "See Also&colon." )
oOs2:WriteParBold( "See Also:" )
FOR nAlso := 1 TO LEN( aAlso )
IF nAlso == 1
@@ -374,14 +374,14 @@ FUNCTION ProcessOs2()
IF AT( cSyn, cBuffer ) > 0
IF GetItem( cBuffer, nCurdoc )
oOs2:WriteParBold( " Syntax" )
oOs2:WriteParBold( "Syntax" )
nMode := D_SYNTAX
lAddBlank := .T.
end
ELSEIF AT( cConstruct, cBuffer ) > 0
IF GetItem( cBuffer, nCurdoc )
oOs2:WriteParBold( " Constructor syntax" )
oOs2:WriteParBold( "Constructor syntax" )
nMode := D_SYNTAX
lAddBlank := .T.
@@ -389,8 +389,8 @@ end
ELSEIF AT( cArg, cBuffer ) > 0
IF GetItem( cBuffer, nCurdoc )
IF !lBlankLine
oOs2:WriteParBold( " Arguments" )
oOs2:WriteText( ".br" )
oOs2:WriteParBold( "Arguments" )
ENDIF
@@ -404,7 +404,7 @@ end
oOs2:WriteText( ".br" )
ENDIF
oOs2:WriteParBold( " Returns" )
oOs2:WriteParBold( "Returns" )
nMode := D_RETURN
lAddBlank := .T.
@@ -416,7 +416,7 @@ end
IF !lBlankLine
oOs2:WriteText( ".br" )
ENDIF
oOs2:WriteParBold( " Description" )
oOs2:WriteParBold( "Description" )
nMode := D_DESCRIPTION
lAddBlank := .T.
@@ -427,7 +427,7 @@ end
oOs2:WriteText( ".br" ) //:endpar()
ENDIF
oOs2:WriteParBold( " Data" )
oOs2:WriteParBold( "Data" )
nMode := D_DATALINK
lAddBlank := .T.
@@ -436,7 +436,7 @@ end
ELSEIF AT( cDatanolink, cBuffer ) > 0
IF GetItem( cBuffer, nCurdoc )
IF !lIsDataLink
oOs2:WriteParBold( " Data" )
oOs2:WriteParBold( "Data" )
ENDIF
nMode := D_NORMAL
@@ -446,7 +446,7 @@ end
ELSEIF AT( cMethodslink, cBuffer ) > 0
IF GetItem( cBuffer, nCurdoc )
oOs2:WriteParBold( " Method" )
oOs2:WriteParBold( "Method" )
nMode := D_METHODLINK
lAddBlank := .T.
@@ -455,7 +455,7 @@ end
ELSEIF AT( cMethodsnolink, cBuffer ) > 0
IF GetItem( cBuffer, nCurdoc )
IF !lIsMethodLink
oOs2:WriteParBold( " Methods" )
oOs2:WriteParBold( "Methods" )
ENDIF
nMode := D_NORMAL
@@ -466,7 +466,7 @@ end
IF !lBlankLine
oOs2:WriteText( ".br" )
ENDIF
oOs2:WriteParBold( " Examples" )
oOs2:WriteParBold( "Examples" )
nMode := D_EXAMPLE
lAddBlank := .T.
end
@@ -476,7 +476,7 @@ end
oOs2:WriteText( ".br" )
ENDIF
oOs2:WriteParBold( " Tests" )
oOs2:WriteParBold( "Tests" )
nMode := D_EXAMPLE
lAddBlank := .T.
end
@@ -489,7 +489,7 @@ end
IF !lBlankLine
oOs2:WriteText( ".br" )
ENDIF
oOs2:WriteParBold( " Compliance" )
oOs2:WriteParBold( "Compliance" )
nMode := D_COMPLIANCE
lAddBlank := .T.
end
@@ -498,7 +498,7 @@ end
IF !lBlankLine
oOs2:WriteText( ".br" )
ENDIF
oOs2:WriteParBold( " Platforms" )
oOs2:WriteParBold( "Platforms" )
nMode := D_NORMAL
lAddBlank := .T.
end
@@ -507,7 +507,7 @@ end
IF !lBlankLine
oOs2:WriteText( ".br" )
ENDIF
oOs2:WriteParBold( " Files" )
oOs2:WriteParBold( "Files" )
nMode := D_NORMAL
lAddBlank := .T.
@@ -517,7 +517,7 @@ end
IF !lBlankLine
oOs2:WriteText( ".br" )
ENDIF
oOs2:WriteParBold( " Function" )
oOs2:WriteParBold( "Function" )
nMode := D_NORMAL
lAddBlank := .T.
@@ -766,11 +766,12 @@ FUNCTION Formatos2Buff( cBuffer, cStyle, ongi )
cReturn := '<par>' + creturn + ' </par>'
ELSEIF cStyle == 'Syntax'
cReturn := '<par> ' + cReturn + ' </par>'
cReturn := '<par>' + Alltrim(cReturn) + '</par>'
ELSEIF cStyle == 'Arguments'
nPos := 0
? 'Estou em formatos2buff'
? AT( "<par>", cReturn )
IF AT( "<par>", cReturn ) > 0
cReturn := STRTRAN( cReturn, "<par>", "" )
cReturn := STRTRAN( cReturn, "</par>", "" )
@@ -1033,7 +1034,7 @@ FUNCTION Procos2Desc( cBuffer, oOs2, cStyle )
DEFAULT cStyle TO "Default"
lendfixed := .F.
IF AT( '<par>', cBuffer ) == 0 .AND. !EMPTY( cBuffer ) .AND. cstyle <> "Example"
IF AT( '<par>', cBuffer ) == 0 .AND. !EMPTY( cBuffer ) .AND. cstyle <> "Example"
cBuffer := '<par>' + cBuffer
ENDIF
IF EMPTY( cBuffer )
@@ -1043,10 +1044,10 @@ FUNCTION Procos2Desc( cBuffer, oOs2, cStyle )
IF cStyle <> "Example" .AND. AT( "<table>", cBuffer ) == 0 .AND. AT( "<fixed>", cBuffer ) = 0
IF AT( "<par>", cBuffer ) >= 0 .OR. AT( "</par>", cBuffer ) = 0 .AND. !EMPTY( cbuffer )
IF AT( "<par>", cBuffer ) > 0 .AND. AT( "</par>", cBuffer ) > 0
? " Estou Aqui"
IF cStyle == "Arguments"
creturn := cBuffer
? " Estou Aqui 2"
cReturn := STRTRAN( cReturn, "<par>", "" )
cReturn := STRTRAN( cReturn, "</par>", "" )
cReturn := ALLTRIM( cReturn )
@@ -1061,9 +1062,9 @@ FUNCTION Procos2Desc( cBuffer, oOs2, cStyle )
// cBuffer:= strtran(cBuffer,"<par>","<par><b>")
IF lArgBold
cReturn := '<par><b>' + cOLine + '</b> ' + cReturn + ' </par>'
cReturn := '<par><b>' + cOLine + '</b> ' + cReturn + ' </par>'
ELSE
cReturn := '<par>' + cOLine + ' ' + cReturn + ' </par>'
cReturn := '<par>' + cOLine + ' ' + cReturn + ' </par>'
ENDIF
cbuffer := cReturn
@@ -1091,6 +1092,7 @@ FUNCTION Procos2Desc( cBuffer, oOs2, cStyle )
ENDIF
IF cStyle == "Description" .OR. cStyle == "Compliance"
/*
nIdentLevel := 5
nPos := 0
@@ -1124,61 +1126,76 @@ FUNCTION Procos2Desc( cBuffer, oOs2, cStyle )
ENDIF
IF !EMPTY( cLine )
if AT("<b>",cLine)>0 .or. AT("</b>",cLine)>0
cLine := STRTRAN( cLine, '<b>', '' )
cLine := STRTRAN( cLine, '</b>', '' )
oOs2:WriteParBold(cLine,.f.)
Else
IF LEFT(CLINE,LEN(SPACE(nidentLevel ))) ==SPACE(nidentLevel )
oos2:WriteText( cLine )
Else
oos2:WriteText(SPACE(nidentLevel )+ cLine )
endif
Endif
if AT("<b>",cLine)>0 .or. AT("</b>",cLine)>0
cLine := STRTRAN( cLine, '<b>', '' )
cLine := STRTRAN( cLine, '</b>', '' )
oOs2:WriteParBold(cLine,.f.)
Else
oos2:WriteText(SPACE(nidentLevel )+ cLine )
Endif
oOs2:WriteTExt(".br")
ENDIF
curPos += nPos
ENDDO
*/
nIdentLevel := 6
nPos := 0
/* IF AT( '</par>', cBuffer ) > 0
cBuffer := STRTRAN( cBuffer, "</par>", "" )
ENDIF*/
IF !EMPTY( cBuffer )
// cBuffer:=SUBSTR(cBuffer,2)
/* cBuffer := STRTRAN( cBuffer, "<", "&lt;" )
cBuffer := STRTRAN( cBuffer, ">", "&gt;" )
*/
cBuffeR := ALLTRIM( cBuffer )
oos2:WritePar2( cBuffer,":p." )
ENDIF
ELSEIF cStyle == "Arguments"
cBuffer := STRTRAN( cBuffer, ':', "&colon." )
/* cBuffer := STRTRAN( cBuffer, ':', "&colon." )
cBuffer := STRTRAN( cBuffer, '<b>', 'hp2.' )
cBuffer := STRTRAN( cBuffer, '</b>', 'ehp2.' )
IF AT( '</par>', cBuffer ) > 0
cBuffer := STRTRAN( cBuffer, "</par>", "" )
ENDIF
cBuffer := STRTRAN( cBuffer, "<", "&lt." )
cBuffer := STRTRAN( cBuffer, ">", "&gt." )
IF !EMPTY( cBuffer )
cBuffer := SUBSTR( cBuffer, 2 )
cBuffer := STRTRAN( cBuffer, 'hp2.', ':hp2.' )
cBuffer := STRTRAN( cBuffer, 'ehp2.', ':ehp2.' )
oos2:writetext(cbuffer+CRLF+'.br')
/*a oOs2:writeText( cBuffer+CRLF+".br") */
oOs2:writeText( cBuffer+CRLF+".br")
ENDIF
*/
IF !EMPTY( cBuffer )
// cBuffer:=SUBSTR(cBuffer,2)
cBuffeR := ALLTRIM( cBuffer )
oos2:WritePar2( cBuffer,":p." )
ENDIF
ELSEIF cStyle == "Syntax"
IF AT( '</par>', cBuffer ) > 0
/* IF AT( '</par>', cBuffer ) > 0
cBuffer := STRTRAN( cBuffer, "</par>", "" )
ENDIF
ENDIF*/
IF !EMPTY( cBuffer )
cBuffer := SUBSTR( cBuffer, 2 )
/* cBuffer := SUBSTR( cBuffer, 2 )
oOs2:WriteParBold( cBuffer,.f.)
oOs2:writeText('.br')
oOs2:writeText('.br')
oOs2:writeText('.br')*/
// ? cBuffer
cBuffer:=Alltrim(cBuffer)
oos2:WritePar2( cBuffer,":p.","Syntax" )
ENDIF
ELSEIF cStyle == "Default"
IF AT( '</par>', cBuffer ) > 0
/* IF AT( '</par>', cBuffer ) > 0
cBuffer := STRTRAN( cBuffer, "</par>", "" )
ENDIF
ENDIF*/
IF !EMPTY( cBuffer )
cBuffer := SUBSTR( cBuffer, 2 )
oOs2:WritePar( cBuffer )
cBuffer := alltrim( cBuffer )
oOs2:WritePar2( cBuffer ,":p.")
ENDIF
ENDIF

View File

@@ -357,7 +357,7 @@ FUNCTION ProcessRtf()
ELSEIF lMethod
oRtf:WriteJumpTitle( LEFT( cFilename, AT( '.', cFilename ) - 1 ) + cFuncName, "Method " + cFuncName )
ELSE
oRtf:WriteTitle( PAD( cFuncName, 40 ), cFuncName, cOneLine )
oRtf:WriteTitle( cFuncName, cFuncName, cOneLine )
// oRtf:WriteParBold( cOneLine )
// oRtf:WriteParBox( cBar )
ENDIF

View File

@@ -455,14 +455,14 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
aadd(aMetaContents,{'Keywords',"Harbour project, Clipper, xBase, database, Free Software, GNU, compiler, cross platform, 32-bit, FiveWin,"+cItem})
ohtm:=THTML():new('htm\hb'+strtran(citem," ","")+'.htm',aMetaContents)
ohtm:WriteText('<h2>'+adocinfo[1,1]+'</h2><br>')
ohtm:WriteText("<pre><ul>")
ohtm:WriteText("<table>")
for ppp:=1 to len(adocinfo)
if citem ==adocinfo[ppp,1]
oHtm:Writelink(adocinfo[ppp,4],pad(adocinfo[ppp,2],21)+adocinfo[ppp,3])
if citem ==adocinfo[ppp,1]
oHtm:WritelinkTable(adocinfo[ppp,4],adocinfo[ppp,2],adocinfo[ppp,3])
else
ohtm:WriteText("</ul></pre>")
ohtm:WriteText("</table>")
ohtm:close()
citem:=adocinfo[ppp,1]
aMetaContents:={}
@@ -473,14 +473,15 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
// oHtm:WriteMetaTag('Keywords',"Harbour project, Clipper, xBase, database, Free Software, GNU, compiler, cross platform, 32-bit, FiveWin,"+cItem)
ohtm:WriteText('<h2>'+adocinfo[ppp,1]+'</h2><br>')
ohtm:WriteText("<pre><ul>")
oHtm:Writelink(adocinfo[ppp,4],pad(adocinfo[ppp,2],21)+adocinfo[ppp,3])
ohtm:WriteText("<table>")
oHtm:WritelinkTable(adocinfo[ppp,4],adocinfo[ppp,2],adocinfo[ppp,3])
endif
next
if ppp>len(adocinfo)
exit
endif
enddo
ohtm:WriteText("</table>")
ohtm:close()
aMetaContents:={}
AADD(aMetaContents,{"GENERATOR","HBDOC Harbour document Extractor"})
@@ -528,6 +529,7 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
FWRITE( nHpj, '[OPTIONS]' + CRLF )
FWRITE( nHpj, 'Compatibility=1.1 or later'+CRLF)
FWRITE( nHpj, 'Auto Index=Yes'+CRLF)
FWRITE( nHpj,'Full-text search=Yes'+CRLF)
FWRITE( nHpj, 'Language=0x416 Português (brasileiro)' + CRLF )
FWRITE( nHpj, 'Contents file=.\'+ lower(substr(cLinkName,1,AT(".",cLinkName)-1)) +".hhc"+ CRLF )
FWRITE( nHpj, 'Compiled file=.\'+ lower(substr(cLinkName,1,AT(".",cLinkName)-1)) +".chm"+ CRLF )
@@ -549,6 +551,7 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
ohtm:=THTML():NewContent('chm\'+lower(substr(cLinkName,1,AT(".",cLinkName)-1)) +".hhc")
ohtm:WriteText('<!--Sitemap 1.0-->')
ohtm:Addobject("text/site properties")
oHtm:AddParam("FrameName","Ajuda")
ohtm:EndObject()
ohtm:WriteText("<ul>")
oHtm:ListItem()
@@ -568,6 +571,7 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
oHtm:AddParam("Local","license.htm")
oHtm:EndObject()
OHTM:WriteChmLink('license.htm',"Harbour License")
if Alltrim(cLinkName)=='harbour.lnk'
oHtm:ListItem()
oHtm:AddObject("text/sitemap")
oHtm:AddParam("Name","GNU License")
@@ -586,7 +590,13 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
oHtm:AddParam("Local","harbourextensions.htm")
oHtm:EndObject()
OHTM:WriteChmLink('harbourextensions.htm',"Harbour Extensions")
endif
oHtm:WriteText( "</UL>" )
ohtm:ListItem()
oHtm:AddObject("text/sitemap")
ohtm:addParam("Name","Harbour Functions by Categorie")
oHtm:Endobject()
asort(adocinfo,,,{|x,y| x[1]+x[2]<y[1]+y[2]})
do while .t.
citem:=adocinfo[1,1]

View File

@@ -54,6 +54,7 @@ CLASS THTML
METHOD WritePar( cPar )
METHOD WriteParBold( cPar )
METHOD WriteLink( cLink ,cName)
METHOD WriteLinkTable( cLink ,cName)
METHOD WriteChmLink( cLink ,cName)
METHOD WriteText( cText )
METHOD WriteMetaTag(cTag,cDescription)
@@ -80,19 +81,20 @@ METHOD New( cFile,aMetaContents ) CLASS THTML
ENDIF
nX := Self:nHandle
FWRITE( Self:nHandle, "<HTML>" + CRLF )
FWRITE( Self:nHandle, "<HEAD>" + CRLF )
if Valtype(aMetaContents) <> NIL .and. Valtype(aMetaContents)=="A"
For nCount:=1 to len(aMetaContents)
Self:WriteMetaTag(aMetaContents[nCount,1],aMetaContents[nCount,2])
NEXT
Endif
FWRITE( Self:nHandle, "<BODY>" + CRLF )
RETURN Self
METHOD WriteTitle( cTitle ) CLASS THTML
FWRITE( Self:nHandle, "<TITLE>" + CRLF + cTitle + CRLF + "</Title>" + CRLF + '</HEAD>' + CRLF )
FWRITE( Self:nHandle, "<BODY>" + CRLF )
RETURN Self
METHOD WritePar( cPar ) CLASS THTML
@@ -137,6 +139,34 @@ METHOD WriteLink( cLink, cName ) CLASS THTML
LOCAL nPos
LOCAL cTemp := ''
nPos := AT( "()", cLink )
IF nPos > 0
if AT(".htm",cLink)=0
cTemp := SUBSTR( cLink, 1, nPos - 1 ) + '.htm'
else
cTemp := SUBSTR( cLink, 1, nPos - 1 )
endif
ELSE
if AT(".htm",cLink)=0
cTemp := ALLTRIM( cLink ) + '.htm'
else
cTemp := ALLTRIM( cLink )
endif
ENDIF
IF cName != Nil
cLink := cName
ENDIF
cTemp := STRTRAN( cTemp, " ", "" )
FWRITE( Self:nHandle, "<LI><a href=" + LOWER( cTemp ) + ">" + cLink + "</a></LI>" + CRLF )
RETURN Self
METHOD WriteLinkTable( cLink, cName,cInfo ) CLASS THTML
LOCAL nPos
LOCAL cTemp := ''
nPos := AT( "()", cLink )
IF nPos > 0
if AT(".htm",cLink)=0
@@ -155,7 +185,7 @@ METHOD WriteLink( cLink, cName ) CLASS THTML
cLink := cName
ENDIF
cTemp := STRTRAN( cTemp, " ", "" )
FWRITE( Self:nHandle, "<LI><a href=" + LOWER( cTemp ) + ">" + cLink + "</a></LI>" + CRLF )
FWRITE( Self:nHandle, "<tr><td><a href=" + LOWER( cTemp ) + ">" + cLink + "</a></td><td>" +cinfo +'</td></tr>'+ CRLF )
RETURN Self

View File

@@ -88,12 +88,15 @@ CLASS TOs2
DATA nHandle
DATA aLinkRef
DATA nRef
DATA aHeadRef
DATA aHeadRef
DATA aIndRef
METHOD New( cFile )
METHOD WritePar( cPar )
METHOD WritePar2( cPar,ctag )
METHOD WriteLink( cLink )
METHOD ScanLink( cLink )
METHOD ScanRef( cRef )
METHOD ScanRef( cRef )
METHOD ScanInd( cRef )
METHOD WriteJumpLink( cLink, cName, cText )
METHOD CLOSE()
METHOD WriteText( cPar )
@@ -108,6 +111,7 @@ METHOD New( cFile ) CLASS TOs2
IF Self:aLinkRef == NIL
Self:aLinkRef := {}
Self:aHeadRef := {}
Self:aIndRef := {}
Self:nRef := 1
ENDIF
@@ -133,12 +137,103 @@ METHOD WritePar( cPar ) CLASS TOs2
RETURN Self
METHOD WriteText( cPar ) CLASS TOs2
METHOD WritePar2( cBuffer,cTag,cStyle ) CLASS TOs2
Local aLines:={}
LOCAL nPos,cLine:=''
Default cStyle to "Default"
if at("-",cBuffer)>0
?cBuffer
Endif
cBuffer := STRTRAN( cBuffer, '<b>', ':hp2.' )
cBuffer := STRTRAN( cBuffer, '</b>', ':ehp2.' )
cBuffer := STRTRAN( cBuffer, '<par>', '' )
cBuffer := STRTRAN( cBuffer, '</par>', '' )
cBuffer := self:DostoOs2Text(cBuffer)
if at("&minus.",cBuffer)>0
?cBuffer
Endif
aLines:=FormatStringBuffer(cBuffer)
if at("&minus.",cBuffer)>0
?cBuffer
Endif
For nPos:=1 to LEN(aLines)
cLine:=aLines[nPos]
If nPos==1
If !empty(cLine) .and. cStyle <>"Syntax"
FWRITE( Self:nHandle,cTag+ cLine + CRLF)
elseIf !empty(cLine) .and. cStyle =="Syntax"
FWRITE( Self:nHandle,cTag+ ":hp2."+ cLine +":ehp2." +CRLF)
Endif
Else
If !empty(cLine) .and. cStyle <>"Syntax"
FWRITE( Self:nHandle, cLine + CRLF)
elseIf !empty(cLine) .and. cStyle =="Syntax"
FWRITE( Self:nHandle, ":hp2."+ cLine +":ehp2." +CRLF)
Endif
Endif
NEXT
/*
if cStyle=="Syntax"
? cBuffer
endif
DO WHILE !lendPar
IF nPos == 0
cLine := SUBSTR( cBuffer, 1, 231 )
nPos := RAT( " ", cLine )
IF nPos > 0
cLine := SUBSTR( cBuffer, 1, nPos )
ENDIF
If !empty(cLine) .and. cStyle <>"Syntax"
FWRITE( Self:nHandle,cTag+ cLine + CRLF)
elseIf !empty(cLine) .and. cStyle =="Syntax"
FWRITE( Self:nHandle,cTag+ ":hp2."+ cLine +":ehp2." +CRLF)
Endif
if nLen<255
lEndpar:=.T.
exit
endif
ELSE
cLine := SUBSTR( cBuffer, curPos, 231 )
IF AT( '</par>', cLine ) > 0
lEndPar := .T.
cLine := STRTRAN( cLine, " </par>", "" )
ENDIF
nPos := RAT( " ", cLine )
IF nPos > 0
cLine := SUBSTR( cBuffer, curpos, nPos )
nPos -= 1
ELSE
IF cLine == "</par>"
cLine := ''
ENDIF
ENDIF
If !empty(cLine) .and. cStyle <>"Syntax"
FWRITE( Self:nHandle,cTag+ cLine + CRLF)
elseIf !empty(cLine) .and. cStyle =="Syntax"
FWRITE( Self:nHandle,cTag+ ":hp2."+ cLine +":ehp2." +CRLF)
Endif
ENDIF
curPos += nPos
? Curpos
ENDDO
*/
FWRITE( Self:nHandle, cPar + CRLF )
RETURN Self
METHOD WriteText( cPar ) CLASS TOs2
FWRITE( Self:nHandle, cPar + CRLF )
RETURN Self
METHOD WriteParBold( cPar ,lMarg) CLASS TOs2
DEFAULT lMarg to .t.
IF lMarg
@@ -155,25 +250,38 @@ METHOD WriteTitle( cTopic, cTitle ,cCategory) CLASS TOs2
LOCAL nPos
LOCAL cWrite
LOCAL nItem
LOCAL nrItem
LOCAL nrItem,nIItem
LOCAL cRefCateg
LOCAL cIndCateg
cTopic := ALLTRIM( cTopic )
cRefCateg:=ALLTRIM(left(cCategory,5 ))
cRefCateg:=SetCateg(cCategory )
cIndCateg:=SetInd(cCategory)
IF Self:Scanlink( cTopic ) == 0
nItem := ASCAN( Self:aLinkRef, { | a | upper(a[ 1 ]) == upper(cTopic )} )
ELSE // Just in case that nItem>0 so the Link is already referenced
nItem := ASCAN( Self:aLinkRef, { | a | upper(a[ 1 ]) == upper(cTopic) } )
ENDIF
FWRITE( Self:nHandle, ':h1 res=' + ALLTRIM( STR( nItem ) ) + '.' + cTopic + CRLF )
// FWRITE( Self:nHandle, ':h1 res=' + ALLTRIM( STR( nItem ) ) + '.' + cTopic + CRLF )
If Self:ScanInd(cIndCateg)==0
niItem := ASCAN( Self:aIndRef, { | a | upper(a) == upper(cIndCateg )} )
FWRITE( Self:nHandle, ':h1 ' + ::aIndRef[niItem] + "."+ UPPER( cCategory ) + CRLF)
ELSE // Just in case that nItem>0 so the Link is already referenced
niItem := ASCAN( Self:aIndRef, { | a | upper(a) == upper(cIndCateg) } )
ENDIF
IF niItem>0
FWRITE( Self:nHandle, ':h2 '+ 'id=' + ::aIndRef[niItem] +' res=' + ALLTRIM( STR( nItem ) ) + '.' + cTopic + CRLF )
Endif
If Self:ScanRef(cRefCateg)==0
nrItem := ASCAN( Self:aHeadRef, { | a | upper(a) == upper(cRefCateg )} )
FWRITE( Self:nHandle, ':i1 id=' + ::aHeadRef[nrItem] + " global." + UPPER( cCategory ) + CRLF )
FWRITE( Self:nHandle, ':i1 id=' + ::aHeadRef[nrItem] + "."+ UPPER( cCategory ) + CRLF)
ELSE // Just in case that nItem>0 so the Link is already referenced
nrItem := ASCAN( Self:aHeadRef, { | a | upper(a) == upper(cRefCateg) } )
ENDIF
if nritem>0
FWRITE( Self:nHandle, ':i2 refid=' + ::aHeadRef[nrItem] + " global." + UPPER( cTopic ) + CRLF )
FWRITE( Self:nHandle, ':i2 refid=' + ::aHeadRef[nrItem] + "." + UPPER( cTopic ) + CRLF )
Endif
cTopic := ::DosToOs2Text(cTopic)
cTitle := ::DosToOs2Text(cTitle)
@@ -237,18 +345,37 @@ METHOD ScanRef( cLink ) CLASS TOs2
RETURN nItem
METHOD ScanInd( cLink ) CLASS TOs2
LOCAL nItem
LOCAL nReturn
nItem := ASCAN( Self:aIndRef, { | a | Upper(a)== upper(cLink) } )
IF nItem == 0
AADD( Self:aIndRef, upper(cLink))
ENDIF
RETURN nItem
METHOD DosToOs2Text( cText ) CLASS TOs2
LOCAL cReturn
cReturn := STRTRAN( cText, '&', "&amp." )
cReturn := STRTRAN( cReturn, '"', "&cdq." )
cReturn := STRTRAN( cReturn, ':', "&colon." )
if at(":hp2.",cReturn)==0 .or. at(":ehp2.",cReturn)==0
cReturn := STRTRAN( cReturn, ':', "&colon." )
endif
cReturn := STRTRAN( cReturn, ',', "&comma." )
cReturn := STRTRAN( cReturn, '_', "&us." )
cReturn := STRTRAN( cReturn, '~', "&tilde." )
cReturn := STRTRAN( cReturn, '|', "&splitvbar." )
cReturn := STRTRAN( cReturn, '/', "&slash." )
cReturn := STRTRAN( cReturn,"<&slash.par>","</par>")
cReturn := STRTRAN( cReturn, ';', "&semi." )
cReturn := STRTRAN( cReturn, ')', "&rpar." )
cReturn := STRTRAN( cReturn, ']', "&rbrk.." )
@@ -258,8 +385,6 @@ METHOD DosToOs2Text( cText ) CLASS TOs2
cReturn := STRTRAN( cReturn, '{', "&lbrc." )
cReturn := STRTRAN( cReturn, '=', "&eq." )
cReturn := STRTRAN( cReturn, '$', "&dollar." )
cReturn := STRTRAN( cReturn, "<", "&lt." )
cReturn := STRTRAN( cReturn, ">", "&gt." )
cReturn := STRTRAN( cReturn, "-", "&minus." )
RETURN cReturn
@@ -286,4 +411,47 @@ METHOD WriteJumpLink( cLink, cText ) CLASS TOs2
RETURN Self
Static function SetCateg(cRef)
Local cReturn
cReturn:=Alltrim(left(cRef,5))
cReturn+="X"
Return cReturn
Static function SetInd(cRef)
Local cReturn
cReturn:=Alltrim(left(cRef,4))
cReturn+="Y"
Return cReturn
Static FUNCTION FormatStringBuffer(cBuffer)
Local nLen,nPos,aLine:={}
Local cLine:=''
nLen:=Len(cBuffer)
? nLen
WHILE nLen>230
If nLen>230
cLine:=Substr(cBuffer,1,230)
nPos:=RAT(" ",cLine)
IF nPos>0
cLine:=Substr(cBuffer,1,nPos)
cBuffer:=Strtran(cBuffer,cLine,"")
AADD(aLine,alltrim(cLine))
nLen:=Len(cBuffer)
Endif
if at('&minus.',cLine)>0
nPos:=RAT(".",cLine)
IF nPos>0
cLine:=Substr(cBuffer,1,nPos)
cBuffer:=Strtran(cBuffer,cLine,"")
AADD(aLine,alltrim(cLine))
nLen:=Len(cBuffer)
Endif
Endif
Endif
ENDDO
IF nLen<=230
aadd(aLine,ALLTRIM(cBuffer))
ENDIF
RETURN aLine
*+ EOF: OS2.PRG