2012-06-27 00:09 UTC+0200 Viktor Szakats (harbour syenar.net)

* examples/hbdoc/genhtml.prg
  * examples/hbdoc/gentpl.prg
  * examples/hbdoc/gentxt.prg
  * examples/hbdoc/genxml.prg
  * examples/hbdoc/hbdoc.prg
  * examples/hbdoc/tmplates.prg
    % cleanups and formatting
    + added support for UTF8 HVM CP
    + enabled UTF8 HVM CP. it means that now input files
      can really be UTF8 ones.
This commit is contained in:
Viktor Szakats
2012-06-26 22:11:08 +00:00
parent edf8e486b9
commit c9852a4876
7 changed files with 72 additions and 84 deletions

View File

@@ -16,6 +16,18 @@
The license applies to all entries newer than 2009-04-28.
*/
2012-06-27 00:09 UTC+0200 Viktor Szakats (harbour syenar.net)
* examples/hbdoc/genhtml.prg
* examples/hbdoc/gentpl.prg
* examples/hbdoc/gentxt.prg
* examples/hbdoc/genxml.prg
* examples/hbdoc/hbdoc.prg
* examples/hbdoc/tmplates.prg
% cleanups and formatting
+ added support for UTF8 HVM CP
+ enabled UTF8 HVM CP. it means that now input files
can really be UTF8 ones.
2012-06-26 22:44 UTC+0200 Viktor Szakats (harbour syenar.net)
* contrib/xhb/xhberr.prg
! typo in prev commit

View File

@@ -55,9 +55,6 @@
*/
#include "hbclass.ch"
#include "common.ch"
#include "inkey.ch"
#include "fileio.ch"
#include "hbdoc.ch"
#ifdef __PLATFORM__DOS
@@ -79,8 +76,8 @@ METHOD NewIndex( cFolder, cFilename, cTitle ) CLASS GenerateHTML2
super:NewIndex( cFolder, cFilename, cTitle, EXTENSION )
RETURN self
CLASS GenerateHTML FROM TPLGenerate
HIDDEN:
CREATE CLASS GenerateHTML FROM TPLGenerate
HIDDEN:
METHOD RecreateStyleDocument( cStyleFile )
METHOD OpenTag( cText, ... )
METHOD Tagged( cText, cTag, ... )
@@ -91,7 +88,7 @@ HIDDEN:
CLASSDATA lCreateStyleDocument AS LOGICAL INIT .T.
DATA TargetFilename AS STRING INIT ""
EXPORTED:
EXPORTED:
METHOD NewFile() HIDDEN
METHOD NewIndex( cFolder, cFilename, cTitle )
METHOD NewDocument( cFolder, cFilename, cTitle )
@@ -201,10 +198,11 @@ METHOD PROCEDURE WriteEntry( cField, oEntry, lPreformatted, nIndent ) CLASS Gene
LOCAL cTagClass := IIf( LOWER( cField ) + "|" $ "name|oneliner|examples|tests|", LOWER( cField ), "itemtext" )
IF ! Empty( cEntry )
DEFAULT cCaption TO ""
DEFAULT nIndent TO 0
//~ DEFAULT lPreformatted TO .F.
//~ DEFAULT cTagClass TO "itemtext"
hb_default( @cCaption, "" )
hb_default( @nIndent, 0 )
//~ hb_default( @lPreformatted, .F. )
//~ hb_default( @cTagClass, "itemtext" )
IF Len( cCaption ) > 0 /* .AND. nIndent > 0 */
::Tagged( cCaption, "div", "class", "itemtitle" )
@@ -271,7 +269,7 @@ METHOD Append( cText, cFormat ) CLASS GenerateHTML
IF Len( cResult ) > 0
DEFAULT cFormat TO ""
hb_default( @cFormat, "" )
aFormat := p_aConversionList
FOR idx := 1 TO Len( aFormat ) STEP 2

View File

@@ -54,18 +54,15 @@
*
*/
#include "simpleio.ch"
#include "hbclass.ch"
#include "hbdoc.ch"
#define DOCUMENT_ 1
#define INDEX_ 2
CLASS TPLGenerate
CREATE CLASS TPLGenerate
EXPORTED:
EXPORTED:
//~ PROTECTED:
DATA nHandle AS NUMERIC
DATA cFolder AS STRING
@@ -82,7 +79,7 @@ EXPORTED:
METHOD Generate() INLINE NIL
METHOD IsIndex() INLINE ( ::nType == INDEX_ )
PROTECTED:
PROTECTED:
METHOD New( cFolder, cFilename, cTitle, cExtension, nType ) HIDDEN
DATA nType AS INTEGER
DATA Depth AS INTEGER INIT 0
@@ -106,7 +103,7 @@ METHOD New( cFolder, cFilename, cTitle, cExtension, nType ) CLASS TPLGenerate
::nType := nType
IF ! hb_DirExists( ::cFolder )
? "Creating folder " + ::cFolder
OutStd( hb_eol(), "Creating folder " + ::cFolder )
hb_DirCreate( ::cFolder )
ENDIF

