aboutsummaryrefslogtreecommitdiff
path: root/challenge-004/abigail/node
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.be>2021-03-04 20:22:21 +0100
committerAbigail <abigail@abigail.be>2021-03-04 20:22:21 +0100
commit53f8a2c0c28815d2ae4eb67f0fdd378462c74147 (patch)
treefa4ea84234b8ed161e12a9fc7293baa6c5cf91fd /challenge-004/abigail/node
parentfbab37eacec781a9f3965545228ccf09abe71071 (diff)
downloadperlweeklychallenge-club-53f8a2c0c28815d2ae4eb67f0fdd378462c74147.tar.gz
perlweeklychallenge-club-53f8a2c0c28815d2ae4eb67f0fdd378462c74147.tar.bz2
perlweeklychallenge-club-53f8a2c0c28815d2ae4eb67f0fdd378462c74147.zip
Node.js solution for week 4, part 2
Diffstat (limited to 'challenge-004/abigail/node')
-rw-r--r--challenge-004/abigail/node/ch-2.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/challenge-004/abigail/node/ch-2.js b/challenge-004/abigail/node/ch-2.js
new file mode 100644
index 0000000000..a239d89949
--- /dev/null
+++ b/challenge-004/abigail/node/ch-2.js
@@ -0,0 +1,46 @@
+#!/usr/local/bin/node
+
+//
+// See ../README.md
+//
+
+//
+// Run as: node ch-2.js -f filename < input-file
+//
+
+const fs = require ('fs')
+const readline = require ('readline')
+const yargs = require ('yargs')
+
+//
+// Parse options using the yargs module
+//
+const argv = yargs . option ('file', {
+ alias: 'f',
+ type: 'string',
+ })
+ . argv;
+
+let filename = argv . file;
+
+//
+// Extract the words from the file 'filename' which can be
+// made with the letters from 'letters'.
+//
+function find_words (filename, letters) {
+ letters = letters . toLowerCase ()
+ . split ("")
+ readline . createInterface ({input: fs . createReadStream (filename)})
+ . on ('line', word => {
+ let copy = word . toLowerCase ()
+ letters . forEach (l => {
+ copy = copy . replace (l, "")
+ })
+ if (copy == "") {
+ console . log (word)
+ }
+ })
+}
+
+readline . createInterface ({input: process . stdin})
+ . on ('line', letters => find_words (filename, letters))