mirror of
https://github.com/tiennm99/serena.git
synced 2026-10-18 10:15:08 +00:00
feat(pascal): add Pascal language server support
Add support for Free Pascal/Lazarus projects using pasls. Features: - Auto-download pasls binary for Linux, macOS, and Windows - Platform detection for x64 and arm64 architectures - Support for FPC environment variables (PP, FPCDIR) CI: Add FPC compiler installation (fpc-ootb for Windows) Includes test repository and unit tests.
This commit is contained in:
1 parent
eb54e834b6
commit
fa012910cb
11 files changed
+800
-6
No files matched your search
@@ -0,0 +1,8 @@
|
||||
backup/
|
||||
*.o
|
||||
*.ppu
|
||||
*.exe
|
||||
*.lps
|
||||
*.compiled
|
||||
__history/
|
||||
__recovery/
|
||||
@@ -0,0 +1,54 @@
|
||||
unit Helper;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils;
|
||||
|
||||
type
|
||||
{ THelper - A helper class with utility functions }
|
||||
THelper = class
|
||||
public
|
||||
class function FormatString(const Template: string; const Args: array of const): string;
|
||||
class function IsEven(Number: Integer): Boolean;
|
||||
end;
|
||||
|
||||
{ Standalone helper functions }
|
||||
function GetHelperMessage: string;
|
||||
function MultiplyNumbers(A, B: Integer): Integer;
|
||||
procedure LogMessage(const Msg: string);
|
||||
|
||||
implementation
|
||||
|
||||
{ THelper }
|
||||
|
||||
class function THelper.FormatString(const Template: string; const Args: array of const): string;
|
||||
begin
|
||||
Result := Format(Template, Args);
|
||||
end;
|
||||
|
||||
class function THelper.IsEven(Number: Integer): Boolean;
|
||||
begin
|
||||
Result := (Number mod 2) = 0;
|
||||
end;
|
||||
|
||||
{ Standalone functions }
|
||||
|
||||
function GetHelperMessage: string;
|
||||
begin
|
||||
Result := 'Hello from Helper unit!';
|
||||
end;
|
||||
|
||||
function MultiplyNumbers(A, B: Integer): Integer;
|
||||
begin
|
||||
Result := A * B;
|
||||
end;
|
||||
|
||||
procedure LogMessage(const Msg: string);
|
||||
begin
|
||||
WriteLn('[LOG] ', Msg);
|
||||
end;
|
||||
|
||||
end.
|
||||
@@ -0,0 +1,130 @@
|
||||
unit Main;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, Helper;
|
||||
|
||||
type
|
||||
{ TUser - A simple user class }
|
||||
TUser = class
|
||||
private
|
||||
FName: string;
|
||||
FAge: Integer;
|
||||
public
|
||||
constructor Create(const AName: string; AAge: Integer);
|
||||
destructor Destroy; override;
|
||||
|
||||
function GetInfo: string;
|
||||
procedure UpdateAge(NewAge: Integer);
|
||||
|
||||
property Name: string read FName write FName;
|
||||
property Age: Integer read FAge write FAge;
|
||||
end;
|
||||
|
||||
{ TUserManager - Manages multiple users }
|
||||
TUserManager = class
|
||||
private
|
||||
FUsers: TList;
|
||||
public
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
|
||||
procedure AddUser(User: TUser);
|
||||
function GetUserCount: Integer;
|
||||
function FindUserByName(const AName: string): TUser;
|
||||
end;
|
||||
|
||||
{ Helper functions }
|
||||
|
||||
/// Calculates the sum of two integers.
|
||||
/// @param A First integer value
|
||||
/// @param B Second integer value
|
||||
/// @returns The sum of A and B
|
||||
function CalculateSum(A, B: Integer): Integer;
|
||||
procedure PrintMessage(const Msg: string);
|
||||
|
||||
implementation
|
||||
|
||||
{ TUser implementation }
|
||||
|
||||
constructor TUser.Create(const AName: string; AAge: Integer);
|
||||
begin
|
||||
inherited Create;
|
||||
FName := AName;
|
||||
FAge := AAge;
|
||||
end;
|
||||
|
||||
destructor TUser.Destroy;
|
||||
begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
function TUser.GetInfo: string;
|
||||
begin
|
||||
Result := Format('Name: %s, Age: %d', [FName, FAge]);
|
||||
end;
|
||||
|
||||
procedure TUser.UpdateAge(NewAge: Integer);
|
||||
begin
|
||||
FAge := NewAge;
|
||||
end;
|
||||
|
||||
{ TUserManager implementation }
|
||||
|
||||
constructor TUserManager.Create;
|
||||
begin
|
||||
inherited Create;
|
||||
FUsers := TList.Create;
|
||||
end;
|
||||
|
||||
destructor TUserManager.Destroy;
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
for i := 0 to FUsers.Count - 1 do
|
||||
TUser(FUsers[i]).Free;
|
||||
FUsers.Free;
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TUserManager.AddUser(User: TUser);
|
||||
begin
|
||||
FUsers.Add(User);
|
||||
end;
|
||||
|
||||
function TUserManager.GetUserCount: Integer;
|
||||
begin
|
||||
Result := FUsers.Count;
|
||||
end;
|
||||
|
||||
function TUserManager.FindUserByName(const AName: string): TUser;
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
Result := nil;
|
||||
for i := 0 to FUsers.Count - 1 do
|
||||
begin
|
||||
if TUser(FUsers[i]).Name = AName then
|
||||
begin
|
||||
Result := TUser(FUsers[i]);
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ Helper functions }
|
||||
|
||||
function CalculateSum(A, B: Integer): Integer;
|
||||
begin
|
||||
Result := A + B;
|
||||
end;
|
||||
|
||||
procedure PrintMessage(const Msg: string);
|
||||
begin
|
||||
WriteLn(Msg);
|
||||
end;
|
||||
|
||||
end.
|
||||
Reference in new issue
Block a user