demo_multiple_categories.pp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. program test_multiple_categories;
  2. {$mode objfpc}{$H+}
  3. uses
  4. SysUtils, Classes, syntax.highlighter, syntax.pascal;
  5. procedure TestMultipleCategories;
  6. var
  7. categories: TStringList;
  8. i: Integer;
  9. javaID, pythonID, cppID, pascalID: Integer;
  10. begin
  11. WriteLn('Testing Multiple Categories');
  12. WriteLn('===========================');
  13. WriteLn;
  14. // Register various language categories
  15. javaID := TSyntaxHighlighter.RegisterCategory('Java');
  16. pythonID := TSyntaxHighlighter.RegisterCategory('Python');
  17. cppID := TSyntaxHighlighter.RegisterCategory('C++');
  18. // Pascal will already be registered from the previous test/highlighter usage
  19. pascalID := TSyntaxHighlighter.RegisterCategory('Pascal');
  20. WriteLn('Category IDs:');
  21. WriteLn(' Java: ', javaID);
  22. WriteLn(' Python: ', pythonID);
  23. WriteLn(' C++: ', cppID);
  24. WriteLn(' Pascal: ', pascalID);
  25. WriteLn;
  26. // List all registered categories
  27. categories := TStringList.Create;
  28. try
  29. TSyntaxHighlighter.GetRegisteredCategories(categories);
  30. WriteLn('All registered categories (', categories.Count, ' total):');
  31. for i := 0 to categories.Count - 1 do
  32. WriteLn(' ', categories[i], ' = ', PtrInt(categories.Objects[i]));
  33. finally
  34. categories.Free;
  35. end;
  36. WriteLn;
  37. WriteLn('Category registration system working correctly!');
  38. end;
  39. begin
  40. TestMultipleCategories;
  41. WriteLn;
  42. WriteLn('Multiple categories test completed.');
  43. end.