From 73fe5f745c5f51f0d95a649626a2d7a4d0b99c5b Mon Sep 17 00:00:00 2001 From: Pedro Xavier Pinho Date: Thu, 12 Sep 2024 00:35:28 +0100 Subject: [PATCH] Fix replacement-js flag when referencing matched groups when matching multiple files (#513) Co-authored-by: Pedro Pinho --- src/engine.ts | 7 +++++-- test/cli/run.sh | 5 +++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/engine.ts b/src/engine.ts index e233406a..7eefa5ba 100644 --- a/src/engine.ts +++ b/src/engine.ts @@ -84,11 +84,14 @@ function doReplacement(_file_rr: string, _config_rr: any, _data_rr: string) { // Variables to be accessible from js. if (_config_rr.replacementJs) { - _config_rr.replacement = dynamicReplacement(_file_rr, _config_rr, _data_rr); + _config_rr.replacementDynamic = dynamicReplacement(_file_rr, _config_rr, _data_rr); } // Main regexp of the whole thing - const result = _data_rr.replace(_config_rr.regex, _config_rr.replacement); + const result = _data_rr.replace( + _config_rr.regex, + _config_rr.replacementJs ? _config_rr.replacementDynamic : _config_rr.replacement + ); // The output of matched strings is done from the replacement, so no need to continue if (_config_rr.outputMatch) { diff --git a/test/cli/run.sh b/test/cli/run.sh index 9ae216f3..4547cdb0 100644 --- a/test/cli/run.sh +++ b/test/cli/run.sh @@ -196,7 +196,12 @@ assert "rexreplace 'foobar' \"['filename:'+filename,'name:'+name,'ext:'+ext, reset assert "rexreplace 'foo((b)ar)' '€1+€2' my.file -o --replacement-js" 'barb' +## Test replacement-js on multiple files +reset +assert "rexreplace 'foo((b)ar)' '€1+€2' *.file -o --replacement-js" 'barb\nabc123' +reset +assert "rexreplace 'a(.+)' '\"_replace_\"+€1' *.file -o --replacement-js" 'foob_replace_r\n_replace_bc123' # Content manually testes # todo: automate test of content