summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2017-12-18 12:47:57 +0100
committerErich Eckner <git@eckner.net>2017-12-18 12:47:57 +0100
commit177219f65a19cd16bf6222bd43a459c849df929f (patch)
tree63780298d3933105797937c08f74aed0540c7b94
parent2995555c51730275c5233389fc75cb1b4f085226 (diff)
downloadMake-177219f65a19cd16bf6222bd43a459c849df929f.tar.xz
dateibeziehungen.pas: substituiere Regex-bewusst
-rw-r--r--Make.lps105
-rw-r--r--dateibeziehungen.pas49
2 files changed, 86 insertions, 68 deletions
diff --git a/Make.lps b/Make.lps
index 4541002..34f230b 100644
--- a/Make.lps
+++ b/Make.lps
@@ -9,23 +9,22 @@
<IsPartOfProject Value="True"/>
<TopLine Value="52"/>
<CursorPos X="42" Y="71"/>
- <UsageCount Value="101"/>
+ <UsageCount Value="103"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
<Filename Value="Machdatei.txt"/>
<IsPartOfProject Value="True"/>
- <UsageCount Value="101"/>
+ <UsageCount Value="103"/>
<DefaultSyntaxHighlighter Value="None"/>
</Unit1>
<Unit2>
<Filename Value="tools.pas"/>
<IsPartOfProject Value="True"/>
- <IsVisibleTab Value="True"/>
<EditorIndex Value="4"/>
- <TopLine Value="149"/>
- <CursorPos X="22" Y="178"/>
- <UsageCount Value="80"/>
+ <TopLine Value="28"/>
+ <CursorPos X="11" Y="46"/>
+ <UsageCount Value="82"/>
<Loaded Value="True"/>
</Unit2>
<Unit3>
@@ -34,18 +33,19 @@
<EditorIndex Value="2"/>
<TopLine Value="255"/>
<CursorPos X="14" Y="322"/>
- <UsageCount Value="77"/>
+ <UsageCount Value="79"/>
<Loaded Value="True"/>
</Unit3>
<Unit4>
<Filename Value="dateibeziehungen.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="dateiBeziehungen"/>
+ <IsVisibleTab Value="True"/>
<EditorIndex Value="1"/>
- <TopLine Value="1002"/>
- <CursorPos X="45" Y="1031"/>
- <FoldState Value=" T3ja03B41214 p0t1065 piejH0Ei"/>
- <UsageCount Value="69"/>
+ <TopLine Value="531"/>
+ <CursorPos Y="547"/>
+ <FoldState Value=" T3ja03B41214 p0tF065 piejH0ER"/>
+ <UsageCount Value="71"/>
<Loaded Value="True"/>
</Unit4>
<Unit5>
@@ -65,7 +65,7 @@
<EditorIndex Value="3"/>
<TopLine Value="1276"/>
<CursorPos X="81" Y="1311"/>
- <UsageCount Value="16"/>
+ <UsageCount Value="18"/>
<Loaded Value="True"/>
</Unit7>
<Unit8>
@@ -134,122 +134,121 @@
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="dateibeziehungen.pas"/>
- <Caret Line="64" Column="28" TopLine="46"/>
+ <Caret Line="533" Column="30" TopLine="511"/>
</Position1>
<Position2>
<Filename Value="dateibeziehungen.pas"/>
- <Caret Line="594" Column="24" TopLine="565"/>
</Position2>
<Position3>
<Filename Value="dateibeziehungen.pas"/>
+ <Caret Line="64" Column="48" TopLine="35"/>
</Position3>
<Position4>
<Filename Value="dateibeziehungen.pas"/>
- <Caret Line="64" Column="28" TopLine="35"/>
+ <Caret Line="320" Column="93" TopLine="306"/>
</Position4>
<Position5>
<Filename Value="dateibeziehungen.pas"/>
- <Caret Line="294" Column="52" TopLine="288"/>
+ <Caret Line="427" Column="41" TopLine="398"/>
</Position5>
<Position6>
- <Filename Value="tools.pas"/>
- <Caret Line="46" Column="11" TopLine="28"/>
+ <Filename Value="dateibeziehungen.pas"/>
+ <Caret Line="534" Column="43" TopLine="505"/>
</Position6>
<Position7>
<Filename Value="dateibeziehungen.pas"/>
- <Caret Line="865" Column="22" TopLine="848"/>
+ <Caret Line="594" Column="33" TopLine="565"/>
</Position7>
<Position8>
- <Filename Value="Make.lpr"/>
- <Caret Line="65" Column="37" TopLine="48"/>
+ <Filename Value="dateibeziehungen.pas"/>
+ <Caret Line="64" Column="61" TopLine="46"/>
</Position8>
<Position9>
- <Filename Value="Make.lpr"/>
- <Caret Line="80" Column="21" TopLine="51"/>
+ <Filename Value="dateibeziehungen.pas"/>
+ <Caret Line="333" Column="20" TopLine="312"/>
</Position9>
<Position10>
- <Filename Value="Make.lpr"/>
- <Caret Line="67" Column="88" TopLine="52"/>
+ <Filename Value="dateibeziehungen.pas"/>
+ <Caret Line="409" Column="59" TopLine="382"/>
</Position10>
<Position11>
- <Filename Value="Make.lpr"/>
- <Caret Line="69" Column="68" TopLine="52"/>
+ <Filename Value="dateibeziehungen.pas"/>
+ <Caret Line="114" Column="32" TopLine="87"/>
</Position11>
<Position12>
- <Filename Value="tools.pas"/>
- <Caret Line="423" Column="91" TopLine="402"/>
+ <Filename Value="dateibeziehungen.pas"/>
+ <Caret Line="399" Column="31" TopLine="371"/>
</Position12>
<Position13>
- <Filename Value="tools.pas"/>
- <Caret Line="468" Column="20" TopLine="436"/>
+ <Filename Value="dateibeziehungen.pas"/>
+ <Caret Line="828" Column="39" TopLine="800"/>
</Position13>
<Position14>
- <Filename Value="tools.pas"/>
- <Caret Line="454" Column="58" TopLine="436"/>
+ <Filename Value="dateibeziehungen.pas"/>
+ <Caret Line="1099" Column="61" TopLine="1073"/>
</Position14>
<Position15>
- <Filename Value="tools.pas"/>
- <Caret Line="420" Column="19" TopLine="403"/>
+ <Filename Value="dateibeziehungen.pas"/>
+ <Caret Line="349" Column="89" TopLine="332"/>
</Position15>
<Position16>
<Filename Value="dateibeziehungen.pas"/>
- <Caret Line="1069" Column="64" TopLine="1052"/>
+ <Caret Line="354" Column="76" TopLine="338"/>
</Position16>
<Position17>
<Filename Value="dateibeziehungen.pas"/>
- <Caret Line="1016" Column="64" TopLine="999"/>
+ <Caret Line="1116" Column="73" TopLine="1083"/>
</Position17>
<Position18>
<Filename Value="dateibeziehungen.pas"/>
- <Caret Line="1013" Column="40" TopLine="999"/>
+ <Caret Line="1090" Column="22" TopLine="1087"/>
</Position18>
<Position19>
<Filename Value="dateibeziehungen.pas"/>
- <Caret Line="921" Column="5" TopLine="911"/>
+ <Caret Line="114" Column="32" TopLine="96"/>
</Position19>
<Position20>
<Filename Value="dateibeziehungen.pas"/>
- <Caret Line="915" Column="16" TopLine="908"/>
+ <Caret Line="399" Column="24" TopLine="371"/>
</Position20>
<Position21>
<Filename Value="dateibeziehungen.pas"/>
- <Caret Line="1004" Column="12" TopLine="976"/>
+ <Caret Line="64" Column="28" TopLine="46"/>
</Position21>
<Position22>
<Filename Value="dateibeziehungen.pas"/>
- <Caret Line="1027" Column="80" TopLine="998"/>
+ <Caret Line="320" Column="49" TopLine="288"/>
</Position22>
<Position23>
<Filename Value="dateibeziehungen.pas"/>
- <Caret Line="394" Column="30" TopLine="377"/>
+ <Caret Line="441" Column="26" TopLine="418"/>
</Position23>
<Position24>
<Filename Value="dateibeziehungen.pas"/>
- <Caret Line="493" Column="109" TopLine="456"/>
+ <Caret Line="552" Column="20" TopLine="531"/>
</Position24>
<Position25>
<Filename Value="dateibeziehungen.pas"/>
- <Caret Line="834" Column="29" TopLine="806"/>
</Position25>
<Position26>
- <Filename Value="tools.pas"/>
- <Caret Line="441" Column="33" TopLine="413"/>
+ <Filename Value="dateibeziehungen.pas"/>
+ <Caret Line="64" Column="28" TopLine="35"/>
</Position26>
<Position27>
<Filename Value="dateibeziehungen.pas"/>
- <Caret Line="637" Column="23" TopLine="619"/>
+ <Caret Line="347" Column="23" TopLine="325"/>
</Position27>
<Position28>
<Filename Value="dateibeziehungen.pas"/>
- <Caret Line="844" Column="68" TopLine="839"/>
+ <Caret Line="64" Column="28" TopLine="46"/>
</Position28>
<Position29>
- <Filename Value="tools.pas"/>
- <Caret Line="220" Column="80" TopLine="205"/>
+ <Filename Value="dateibeziehungen.pas"/>
+ <Caret Line="320" Column="49" TopLine="288"/>
</Position29>
<Position30>
- <Filename Value="tools.pas"/>
- <Caret Line="41" Column="22" TopLine="23"/>
+ <Filename Value="dateibeziehungen.pas"/>
+ <Caret Line="441" Column="26" TopLine="412"/>
</Position30>
</JumpHistory>
</ProjectSession>
diff --git a/dateibeziehungen.pas b/dateibeziehungen.pas
index 67e11e6..e2a96b3 100644
--- a/dateibeziehungen.pas
+++ b/dateibeziehungen.pas
@@ -61,7 +61,7 @@ type
_dats: tDateienMitDaten;
function rQuellen(idx: longint): tDateienMitDaten;
function rZiele(idx: longint): tDateienMitDaten;
- function quellErsetzung(var worin: string; quellen: tDateienMitDaten; momentanePosition: longint): boolean;
+ function quellErsetzung(var worin: string; worinIstRegex: boolean; quellen: tDateienMitDaten; momentanePosition: longint): boolean;
function zieleHinzufuegen(ziele, quellen: tDateienMitDaten; zielFkt: string): boolean;
function findeMehrZiele(ziele, quellen: tDateienMitDaten): boolean;
function matchCount: longint;
@@ -111,7 +111,7 @@ type
function anzDats: longint; inline;
end;
-procedure allgemeineErsetzungen(var worin: string; machDatei: string);
+procedure allgemeineErsetzungen(var worin: string; worinIstRegex: boolean; machDatei: string);
implementation
@@ -317,7 +317,7 @@ begin
result:=_zieles[idx];
end;
-function tGenerischeAbhaengigkeit.quellErsetzung(var worin: string; quellen: tDateienMitDaten; momentanePosition: longint): boolean;
+function tGenerischeAbhaengigkeit.quellErsetzung(var worin: string; worinIstRegex: boolean; quellen: tDateienMitDaten; momentanePosition: longint): boolean;
var
s,anfang,mitte,numStr: string;
i,li,re,qNum: longint;
@@ -330,18 +330,30 @@ begin
else
numStr:=intToStr(qNum);
s:=quellen[qNum+byte(qNum<0)].name;
- ersetzeAlleVorkommen(worin,'%in'+numStr+'%',s); // %in%
+ if worinIstRegex then // %in%
+ ersetzeAlleVorkommen(worin,'%in'+numStr+'%',escape(s,'\.','\'))
+ else
+ ersetzeAlleVorkommen(worin,'%in'+numStr+'%',s);
s:=extractfilename(s);
- ersetzeAlleVorkommen(worin,'%ifile'+numStr+'%',s); // %ifile%
+ if worinIstRegex then // %ifile%
+ ersetzeAlleVorkommen(worin,'%ifile'+numStr+'%',escape(s,'\.','\'))
+ else
+ ersetzeAlleVorkommen(worin,'%ifile'+numStr+'%',s);
i:=0;
while pos('.',s)>0 do begin
while rightStr(s,1)<>'.' do
delete(s,length(s),1);
delete(s,length(s),1);
inc(i);
- ersetzeAlleVorkommen(worin,'%basename'+numStr+','+intToStr(i)+'%',s); // %basename%
+ if worinIstRegex then // %basename%
+ ersetzeAlleVorkommen(worin,'%basename'+numStr+','+intToStr(i)+'%',escape(s,'\.','\'))
+ else
+ ersetzeAlleVorkommen(worin,'%basename'+numStr+','+intToStr(i)+'%',s);
end;
- ersetzeAlleVorkommen(worin,'%basename'+numStr+'%',s); // %basename%
+ if worinIstRegex then // %basename%
+ ersetzeAlleVorkommen(worin,'%basename'+numStr+'%',escape(s,'\.','\'))
+ else
+ ersetzeAlleVorkommen(worin,'%basename'+numStr+'%',s);
end;
while pos('%dirname',worin)>0 do begin // %dirname%
@@ -379,10 +391,12 @@ begin
mitte:=mitte+'/'+erstesArgument(s,'/',false);
end;
delete(mitte,1,1);
+ if worinIstRegex then
+ mitte:=escape(mitte,'\.','\');
worin:=anfang+mitte+worin;
end;
- allgemeineErsetzungen(worin,_machDatei); // %DIRNAME% %num'...'%
+ allgemeineErsetzungen(worin,worinIstRegex,_machDatei); // %DIRNAME% %num'...'%
result:=false;
tmpRE:=tRegExpr.create;
@@ -424,7 +438,7 @@ var
begin
result:=false;
if pos('{',zielFkt)=0 then begin
- if not quellErsetzung(zielFkt,quellen,quellen.count) then exit;
+ if not quellErsetzung(zielFkt,false,quellen,quellen.count) then exit;
if pos('*',zielFkt)=0 then begin
zielFkt:=unescape(zielFkt);
wasda:=false;
@@ -530,8 +544,8 @@ begin
while (i>=0) and (i<length(idx)) do begin // alle Stellen von idx müssen gefüllt werden!
if i<>lastI then begin // wir betrachten eine neue Stelle,
s:=quellenREs[i]; // daher ist der RegEx nicht mehr aktuell
- if not quellErsetzung(s,tmpQs,i) then begin // regex-substitution nicht erfolgreich -
- idx[i]:=-1; // wird behandelt wie nie passender regex
+ if not quellErsetzung(s,true,tmpQs,i) then begin // regex-substitution nicht erfolgreich -
+ idx[i]:=-1; // wird behandelt wie nie passender regex
tmpQs[i]:=nil;
dec(i);
continue;
@@ -591,7 +605,7 @@ begin
es.last.ziele.add(ziele[i][j]);
for j:=0 to befehleFkt.count-1 do begin
s:=befehleFkt[j];
- if quellErsetzung(s,quellen[i],quellen[i].count) then
+ if quellErsetzung(s,false,quellen[i],quellen[i].count) then
es.last.befehle.add(s);
end;
if es.last.befehle.count=0 then
@@ -811,7 +825,7 @@ begin
case wasIst of
ztSuche: begin
- allgemeineErsetzungen(s,_machDatei);
+ allgemeineErsetzungen(s,false,_machDatei);
if startetMit('!',s) then begin
setLength(_ign,length(_ign)+1);
_ign[length(_ign)-1]:=tRegExpr.create;
@@ -1073,7 +1087,7 @@ end;
// allgemeine Funktionen
-procedure allgemeineErsetzungen(var worin: string; machDatei: string);
+procedure allgemeineErsetzungen(var worin: string; worinIstRegex: boolean; machDatei: string);
var
i: longint;
s,anfang,mitte: string;
@@ -1081,7 +1095,10 @@ begin
s:=extractFilePath(machDatei);
if rightStr(s,1)='/' then
delete(s,length(s),1);
- ersetzeAlleVorkommen(worin,'%DIRNAME%',s);
+ if worinIstRegex then
+ ersetzeAlleVorkommen(worin,'%DIRNAME%',escape(s,'\.','\'))
+ else
+ ersetzeAlleVorkommen(worin,'%DIRNAME%',s);
while pos('%num''',worin)>0 do begin
anfang:=erstesArgument(worin,'%num''');
mitte:=erstesArgument(worin,'''%');
@@ -1095,6 +1112,8 @@ begin
delete(mitte,1,i);
break;
end;
+ if worinIstRegex then
+ mitte:=escape(s,'\.','\');
worin:=anfang+mitte+worin;
end;
end;