93 lines
2.9 KiB
ObjectPascal
93 lines
2.9 KiB
ObjectPascal
|
unit UnitCodeSnippets;
|
||
|
|
||
|
interface
|
||
|
|
||
|
uses SysUtils, Classes, Windows;
|
||
|
|
||
|
function GetSnippet(Lang, Ident: String): String;
|
||
|
function GetSnippetList(Lang: String): TStringList;
|
||
|
procedure AddSnippet(Lang, Ident, Code: String);
|
||
|
procedure DelSnippet(Lang, Ident: String);
|
||
|
procedure SetSnippet(Lang, Ident, Code: String);
|
||
|
|
||
|
implementation
|
||
|
|
||
|
function GetSnippet(Lang, Ident: String): String;
|
||
|
var eFile: TStringList;
|
||
|
i: Integer;
|
||
|
begin
|
||
|
eFile := TStringList.Create;
|
||
|
eFile.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'config\' + Lang + '.csl'); // ... .csl = CodeSnippetList
|
||
|
for i := 0 to eFile.Count -1 do begin
|
||
|
if Pos(Ident + #1, eFile[i]) = 1 then begin
|
||
|
Result := eFile[i];
|
||
|
Delete(Result, 1, Length(Ident) +1);
|
||
|
Result := StringReplace(Result, #2, #13#10, [rfReplaceAll]);
|
||
|
end;
|
||
|
end;
|
||
|
eFile.Free;
|
||
|
end;
|
||
|
|
||
|
function GetSnippetList(Lang: String): TStringList;
|
||
|
var i: Integer;
|
||
|
begin
|
||
|
Result := TStringList.Create;
|
||
|
if FileExists(ExtractFilePath(ParamStr(0)) + 'config\' + Lang + '.csl') then begin
|
||
|
Result.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'config\' + Lang + '.csl'); // ... .csl = CodeSnippetList
|
||
|
for i := 0 to Result.Count -1 do
|
||
|
Result[i] := Copy(Result[i], 1, Pos(#1, Result[i]) -1);
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
procedure AddSnippet(Lang, Ident, Code: String);
|
||
|
var eFile: TStringList;
|
||
|
begin
|
||
|
Code := StringReplace(Code, #13#10, #2, [rfReplaceAll]);
|
||
|
|
||
|
eFile := TStringList.Create;
|
||
|
eFile.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'config\' + Lang + '.csl'); // ... .csl = CodeSnippetList
|
||
|
eFile.Add(Ident + #1 + Code);
|
||
|
eFile.SaveToFile(ExtractFilePath(ParamStr(0)) + 'config\' + Lang + '.csl'); // ... .csl = CodeSnippetList
|
||
|
eFile.Free;
|
||
|
end;
|
||
|
|
||
|
procedure DelSnippet(Lang, Ident: String);
|
||
|
var eFile: TStringList;
|
||
|
i: Integer;
|
||
|
begin
|
||
|
eFile := TStringList.Create;
|
||
|
eFile.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'config\' + Lang + '.csl'); // ... .csl = CodeSnippetList
|
||
|
for i := eFile.Count -1 downto 0 do begin
|
||
|
if Pos(Ident + #1, eFile[i]) = 1 then
|
||
|
eFile.Delete(i);
|
||
|
end;
|
||
|
eFile.SaveToFile(ExtractFilePath(ParamStr(0)) + 'config\' + Lang + '.csl'); // ... .csl = CodeSnippetList
|
||
|
eFile.Free;
|
||
|
end;
|
||
|
|
||
|
procedure SetSnippet(Lang, Ident, Code: String);
|
||
|
var eFile: TStringList;
|
||
|
i: Integer;
|
||
|
begin
|
||
|
Code := StringReplace(Code, #13#10, #2, [rfReplaceAll]);
|
||
|
|
||
|
eFile := TStringList.Create;
|
||
|
eFile.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'config\' + Lang + '.csl'); // ... .csl = CodeSnippetList
|
||
|
{ If item exists... }
|
||
|
for i := 0 to eFile.Count -1 do begin
|
||
|
if Pos(Ident + #1, eFile[i]) = 1 then begin
|
||
|
eFile[i] := Ident + #1 + Code;
|
||
|
eFile.SaveToFile(ExtractFilePath(ParamStr(0)) + 'config\' + Lang + '.csl'); // ... .csl = CodeSnippetList
|
||
|
eFile.Free;
|
||
|
|
||
|
exit;
|
||
|
end;
|
||
|
end;
|
||
|
{ else... }
|
||
|
eFile.Add(Ident + #1 + Code);
|
||
|
eFile.SaveToFile(ExtractFilePath(ParamStr(0)) + 'config\' + Lang + '.csl'); // ... .csl = CodeSnippetList
|
||
|
eFile.Free;
|
||
|
end;
|
||
|
|
||
|
end.
|