View File

@@ -55,11 +55,9 @@
*/
#include "hbclass.ch"
#include "inkey.ch"
#include "fileio.ch"
#include "hbdoc.ch"
CLASS GenerateAscii FROM GenerateText
CREATE CLASS GenerateAscii FROM GenerateText
METHOD NewIndex( cFolder, cFilename, cTitle, cDescription )
METHOD NewDocument( cFolder, cFilename, cTitle, cDescription )
ENDCLASS
@@ -128,7 +126,7 @@ METHOD AddEntry( oEntry ) CLASS GenerateText
NEXT
IF ! ::lContinuous
FWrite( ::nHandle, Chr( K_CTRL_L ) + hb_eol() )
FWrite( ::nHandle, hb_BChar( 12 ) + hb_eol() )
ENDIF
ENDIF
@@ -137,7 +135,7 @@ METHOD AddEntry( oEntry ) CLASS GenerateText
METHOD PROCEDURE WriteEntry( cCaption, cEntry, lPreformatted ) CLASS GenerateText
LOCAL nIndent
IF ! Empty( cEntry )
nIndent := IIf( Len( cCaption ) > 0, 6, 0 )
nIndent := iif( Len( cCaption ) > 0, 6, 0 )
IF Len( cCaption ) > 0 .AND. nIndent > 0
FWrite( ::nHandle, Space( ::Depth * 6 ) + cCaption + ": " + hb_eol() )
ENDIF
@@ -150,7 +148,7 @@ METHOD PROCEDURE WriteEntry( cCaption, cEntry, lPreformatted ) CLASS GenerateTex
METHOD Generate() CLASS GenerateText
IF ::IsIndex()
IF ! ::lContinuous
FWrite( ::nHandle, Chr( K_CTRL_L ) + hb_eol() )
FWrite( ::nHandle, hb_BChar( 12 ) + hb_eol() )
ENDIF
ENDIF

View File

@@ -55,16 +55,14 @@
*/
#include "hbclass.ch"
#include "inkey.ch"
#include "fileio.ch"
#include "hbdoc.ch"
CLASS GenerateXML FROM TPLGenerate
HIDDEN:
CREATE CLASS GenerateXML FROM TPLGenerate
HIDDEN:
PROTECTED:
PROTECTED:
EXPORTED:
EXPORTED:
METHOD NewIndex( cFolder, cFilename, cTitle )
METHOD NewDocument( cFolder, cFilename, cTitle )
METHOD AddEntry( oEntry )
@@ -98,8 +96,8 @@ METHOD BeginSection( cSection, cFilename ) CLASS GenerateXML
RETURN self
METHOD EndSection( cSection, cFilename ) CLASS GenerateXML
HB_SYMBOL_UNUSED( cSection )
HB_SYMBOL_UNUSED( cFilename )
HB_SYMBOL_UNUSED( cSection )
HB_SYMBOL_UNUSED( cFilename )
::Depth--
FWrite( ::nHandle, Replicate( Chr(9), ::Depth ) + [</Section>] + hb_eol() )
RETURN self

View File

