program test_htmlrender; {$mode objfpc}{$H+} uses SysUtils, Classes, syntax.highlighter, syntax.javascript, syntax.css, syntax.html, syntax.htmlrender; procedure TestJavaScriptRendering; var jsHighlighter: TJavaScriptSyntaxHighlighter; renderer: THtmlSyntaxRenderer; tokens: TSyntaxTokenArray; output: TStringList; jsCode: string; i: Integer; begin WriteLn('Testing JavaScript HTML Rendering:'); WriteLn('=================================='); jsCode := 'function test() { return "hello"; }'; jsHighlighter := TJavaScriptSyntaxHighlighter.Create; renderer := THtmlSyntaxRenderer.Create; output := TStringList.Create; try tokens := jsHighlighter.Execute(jsCode); WriteLn('Original JavaScript: ', jsCode); WriteLn; renderer.RenderTokens(tokens, output); WriteLn('Rendered HTML:'); for i := 0 to output.Count - 1 do WriteLn(output[i]); finally output.Free; renderer.Free; jsHighlighter.Free; end; WriteLn; WriteLn; end; procedure TestCssRendering; var cssHighlighter: TCssSyntaxHighlighter; renderer: THtmlSyntaxRenderer; tokens: TSyntaxTokenArray; output: TStringList; cssCode: string; i: Integer; begin WriteLn('Testing CSS HTML Rendering:'); WriteLn('==========================='); cssCode := 'body { color: #FF0000; font-size: 16px; }'; cssHighlighter := TCssSyntaxHighlighter.Create; renderer := THtmlSyntaxRenderer.Create; output := TStringList.Create; try tokens := cssHighlighter.Execute(cssCode); WriteLn('Original CSS: ', cssCode); WriteLn; renderer.RenderTokens(tokens, output); WriteLn('Rendered HTML:'); for i := 0 to output.Count - 1 do WriteLn(output[i]); finally output.Free; renderer.Free; cssHighlighter.Free; end; WriteLn; WriteLn; end; procedure TestHtmlRendering; var htmlHighlighter: THtmlSyntaxHighlighter; renderer: THtmlSyntaxRenderer; tokens: TSyntaxTokenArray; output: TStringList; htmlCode: string; i: Integer; begin WriteLn('Testing HTML HTML Rendering:'); WriteLn('============================'); htmlCode := '
<Hello>
'; htmlHighlighter := THtmlSyntaxHighlighter.Create; renderer := THtmlSyntaxRenderer.Create; output := TStringList.Create; try tokens := htmlHighlighter.Execute(htmlCode); WriteLn('Original HTML: ', htmlCode); WriteLn; renderer.RenderTokens(tokens, output); WriteLn('Rendered HTML:'); for i := 0 to output.Count - 1 do WriteLn(output[i]); finally output.Free; renderer.Free; htmlHighlighter.Free; end; WriteLn; WriteLn; end; procedure TestEmbeddedHtmlRendering; var htmlHighlighter: THtmlSyntaxHighlighter; renderer: THtmlSyntaxRenderer; tokens: TSyntaxTokenArray; output: TStringList; htmlCode: string; i: Integer; begin WriteLn('Testing Embedded HTML Rendering:'); WriteLn('================================'); htmlCode := ''; htmlHighlighter := THtmlSyntaxHighlighter.Create; renderer := THtmlSyntaxRenderer.Create; output := TStringList.Create; try tokens := htmlHighlighter.Execute(htmlCode); WriteLn('Original HTML: ', htmlCode); WriteLn; renderer.RenderTokens(tokens, output); WriteLn('Rendered HTML:'); for i := 0 to output.Count - 1 do WriteLn(output[i]); finally output.Free; renderer.Free; htmlHighlighter.Free; end; WriteLn; WriteLn; end; procedure TestStringOutput; var jsHighlighter: TJavaScriptSyntaxHighlighter; renderer: THtmlSyntaxRenderer; tokens: TSyntaxTokenArray; output: string; jsCode: string; begin WriteLn('Testing String Output:'); WriteLn('====================='); jsCode := 'var x = 42;'; jsHighlighter := TJavaScriptSyntaxHighlighter.Create; renderer := THtmlSyntaxRenderer.Create; try tokens := jsHighlighter.Execute(jsCode); WriteLn('Original JavaScript: ', jsCode); WriteLn; renderer.RenderTokensToString(tokens, output); WriteLn('Rendered HTML (single string):'); WriteLn(output); finally renderer.Free; jsHighlighter.Free; end; WriteLn; WriteLn; end; procedure TestSpecialCharacters; var jsHighlighter: TJavaScriptSyntaxHighlighter; renderer: THtmlSyntaxRenderer; tokens: TSyntaxTokenArray; output: TStringList; jsCode: string; i: Integer; begin WriteLn('Testing Special Character Escaping:'); WriteLn('==================================='); jsCode := 'var html = "
\"Hello & Welcome\"
";'; jsHighlighter := TJavaScriptSyntaxHighlighter.Create; renderer := THtmlSyntaxRenderer.Create; output := TStringList.Create; try tokens := jsHighlighter.Execute(jsCode); WriteLn('Original JavaScript: ', jsCode); WriteLn; renderer.RenderTokens(tokens, output); WriteLn('Rendered HTML (with escaping):'); for i := 0 to output.Count - 1 do WriteLn(output[i]); finally output.Free; renderer.Free; jsHighlighter.Free; end; WriteLn; WriteLn; end; begin WriteLn('HTML Syntax Renderer Test'); WriteLn('========================='); WriteLn; TestJavaScriptRendering; TestCssRendering; TestHtmlRendering; TestEmbeddedHtmlRendering; TestStringOutput; TestSpecialCharacters; WriteLn('Test completed. Press Enter to exit.'); ReadLn; end.