From 4a871e0feb97550bfc6cfa534f3b4b5cf4f2af2b Mon Sep 17 00:00:00 2001 From: Peng Zhao Date: Thu, 19 Jul 2018 15:18:33 +0800 Subject: [PATCH 1/5] Includes the i flag includes the i flag to ignored upper/lower case differences --- src/grep.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/grep.js b/src/grep.js index 3880fa19..0394d427 100644 --- a/src/grep.js +++ b/src/grep.js @@ -7,6 +7,7 @@ common.register('grep', _grep, { cmdOptions: { 'v': 'inverse', 'l': 'nameOnly', + 'i': 'ignoreCase', }, }); @@ -17,7 +18,8 @@ common.register('grep', _grep, { //@ Available options: //@ //@ + `-v`: Invert `regex_filter` (only print non-matching lines). -//@ + `-l`: Print only filenames of matching files +//@ + `-l`: Print only filenames of matching files. +//@ + `-i`: Ignored upper/lower case differences. //@ //@ Examples: //@ @@ -48,6 +50,9 @@ function _grep(options, regex, files) { } var contents = file === '-' ? pipe : fs.readFileSync(file, 'utf8'); + if (options.ignoreCase) { + regex = new RegExp(regex, 'i'); + } if (options.nameOnly) { if (contents.match(regex)) { grep.push(file); From 734e287802186f61ba7082f0aa5756df51a04709 Mon Sep 17 00:00:00 2001 From: ppsleep Date: Fri, 20 Jul 2018 17:30:51 +0800 Subject: [PATCH 2/5] Add the i flag to grep --- README.md | 3 ++- src/grep.js | 2 +- test/grep.js | 7 +++++++ test/resources/case1 | 1 + test/resources/case1.js | 1 + test/resources/case1.txt | 1 + 6 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 test/resources/case1 create mode 100644 test/resources/case1.js create mode 100644 test/resources/case1.txt diff --git a/README.md b/README.md index cf916b94..43ce1411 100644 --- a/README.md +++ b/README.md @@ -362,7 +362,8 @@ include the base directories (e.g., `lib/resources/file1` instead of just `file1 Available options: + `-v`: Invert `regex_filter` (only print non-matching lines). -+ `-l`: Print only filenames of matching files ++ `-l`: Print only filenames of matching files. ++ `-i`: Ignore case. Examples: diff --git a/src/grep.js b/src/grep.js index 0394d427..070ef04c 100644 --- a/src/grep.js +++ b/src/grep.js @@ -19,7 +19,7 @@ common.register('grep', _grep, { //@ //@ + `-v`: Invert `regex_filter` (only print non-matching lines). //@ + `-l`: Print only filenames of matching files. -//@ + `-i`: Ignored upper/lower case differences. +//@ + `-i`: Ignore case. //@ //@ Examples: //@ diff --git a/test/grep.js b/test/grep.js index f450aabb..a30d15ad 100644 --- a/test/grep.js +++ b/test/grep.js @@ -137,6 +137,13 @@ test('-l option', t => { t.is(result.split('\n').length - 1, 2); }); +test('-i option', t => { + const result = shell.grep('-i', 'test', 'test/resources/case1', 'test/resources/case1.txt', + 'test/resources/case1.js'); + t.falsy(shell.error()); + t.is(result.split('\n').length - 1, 3); +}); + test('the pattern looks like an option', t => { const result = shell.grep('--', '-v', 'test/resources/grep/file2'); t.falsy(shell.error()); diff --git a/test/resources/case1 b/test/resources/case1 new file mode 100644 index 00000000..b08f7b08 --- /dev/null +++ b/test/resources/case1 @@ -0,0 +1 @@ +Test3 diff --git a/test/resources/case1.js b/test/resources/case1.js new file mode 100644 index 00000000..df6b0d2b --- /dev/null +++ b/test/resources/case1.js @@ -0,0 +1 @@ +test3 diff --git a/test/resources/case1.txt b/test/resources/case1.txt new file mode 100644 index 00000000..bac87cc8 --- /dev/null +++ b/test/resources/case1.txt @@ -0,0 +1 @@ +TEST3 From 99ba3bcb250ff86a441529a23589a2295127780a Mon Sep 17 00:00:00 2001 From: ppsleep Date: Sat, 21 Jul 2018 07:46:57 +0800 Subject: [PATCH 3/5] move the test files --- test/resources/{ => grep}/case1 | 0 test/resources/{ => grep}/case1.js | 0 test/resources/{ => grep}/case1.txt | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename test/resources/{ => grep}/case1 (100%) rename test/resources/{ => grep}/case1.js (100%) rename test/resources/{ => grep}/case1.txt (100%) diff --git a/test/resources/case1 b/test/resources/grep/case1 similarity index 100% rename from test/resources/case1 rename to test/resources/grep/case1 diff --git a/test/resources/case1.js b/test/resources/grep/case1.js similarity index 100% rename from test/resources/case1.js rename to test/resources/grep/case1.js diff --git a/test/resources/case1.txt b/test/resources/grep/case1.txt similarity index 100% rename from test/resources/case1.txt rename to test/resources/grep/case1.txt From f4f6b3360a926700c9c85abf858cf4c6c855201d Mon Sep 17 00:00:00 2001 From: ppsleep Date: Sat, 21 Jul 2018 07:58:49 +0800 Subject: [PATCH 4/5] change the test --- test/grep.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/grep.js b/test/grep.js index a30d15ad..f973640c 100644 --- a/test/grep.js +++ b/test/grep.js @@ -138,8 +138,8 @@ test('-l option', t => { }); test('-i option', t => { - const result = shell.grep('-i', 'test', 'test/resources/case1', 'test/resources/case1.txt', - 'test/resources/case1.js'); + const result = shell.grep('-i', 'test', 'test/resources/grep/case1', 'test/resources/grep/case1.txt', + 'test/resources/grep/case1.js'); t.falsy(shell.error()); t.is(result.split('\n').length - 1, 3); }); From 32b154d19a0c78ac8d2bfb9c179d688abfad7f07 Mon Sep 17 00:00:00 2001 From: ppsleep Date: Sat, 21 Jul 2018 08:29:58 +0800 Subject: [PATCH 5/5] move the ignoreCase logic --- src/grep.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/grep.js b/src/grep.js index 070ef04c..b696792a 100644 --- a/src/grep.js +++ b/src/grep.js @@ -43,6 +43,9 @@ function _grep(options, regex, files) { } var grep = []; + if (options.ignoreCase) { + regex = new RegExp(regex, 'i'); + } files.forEach(function (file) { if (!fs.existsSync(file) && file !== '-') { common.error('no such file or directory: ' + file, 2, { continue: true }); @@ -50,9 +53,6 @@ function _grep(options, regex, files) { } var contents = file === '-' ? pipe : fs.readFileSync(file, 'utf8'); - if (options.ignoreCase) { - regex = new RegExp(regex, 'i'); - } if (options.nameOnly) { if (contents.match(regex)) { grep.push(file);