From 79cddf83484b042bbffb95a274abe693a74c5efa Mon Sep 17 00:00:00 2001 From: Renaud G Date: Tue, 24 Sep 2019 13:42:30 +0200 Subject: Improve alias replacement --- dicealias.cpp | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'dicealias.cpp') diff --git a/dicealias.cpp b/dicealias.cpp index 7c64de9..0378867 100644 --- a/dicealias.cpp +++ b/dicealias.cpp @@ -29,8 +29,33 @@ QString makeReplament(const QString& pattern, const QString& replacement, QStrin auto hasPattern= cmd.contains(pattern); if(hasPattern) { + auto idxPattern= cmd.indexOf(pattern); + std::vector> quotes; + + int pos= 0; + bool open= true; + while(pos != -1 && pos < cmd.size()) + { + auto oldPos= pos; + pos= cmd.indexOf("\"", pos); + if(open && pos != -1) + open= false; + else if(pos != -1) + { + quotes.push_back({oldPos, pos}); + } + + if(pos != -1) + pos+= 1; + } + auto hasQuote= false; + for(auto range : quotes) + { + if(idxPattern < range.second && idxPattern > range.first) + hasQuote= true; + } + auto hasVariable= cmd.contains("${"); - auto hasQuote= cmd.contains("\""); auto commentPos= cmd.lastIndexOf("#"); if(!hasQuote && !hasVariable) -- cgit v1.2.3-70-g09d2