@@ -96,7 +96,6 @@ done - build a list of 'categories' and validate against; see what 'classdoc' us
done - validate sources against these templates
*/
#include "common.ch"
#include "directry.ch"
#include "fileio.ch"
#include "simpleio.ch"
@@ -119,6 +118,13 @@ PROCEDURE Main( ... )
LOCAL oDocument, oIndex
LOCAL aContent
/* Setup input CP of the translation */
hb_cdpSelect( "UTF8EX" )
/* Configure terminal and OS codepage */
hb_SetTermCP( hb_cdpTerm() )
Set( _SET_OSCODEPAGE, hb_cdpOS() )
init_Templates()
PUBLIC p_hsSwitches := HB_Hash( ;
@@ -219,9 +225,9 @@ PROCEDURE Main( ... )
?
ASort( aContent, , , {|oL,oR| ;
HB_NTOS( oL:CategoryIndex( oL:Category ) ) + Chr(1) + HB_NTOS( oL:SubcategoryIndex( oL:Category, oL:Subcategory ) ) + Chr(1) + oL:Name + Chr(1) ;
HB_NTOS( oL:CategoryIndex( oL:Category ) ) + " " + HB_NTOS( oL:SubcategoryIndex( oL:Category, oL:Subcategory ) ) + Chr(1) + oL:Name + " " ;
<= ;
HB_NTOS( oR:CategoryIndex( oR:Category ) ) + Chr(1) + HB_NTOS( oR:SubcategoryIndex( oR:Category, oR:Subcategory ) ) + Chr(1) + oR:Name + Chr(1) ;
HB_NTOS( oR:CategoryIndex( oR:Category ) ) + " " + HB_NTOS( oR:SubcategoryIndex( oR:Category, oR:Subcategory ) ) + Chr(1) + oR:Name + " " ;
} )
// TODO: what is this for? it is sorting the category sub-arrays and removing empty (?) sub-arrays, but why?
@@ -232,9 +238,9 @@ PROCEDURE Main( ... )
IF ValType( p_aCategories[ idx ][ 3 ][ idx2 ] ) == "A"
ASort( p_aCategories[ idx ][ 3 ][ idx2 ], , , ;
{|oL,oR| ;
HB_NTOS( oL:CategoryIndex( oL:Category ) ) + Chr(1) + HB_NTOS( oL:SubcategoryIndex( oL:Category, oL:Subcategory ) ) + Chr(1) + oL:Name ;
HB_NTOS( oL:CategoryIndex( oL:Category ) ) + " " + HB_NTOS( oL:SubcategoryIndex( oL:Category, oL:Subcategory ) ) + " " + oL:Name ;
<= ;
HB_NTOS( oR:CategoryIndex( oR:Category ) ) + Chr(1) + HB_NTOS( oR:SubcategoryIndex( oR:Category, oR:Subcategory ) ) + Chr(1) + oR:Name ;
HB_NTOS( oR:CategoryIndex( oR:Category ) ) + " " + HB_NTOS( oR:SubcategoryIndex( oR:Category, oR:Subcategory ) ) + " " + oR:Name ;
} )
ELSE
ASize( ADel( p_aCategories[ idx ][ 2 ], idx2 ), Len( p_aCategories[ idx ][ 2 ] ) - 1 )
@@ -459,11 +465,7 @@ STATIC PROCEDURE ProcessBlock( aHandle, aContent, cFile, cType, cVersion, o )
LOCAL idxSubCategory := -1
LOCAL cSourceFile
#ifdef __PLATFORM__UNIX
cSourceFile := "../" + cFile /* SubStr( cFile, Len( p_hsSwitches[ "basedir" ] + hb_ps() ) ) */
#else
cSourceFile := StrTran( "../" + cFile /* SubStr( cFile, Len( p_hsSwitches[ "basedir" ] + hb_ps() ) ) */, "\", "/" )
#endif
cSourceFile := StrTran( ".." + hb_ps() + cFile /* SubStr( cFile, Len( p_hsSwitches[ "basedir" ] + hb_ps() ) ) */, iif( hb_ps() == "\", "/", "\" ), hb_ps() )
o:type_ := cType
o:sourcefile_ := cSourceFile
@@ -708,7 +710,7 @@ STATIC PROCEDURE FileEval( acFile, bBlock, nMaxLine )
LOCAL lCloseFile := .F.
LOCAL xResult
DEFAULT nMaxLine TO 256
hb_default( @nMaxLine, 256 )
IF HB_ISSTRING( acFile )
lCloseFile := .T.
@@ -734,48 +736,23 @@ STATIC PROCEDURE FileEval( acFile, bBlock, nMaxLine )
RETURN
STATIC FUNCTION FReadUntil( aHandle, cMatch, cResult )
LOCAL cBuffer, nSavePos, nIdxMatch, nNumRead
DEFAULT cResult TO ""
DO WHILE nNumRead != 0
nSavePos := FSeek( aHandle[ 1 ], 0, FS_RELATIVE )
cBuffer := Space( 255 )
IF ( nNumRead := FRead( aHandle[ 1 ], @cBuffer, Len( cBuffer ) ) ) == 0
RETURN .F.
ENDIF
cBuffer := SubStr( cBuffer, 1, nNumRead )
IF ( nIdxMatch := At( cMatch, cBuffer ) ) > 0
cResult += SubStr( cBuffer, 1, nIdxMatch + Len( cMatch ) - 1 )
FSeek( aHandle[ 1 ], nSavePos + nIdxMatch + Len( cMatch ) - 1, FS_SET )
RETURN nNumRead != 0
ELSE
cResult += SubStr( cBuffer, 1, nNumRead - Len( cMatch ) )
FSeek( aHandle[ 1 ], -Len( cMatch ), FS_RELATIVE )
ENDIF
ENDDO
RETURN nNumRead != 0
STATIC FUNCTION FReadLn( aHandle, cBuffer, nMaxLine )
STATIC s_aEOL := { chr(13) + chr(10), chr(10), chr(13) }
STATIC s_aEOL := { Chr( 13 ) + Chr( 10 ), Chr( 10 ), Chr( 13 ) }
LOCAL cLine, nSavePos, nEol, nNumRead, nLenEol, idx
DEFAULT nMaxLine TO 256
hb_default( @nMaxLine, 256 )
cBuffer := ""
nSavePos := FSeek( aHandle[ 1 ], 0, FS_RELATIVE )
cLine := Space( nMaxLine )
nNumRead := FRead( aHandle[ 1 ], @cLine, Len( cLine ) )
cLine := SubStr( cLine, 1, nNumRead )
nNumRead := FRead( aHandle[ 1 ], @cLine, hb_BLen( cLine ) )
cLine := hb_BLeft( cLine, nNumRead )
nEol := 0
FOR idx := 1 To Len(s_aEOL)
FOR idx := 1 To Len( s_aEOL )
IF ( nEol := At( s_aEOL[ idx ], cLine ) ) > 0
nLenEol := Len( s_aEOL[ idx ] ) - 1
nLenEol := hb_BLen( s_aEOL[ idx ] ) - 1
Exit
ENDIF
NEXT
@@ -783,8 +760,8 @@ STATIC FUNCTION FReadLn( aHandle, cBuffer, nMaxLine )
IF nEol == 0
cBuffer := cLine
ELSE
cBuffer := SubStr( cLine, 1, nEol - 1 )
FSeek( aHandle[ 1 ], nSavePos + nEol + nLenEol, FS_SET )
cBuffer := Left( cLine, nEol - 1 )
FSeek( aHandle[ 1 ], nSavePos + hb_BLen( cBuffer ) + 1 + nLenEol, FS_SET )
ENDIF
aHandle[ 2 ]++
@@ -1060,7 +1037,7 @@ FUNCTION Indent( cText, nLeftMargin, nWidth, lRaw )
LOCAL cLine
LOCAL aText
DEFAULT lRaw TO .F.
hb_default( @lRaw, .F. )
IF nWidth == 0 .or. lRaw
aText := Split( cText, hb_eol() )
@@ -1133,17 +1110,19 @@ FUNCTION Indent( cText, nLeftMargin, nWidth, lRaw )
RETURN cResult
FUNCTION Filename( cFile, cFormat, nLength )
STATIC s_Files := {}
STATIC s_Files := {}
LOCAL cResult := ""
LOCAL idx
LOCAL char
DEFAULT cFormat TO "alnum"
hb_default( @cFormat, "alnum" )
#ifdef __PLATFORM__DOS
DEFAULT nLength TO 8
hb_default( @nLength, 8 )
#else
DEFAULT nLength TO 0
hb_default( @nLength, 0 )
#endif
DO CASE

View File

@@ -58,8 +58,10 @@
#include "hbclass.ch"
/* a class that will hold one entry */
CLASS Entry
EXPORTED:
CREATE CLASS Entry
EXPORTED:
CLASSDATA Fields AS ARRAY INIT { ;
{ "DOC", "Doc" }, ;
{ "TEMPLATE", "Template" }, ;
@@ -482,7 +484,7 @@ PROCEDURE init_Templates()
255, "yuml;" ;
}
RETURN
RETURN
PROCEDURE ShowTemplatesHelp( cTemplate )
@@ -537,6 +539,8 @@ PROCEDURE ShowComplianceHelp()
ShowSubHelp( "", 1, 0 )
NEXT
RETURN
PROCEDURE ShowPlatformsHelp
LOCAL idx
@@ -545,3 +549,5 @@ PROCEDURE ShowPlatformsHelp
ShowSubHelp( Decode( "PLATFORMS", NIL, p_aPlatforms[ idx ][ 1 ] ), 1, 6, idx )
ShowSubHelp( "", 1, 0 )
NEXT
RETURN