demo_extraclasses.pp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. program test_extraclasses;
  2. {$mode objfpc}{$H+}
  3. uses
  4. SysUtils, Classes, syntax.highlighter, syntax.javascript, syntax.htmlrender;
  5. var
  6. jsHighlighter: TJavaScriptSyntaxHighlighter;
  7. renderer: THtmlSyntaxRenderer;
  8. tokens: TSyntaxTokenArray;
  9. output: string;
  10. jsCode: string;
  11. begin
  12. WriteLn('Testing ExtraClasses Property:');
  13. WriteLn('=============================');
  14. jsCode := 'var x = 42;';
  15. WriteLn('Original JavaScript: ', jsCode);
  16. WriteLn;
  17. jsHighlighter := TJavaScriptSyntaxHighlighter.Create;
  18. renderer := THtmlSyntaxRenderer.Create;
  19. try
  20. tokens := jsHighlighter.Execute(jsCode);
  21. // Test default (no extra classes)
  22. renderer.ExtraClasses := '';
  23. renderer.RenderTokensToString(tokens, output);
  24. WriteLn('Default (no extra classes):');
  25. WriteLn(output);
  26. WriteLn;
  27. // Test with single extra class
  28. renderer.ExtraClasses := 'syntax-highlight';
  29. renderer.RenderTokensToString(tokens, output);
  30. WriteLn('With single extra class "syntax-highlight":');
  31. WriteLn(output);
  32. WriteLn;
  33. // Test with multiple extra classes
  34. renderer.ExtraClasses := 'code-block theme-dark line-1';
  35. renderer.RenderTokensToString(tokens, output);
  36. WriteLn('With multiple extra classes "code-block theme-dark line-1":');
  37. WriteLn(output);
  38. WriteLn;
  39. // Test with hroNoDefaultSpan option
  40. renderer.Options := [hroNoDefaultSpan];
  41. renderer.ExtraClasses := 'no-default-spans';
  42. renderer.RenderTokensToString(tokens, output);
  43. WriteLn('With hroNoDefaultSpan + extra classes "no-default-spans":');
  44. WriteLn(output);
  45. WriteLn;
  46. finally
  47. renderer.Free;
  48. jsHighlighter.Free;
  49. end;
  50. WriteLn('Press Enter to exit.');
  51. ReadLn;
  52. end.