aboutsummaryrefslogtreecommitdiff
path: root/node_modules/shelljs/src/grep.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-05-24 15:10:37 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-05-24 15:11:17 +0200
commit7a3df06eb573d36142bd1a8e03c5ce8752d300b3 (patch)
tree70bfaea8884c374876f607774850a3a51c0cb381 /node_modules/shelljs/src/grep.js
parentaca1143cb9eed16cf37f04e475e4257418dd18ac (diff)
downloadwallet-core-7a3df06eb573d36142bd1a8e03c5ce8752d300b3.tar.xz
fix build issues and add typedoc
Diffstat (limited to 'node_modules/shelljs/src/grep.js')
-rw-r--r--node_modules/shelljs/src/grep.js67
1 files changed, 67 insertions, 0 deletions
diff --git a/node_modules/shelljs/src/grep.js b/node_modules/shelljs/src/grep.js
new file mode 100644
index 000000000..30842bcb8
--- /dev/null
+++ b/node_modules/shelljs/src/grep.js
@@ -0,0 +1,67 @@
+var common = require('./common');
+var fs = require('fs');
+
+common.register('grep', _grep, {
+ globStart: 2, // don't glob-expand the regex
+ canReceivePipe: true,
+ cmdOptions: {
+ 'v': 'inverse',
+ 'l': 'nameOnly',
+ },
+});
+
+//@
+//@ ### grep([options,] regex_filter, file [, file ...])
+//@ ### grep([options,] regex_filter, file_array)
+//@ Available options:
+//@
+//@ + `-v`: Inverse the sense of the regex and print the lines not matching the criteria.
+//@ + `-l`: Print only filenames of matching files
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ grep('-v', 'GLOBAL_VARIABLE', '*.js');
+//@ grep('GLOBAL_VARIABLE', '*.js');
+//@ ```
+//@
+//@ Reads input string from given files and returns a string containing all lines of the
+//@ file that match the given `regex_filter`.
+function _grep(options, regex, files) {
+ // Check if this is coming from a pipe
+ var pipe = common.readFromPipe();
+
+ if (!files && !pipe) common.error('no paths given', 2);
+
+ files = [].slice.call(arguments, 2);
+
+ if (pipe) {
+ files.unshift('-');
+ }
+
+ var grep = [];
+ files.forEach(function (file) {
+ if (!fs.existsSync(file) && file !== '-') {
+ common.error('no such file or directory: ' + file, 2, { continue: true });
+ return;
+ }
+
+ var contents = file === '-' ? pipe : fs.readFileSync(file, 'utf8');
+ var lines = contents.split(/\r*\n/);
+ if (options.nameOnly) {
+ if (contents.match(regex)) {
+ grep.push(file);
+ }
+ } else {
+ lines.forEach(function (line) {
+ var matched = line.match(regex);
+ if ((options.inverse && !matched) || (!options.inverse && matched)) {
+ grep.push(line);
+ }
+ });
+ }
+ });
+
+ return grep.join('\n') + '\n';
+}
+module.exports = _grep;