diff options
author | Erich Eckner <git@eckner.net> | 2017-12-18 12:47:57 +0100 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2017-12-18 12:47:57 +0100 |
commit | 177219f65a19cd16bf6222bd43a459c849df929f (patch) | |
tree | 63780298d3933105797937c08f74aed0540c7b94 | |
parent | 2995555c51730275c5233389fc75cb1b4f085226 (diff) | |
download | Make-177219f65a19cd16bf6222bd43a459c849df929f.tar.xz |
dateibeziehungen.pas: substituiere Regex-bewusst
-rw-r--r-- | Make.lps | 105 | ||||
-rw-r--r-- | dateibeziehungen.pas | 49 |
2 files changed, 86 insertions, 68 deletions
@@ -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; |