12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- program test_multiline;
- {$mode objfpc}{$H+}
- uses
- SysUtils, Classes, syntax.highlighter, syntax.javascript, syntax.htmlrender;
- var
- jsHighlighter: TJavaScriptSyntaxHighlighter;
- renderer: THtmlSyntaxRenderer;
- tokens: TSyntaxTokenArray;
- output: TStringList;
- jsCode: string;
- i: Integer;
- begin
- WriteLn('Testing Multiline JavaScript Rendering:');
- WriteLn('=======================================');
- jsCode := 'function test() {' + #10 + ' return "hello";' + #10 + '}';
- WriteLn('Original JavaScript:');
- WriteLn(jsCode);
- WriteLn;
- jsHighlighter := TJavaScriptSyntaxHighlighter.Create;
- renderer := THtmlSyntaxRenderer.Create;
- output := TStringList.Create;
- try
- tokens := jsHighlighter.Execute(jsCode);
- WriteLn('Tokens found: ', Length(tokens));
- for i := 0 to High(tokens) do begin
- WriteLn('Token ', i, ': "', StringReplace(tokens[i].Text, #10, '\n', [rfReplaceAll]), '" Kind: ', Ord(tokens[i].Kind));
- end;
- WriteLn;
- // Test default behavior
- renderer.Options := [];
- renderer.RenderTokens(tokens, output);
- WriteLn('Default Rendering (', output.Count, ' lines):');
- for i := 0 to output.Count - 1 do
- WriteLn('Line ', i, ': ', output[i]);
- WriteLn;
- // Test with hroPreserveLineStructure
- output.Clear;
- renderer.Options := [hroPreserveLineStructure];
- renderer.RenderTokens(tokens, output);
- WriteLn('Preserved Line Structure (', output.Count, ' lines):');
- for i := 0 to output.Count - 1 do
- WriteLn('Line ', i, ': ', output[i]);
- WriteLn;
- // Test with both options
- output.Clear;
- renderer.Options := [hroPreserveLineStructure, hroNoDefaultSpan];
- renderer.RenderTokens(tokens, output);
- WriteLn('Preserved + No Default Spans (', output.Count, ' lines):');
- for i := 0 to output.Count - 1 do
- WriteLn('Line ', i, ': ', output[i]);
- finally
- output.Free;
- renderer.Free;
- jsHighlighter.Free;
- end;
- WriteLn;
- WriteLn('Press Enter to exit.');
- ReadLn;
- end.
|