program libdemo;
{
Basic example of using the libtidy bindings directly.
Writes the string "Hello World" in HTML
( Adapted from the C example in "tidy.h" )
}
{$H+}
{$IFDEF WIN32}{$APPTYPE CONSOLE}{$ENDIF}
uses tidy_h;
var
Source :pChar = '<title>Hello World<p>Hello World';
ResultCode:LongInt = -1;
TidyHandle:pTidyDoc;
Target:tTidyBuffer;
ErrorBuffer: tTidyBuffer;
begin
TidyHandle := tidyCreate();
WriteLn;
WriteLn( 'Tidying: "', Source, '"' );
if ( not tidyOptSetBool( TidyHandle, TidyXhtmlOut, True ) ) then begin
WriteLn('Error setting TidyLib option: "TidyXhtmlOut"');
HALT(1);
end;
ResultCode := tidySetErrorBuffer( TidyHandle, @ErrorBuffer );
if ( ResultCode >= 0 ) then ResultCode := tidyParseString( TidyHandle, ctmbstr(Source) );
if ( ResultCode >= 0 ) then ResultCode := tidyCleanAndRepair( TidyHandle );
if ( ResultCode >= 0 ) then ResultCode := tidyRunDiagnostics( TidyHandle );
if ( ResultCode > 1 ) then begin
if ( not tidyOptSetBool(TidyHandle, TidyForceOutput, True ) ) then begin
WriteLn('Error setting TidyLib option: "TidyForceOutput"');
HALT(1);
end;
end;
if ( ResultCode >= 0 ) then ResultCode := tidySaveBuffer( TidyHandle, @Target );
if ( ResultCode >= 0 ) then begin
if ( ResultCode > 0 ) then begin
WriteLn('Diagnostics:');
WriteLn(pChar(ErrorBuffer.bp) );
end;
WriteLn( 'And here is the result:');
WriteLn( pChar(Target.bp) );
end else WriteLn( 'A severe error (', ResultCode, ') occurred: ');
tidyBufFree( @Target );
tidyBufFree( @ErrorBuffer );
tidyRelease( TidyHandle );
HALT(byte(ResultCode));
end.