summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2018-01-09 15:31:40 +0100
committerErich Eckner <git@eckner.net>2018-01-09 15:31:40 +0100
commit165cb5d2489b083921c67e6ac01fb46d1d59a095 (patch)
tree6d61f9c4c26506bc0796c683955cefe02268612e
parent33f99c328d65763226f29b63731b96e696c3ca4e (diff)
downloadMake-165cb5d2489b083921c67e6ac01fb46d1d59a095.tar.xz
unterVerzeichnisRegex neu
-rw-r--r--tools.pas59
1 files changed, 59 insertions, 0 deletions
diff --git a/tools.pas b/tools.pas
index 2efcb5e..999b381 100644
--- a/tools.pas
+++ b/tools.pas
@@ -48,6 +48,7 @@ function unescape(s: string): string;
function escape(s,toe,es: string): string;
function escapeStringToRegex(s: string; typ: tRegexTyp; extras: string = ''): string; inline;
procedure ersetzeAlleVorkommen(var worin: string; was,wodurch: string);
+function unterVerzeichnisRegex(dateien: array of const): string;
// Routinen für sha512-Prüfsummen
@@ -413,6 +414,64 @@ begin
end;
end;
+function unterVerzeichnisRegex(dateien: array of const): string;
+var
+ i,j: longint;
+ dats: tStringList;
+ s: string;
+ rekursiv: boolean;
+begin
+ result:='';
+ dats:=tStringList.create;
+ for i:=0 to length(dateien)-1 do
+ case dateien[i].vType of
+ vtChar:
+ dats.add(dateien[i].vChar);
+ vtWideChar:
+ dats.add(string(dateien[i].vWideChar));
+ vtString:
+ dats.add(string(dateien[i].vString));
+ vtPChar:
+ dats.add(dateien[i].vPChar);
+ vtPWideChar:
+ dats.add(dateien[i].vPWideChar);
+ vtAnsiString:
+ dats.add(string(dateien[i].vAnsiString));
+ vtWideString:
+ dats.add(string(dateien[i].vWideString));
+ vtObject:
+ if dateien[i].vObject is tStringList then begin
+ for j:=0 to (dateien[i].vObject as tStringList).count-1 do
+ dats.add((dateien[i].vObject as tStringList)[j]);
+ end
+ else
+ fehler('unterVerzeichnisRegex Argument Nummer '+intToStr(i)+' ist ein Klasse, aber keine StringList!');
+ else
+ fehler('unterVerzeichnisRegex Argument Nummer '+intToStr(i)+' ist kein String!');
+ end{of case};
+
+ for i:=0 to dats.count-1 do begin
+ s:=dats[i];
+ rekursiv:=leftStr(s,1)='1';
+ delete(s,1,1);
+ if rekursiv then begin
+ s:=extractFilePath(s);
+ while rightStr(s,1)='/' do
+ delete(s,length(s),1);
+ end;
+ s:=escapeStringToRegex(s,rtFpc); // "*" soll nicht escaped werden, müsste bei rtFpc aber eigentlich escaped werden!
+ s:=escape(s,'*','[^/]');
+ if leftStr(s,1)='/' then // absoluter Pfad
+ s:='^'+s;
+ result:=result+'|'+s;
+ if rekursiv then
+ result:=result+'(/|$)'
+ else
+ result:=result+'$';
+ end;
+ delete(result,1,1);
+end;
+
// Routinen für sha512-Prüfsummen
var