From a0bcb0cb8f3c655ecebb9ed9a7a171a3bb2d8ae9 Mon Sep 17 00:00:00 2001 From: Ron Barrantes Date: Wed, 13 Sep 2017 17:09:50 -0700 Subject: [PATCH 1/9] initial commit --- lab-ron/.eslintignore | 5 ++++ lab-ron/.eslintrc.json | 26 ++++++++++++++++ lab-ron/.gitignore | 68 ++++++++++++++++++++++++++++++++++++++++++ lab-ron/README.md | 1 + lab-ron/package.json | 19 ++++++++++++ 5 files changed, 119 insertions(+) create mode 100644 lab-ron/.eslintignore create mode 100644 lab-ron/.eslintrc.json create mode 100644 lab-ron/.gitignore create mode 100644 lab-ron/README.md create mode 100644 lab-ron/package.json diff --git a/lab-ron/.eslintignore b/lab-ron/.eslintignore new file mode 100644 index 0000000..05b1cf3 --- /dev/null +++ b/lab-ron/.eslintignore @@ -0,0 +1,5 @@ +**/node_modules/* +**/vendor/* +**/*.min.js +**/coverage/* +**/build/* diff --git a/lab-ron/.eslintrc.json b/lab-ron/.eslintrc.json new file mode 100644 index 0000000..840d336 --- /dev/null +++ b/lab-ron/.eslintrc.json @@ -0,0 +1,26 @@ +{ + "env": { + "browser": true, + "node": true, + "commonjs": true, + "jest": true, + "es6": true + }, + "globals": { + "err": true, + "req": true, + "res": true, + "next": true + }, + "extends": "eslint:recommended", + "parserOptions": { + "sourceType": "module" + }, + "rules": { + "no-console": "off", + "indent": [ "error", 2 ], + "quotes": ["error", "single", { "allowTemplateLiterals": true }], + "comma-dangle": ["error", "always-multiline"], + "semi": [ "error", "always" ] + } +} diff --git a/lab-ron/.gitignore b/lab-ron/.gitignore new file mode 100644 index 0000000..3583e8a --- /dev/null +++ b/lab-ron/.gitignore @@ -0,0 +1,68 @@ +# Created by https://www.gitignore.io/api/osx,linux,node,vim + +### OSX ### +.DS_Store +.AppleDouble +.LSOverride + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + + +### Node ### +# Logs +logs +*.log +npm-debug.log* + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules +jspm_packages + +# Optional npm cache directory +.npm + +# Optional REPL history +.node_repl_history + +### Vim ### +# swap +[._]*.s[a-w][a-z] +[._]s[a-w][a-z] +# session +Session.vim +# temporary +.netrwhist +*~ + +# auto-generated tag files +tags + +###### Personal +.tern-project diff --git a/lab-ron/README.md b/lab-ron/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/lab-ron/README.md @@ -0,0 +1 @@ + diff --git a/lab-ron/package.json b/lab-ron/package.json new file mode 100644 index 0000000..f718ebc --- /dev/null +++ b/lab-ron/package.json @@ -0,0 +1,19 @@ +{ + "name": "lab-ron", + "version": "0.0.1", + "description": "Lab 2 of 401", + "main": "index.js", + "dependencies": {}, + "devDependencies": { + "eslint": "^4.6.1", + "jest": "^21.0.2" + }, + "scripts": { + "lint": "eslint .", + "test": "jest --coverage -i", + "test-watch": "jest --watch -i" + }, + "keywords": [], + "author": "", + "license": "ISC" +} From fb7160129a9f2e1727ec3ade3f136e12aa8b9f53 Mon Sep 17 00:00:00 2001 From: Ron Barrantes Date: Wed, 13 Sep 2017 17:24:39 -0700 Subject: [PATCH 2/9] added extra info to package.json Title to read me --- lab-ron/README.md | 1 + lab-ron/package.json | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lab-ron/README.md b/lab-ron/README.md index 8b13789..806c7ae 100644 --- a/lab-ron/README.md +++ b/lab-ron/README.md @@ -1 +1,2 @@ +# Parallel File Processing diff --git a/lab-ron/package.json b/lab-ron/package.json index f718ebc..5409ebf 100644 --- a/lab-ron/package.json +++ b/lab-ron/package.json @@ -1,7 +1,7 @@ { "name": "lab-ron", "version": "0.0.1", - "description": "Lab 2 of 401", + "description": "Lab 3 of 401", "main": "index.js", "dependencies": {}, "devDependencies": { @@ -14,6 +14,6 @@ "test-watch": "jest --watch -i" }, "keywords": [], - "author": "", - "license": "ISC" + "author": "Ron Barrantes", + "license": "MIT" } From 8527d1e12dae525fc23ceda5be83c2c2dc6f44fa Mon Sep 17 00:00:00 2001 From: Ron Barrantes Date: Wed, 13 Sep 2017 20:23:38 -0700 Subject: [PATCH 3/9] add assets --- lab-ron/assets/bar.txt | 1 + lab-ron/assets/bye.txt | 1 + lab-ron/assets/foo.txt | 1 + lab-ron/assets/hi.txt | 1 + 4 files changed, 4 insertions(+) create mode 100644 lab-ron/assets/bar.txt create mode 100644 lab-ron/assets/bye.txt create mode 100644 lab-ron/assets/foo.txt create mode 100644 lab-ron/assets/hi.txt diff --git a/lab-ron/assets/bar.txt b/lab-ron/assets/bar.txt new file mode 100644 index 0000000..5716ca5 --- /dev/null +++ b/lab-ron/assets/bar.txt @@ -0,0 +1 @@ +bar diff --git a/lab-ron/assets/bye.txt b/lab-ron/assets/bye.txt new file mode 100644 index 0000000..b023018 --- /dev/null +++ b/lab-ron/assets/bye.txt @@ -0,0 +1 @@ +bye diff --git a/lab-ron/assets/foo.txt b/lab-ron/assets/foo.txt new file mode 100644 index 0000000..257cc56 --- /dev/null +++ b/lab-ron/assets/foo.txt @@ -0,0 +1 @@ +foo diff --git a/lab-ron/assets/hi.txt b/lab-ron/assets/hi.txt new file mode 100644 index 0000000..45b983b --- /dev/null +++ b/lab-ron/assets/hi.txt @@ -0,0 +1 @@ +hi From 412018f4884ec89a25b351dfe05a7a73e78290c0 Mon Sep 17 00:00:00 2001 From: Ron Barrantes Date: Wed, 13 Sep 2017 20:25:24 -0700 Subject: [PATCH 4/9] add reader.test.js --- lab-ron/__test__/reader.test.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 lab-ron/__test__/reader.test.js diff --git a/lab-ron/__test__/reader.test.js b/lab-ron/__test__/reader.test.js new file mode 100644 index 0000000..e69de29 From 1ad3d00821cde7b8639ce5525f471ffbe3a5724b Mon Sep 17 00:00:00 2001 From: Ron Barrantes Date: Wed, 13 Sep 2017 22:54:56 -0700 Subject: [PATCH 5/9] turning in for laer --- lab-ron/__test__/reader.test.js | 23 +++++++++++++++++++++++ lab-ron/index.js | 11 +++++++++++ lab-ron/lib/reader.js | 11 +++++++++++ 3 files changed, 45 insertions(+) create mode 100644 lab-ron/index.js create mode 100644 lab-ron/lib/reader.js diff --git a/lab-ron/__test__/reader.test.js b/lab-ron/__test__/reader.test.js index e69de29..141ec04 100644 --- a/lab-ron/__test__/reader.test.js +++ b/lab-ron/__test__/reader.test.js @@ -0,0 +1,23 @@ +'use strict'; + +const reader = require('../lib/reader.js'); + +describe('#reader', () => { + test(`invalid path should reject an error`, (done) => { + reader(`${__dirname}/../assets/foo2.txt`, (err, data) => { + expect(err).not.toBeNull(); + expect(data).toBeUndefined() + done() + }); + }); + + test(`valid path resolves in the path's name`, (done) => { + reader(`${__dirname}/../assets/foo.txt`, (err, data) => { + expect(err).toBeNull(); + expect(data).toEqual('foo\n'); + done(); + }); + }); + +}); + diff --git a/lab-ron/index.js b/lab-ron/index.js new file mode 100644 index 0000000..edbf9e1 --- /dev/null +++ b/lab-ron/index.js @@ -0,0 +1,11 @@ +'use strict'; + +const fs = require('fs'); +const reader = require('./lib/reader'); + +const path = process.argv; + +reader(path[2], (err, data) => { + if (err) return console.error(err); + console.log(data); +}); \ No newline at end of file diff --git a/lab-ron/lib/reader.js b/lab-ron/lib/reader.js new file mode 100644 index 0000000..9a14ceb --- /dev/null +++ b/lab-ron/lib/reader.js @@ -0,0 +1,11 @@ +'use strict'; + +const fs = require('fs'); + +module.exports = (path, callback) => { + fs.readFile(path, (err, data) => { + if (err) return callback(err); + callback(null, data.toString()); + }); +}; + From f555784e6e6be0f0154c91f61edc836cc32c761a Mon Sep 17 00:00:00 2001 From: Ron Barrantes Date: Wed, 13 Sep 2017 23:40:56 -0700 Subject: [PATCH 6/9] recursion working --- lab-ron/index.js | 10 ++++++---- lab-ron/lib/reader.js | 17 +++++++++++++---- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/lab-ron/index.js b/lab-ron/index.js index edbf9e1..38f4508 100644 --- a/lab-ron/index.js +++ b/lab-ron/index.js @@ -1,11 +1,13 @@ 'use strict'; -const fs = require('fs'); const reader = require('./lib/reader'); -const path = process.argv; +const path = []; -reader(path[2], (err, data) => { +reader(path, (err, data) => { if (err) return console.error(err); console.log(data); -}); \ No newline at end of file +}); + + + diff --git a/lab-ron/lib/reader.js b/lab-ron/lib/reader.js index 9a14ceb..b8a0eaa 100644 --- a/lab-ron/lib/reader.js +++ b/lab-ron/lib/reader.js @@ -3,9 +3,18 @@ const fs = require('fs'); module.exports = (path, callback) => { - fs.readFile(path, (err, data) => { - if (err) return callback(err); - callback(null, data.toString()); - }); + + let loopFiles = (num) => { + if (num >= path.length) return; + else { + fs.readFile(path[num], (err, data) => { + if (err) return callback(err); + callback(null, data.toString()); + loopFiles(num + 1); + }); + } + }; + loopFiles(0); }; + From d8e22666b75499e042511885e444e214d95109eb Mon Sep 17 00:00:00 2001 From: Ron Barrantes Date: Wed, 13 Sep 2017 23:59:39 -0700 Subject: [PATCH 7/9] recursion working, need test --- lab-ron/__test__/reader.test.js | 18 +++++++++++++++--- lab-ron/index.js | 5 +---- lab-ron/lib/reader.js | 2 +- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/lab-ron/__test__/reader.test.js b/lab-ron/__test__/reader.test.js index 141ec04..2ac49fb 100644 --- a/lab-ron/__test__/reader.test.js +++ b/lab-ron/__test__/reader.test.js @@ -11,13 +11,25 @@ describe('#reader', () => { }); }); - test(`valid path resolves in the path's name`, (done) => { - reader(`${__dirname}/../assets/foo.txt`, (err, data) => { + test(`valid path resolves in the path's name one value`, (done) => { + reader([`${__dirname}/../assets/foo.txt`], (err, data) => { expect(err).toBeNull(); expect(data).toEqual('foo\n'); - done(); + console.log(data) + done(); }); }); + test(`valid path resolves in the path's name two value`, (done) => { + reader([`${__dirname}/../assets/bar.txt`, `${__dirname}/../assets/bar.txt`], + (err, data) => { + console.log(data); + expect(err).toBeNull(); + expect(data).toEqual('bar\nbar\n'); + done(); + }); + }); + + }); diff --git a/lab-ron/index.js b/lab-ron/index.js index 38f4508..c39295d 100644 --- a/lab-ron/index.js +++ b/lab-ron/index.js @@ -2,12 +2,9 @@ const reader = require('./lib/reader'); -const path = []; +const path = ['./assets/foo.txt', './assets/bar.txt', './assets/bar.txt', './assets/bar.txt']; reader(path, (err, data) => { if (err) return console.error(err); console.log(data); }); - - - diff --git a/lab-ron/lib/reader.js b/lab-ron/lib/reader.js index b8a0eaa..67a634e 100644 --- a/lab-ron/lib/reader.js +++ b/lab-ron/lib/reader.js @@ -3,7 +3,7 @@ const fs = require('fs'); module.exports = (path, callback) => { - + console.log( path); let loopFiles = (num) => { if (num >= path.length) return; else { From f2d7f9a18c588f1b549116f58bc8cb35b878c770 Mon Sep 17 00:00:00 2001 From: Ron Barrantes Date: Thu, 14 Sep 2017 08:51:03 -0700 Subject: [PATCH 8/9] recursion testing done --- lab-ron/README.md | 19 +++++++++++++++++++ lab-ron/__test__/reader.test.js | 5 ++--- lab-ron/index.js | 2 +- lab-ron/lib/reader.js | 2 -- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/lab-ron/README.md b/lab-ron/README.md index 806c7ae..c8a28e1 100644 --- a/lab-ron/README.md +++ b/lab-ron/README.md @@ -1,2 +1,21 @@ # Parallel File Processing +Class 3 of 401 + +### reader() +`reader()` is used to read the content of multiple files. +reader takes in two parameters, an array of paths, and a callback function e.g. `reader(path,callback)` + +``` +reader(['foo.txt', 'bar.txt, 'wic.txt'], (err, data) => { + if (err) return console.error(err); + console.log(data); +}); + +>> foo +>> +>> bar +>> +>> wic +>> +``` \ No newline at end of file diff --git a/lab-ron/__test__/reader.test.js b/lab-ron/__test__/reader.test.js index 2ac49fb..24f9358 100644 --- a/lab-ron/__test__/reader.test.js +++ b/lab-ron/__test__/reader.test.js @@ -21,15 +21,14 @@ describe('#reader', () => { }); test(`valid path resolves in the path's name two value`, (done) => { - reader([`${__dirname}/../assets/bar.txt`, `${__dirname}/../assets/bar.txt`], + reader([`${__dirname}/../assets/foo.txt`, `${__dirname}/../assets/bar.txt`], (err, data) => { console.log(data); expect(err).toBeNull(); - expect(data).toEqual('bar\nbar\n'); + expect(data).toEqual('foo\n','bar\n'); done(); }); }); - }); diff --git a/lab-ron/index.js b/lab-ron/index.js index c39295d..100c245 100644 --- a/lab-ron/index.js +++ b/lab-ron/index.js @@ -2,7 +2,7 @@ const reader = require('./lib/reader'); -const path = ['./assets/foo.txt', './assets/bar.txt', './assets/bar.txt', './assets/bar.txt']; +const path = ['./assets/foo.txt', './assets/bar.txt', './assets/hi.txt' ]; reader(path, (err, data) => { if (err) return console.error(err); diff --git a/lab-ron/lib/reader.js b/lab-ron/lib/reader.js index 67a634e..147a12a 100644 --- a/lab-ron/lib/reader.js +++ b/lab-ron/lib/reader.js @@ -16,5 +16,3 @@ module.exports = (path, callback) => { }; loopFiles(0); }; - - From 2b523e8dca8b88571e4737895861a7f3220ad711 Mon Sep 17 00:00:00 2001 From: Ron Barrantes Date: Thu, 14 Sep 2017 11:21:57 -0700 Subject: [PATCH 9/9] working file with help from Duncan --- lab-ron/__test__/reader.test.js | 24 ++++++++++++------------ lab-ron/index.js | 11 +++++------ lab-ron/lib/reader.js | 27 ++++++++++++++++----------- 3 files changed, 33 insertions(+), 29 deletions(-) diff --git a/lab-ron/__test__/reader.test.js b/lab-ron/__test__/reader.test.js index 24f9358..d212abe 100644 --- a/lab-ron/__test__/reader.test.js +++ b/lab-ron/__test__/reader.test.js @@ -4,30 +4,30 @@ const reader = require('../lib/reader.js'); describe('#reader', () => { test(`invalid path should reject an error`, (done) => { - reader(`${__dirname}/../assets/foo2.txt`, (err, data) => { + reader([`${__dirname}/../assets/foo2.txt`], (err, data) => { expect(err).not.toBeNull(); - expect(data).toBeUndefined() - done() + expect(data).toBeUndefined(); + done(); }); }); - test(`valid path resolves in the path's name one value`, (done) => { + test(`valid path resolves a maped array of the file data`, (done) => { reader([`${__dirname}/../assets/foo.txt`], (err, data) => { expect(err).toBeNull(); - expect(data).toEqual('foo\n'); - console.log(data) + expect(data).toEqual(['foo\n']); + console.log(data); done(); }); }); test(`valid path resolves in the path's name two value`, (done) => { reader([`${__dirname}/../assets/foo.txt`, `${__dirname}/../assets/bar.txt`], - (err, data) => { - console.log(data); - expect(err).toBeNull(); - expect(data).toEqual('foo\n','bar\n'); - done(); - }); + (err, data) => { + console.log(data); + expect(err).toBeNull(); + expect(data).toEqual(['foo\n', 'bar\n']); + done(); + }); }); }); diff --git a/lab-ron/index.js b/lab-ron/index.js index 100c245..1fb8681 100644 --- a/lab-ron/index.js +++ b/lab-ron/index.js @@ -2,9 +2,8 @@ const reader = require('./lib/reader'); -const path = ['./assets/foo.txt', './assets/bar.txt', './assets/hi.txt' ]; - -reader(path, (err, data) => { - if (err) return console.error(err); - console.log(data); -}); +reader(process.argv.slice(2), (err, data) => { + if (err) + return console.log('USAGE ERROR: something went wrong'); + console.log(data.join('\n')); +}); \ No newline at end of file diff --git a/lab-ron/lib/reader.js b/lab-ron/lib/reader.js index 147a12a..00fd559 100644 --- a/lab-ron/lib/reader.js +++ b/lab-ron/lib/reader.js @@ -2,17 +2,22 @@ const fs = require('fs'); -module.exports = (path, callback) => { - console.log( path); +module.exports = (paths, callback) => { + console.log(paths); + let result = []; + let loopFiles = (num) => { - if (num >= path.length) return; - else { - fs.readFile(path[num], (err, data) => { - if (err) return callback(err); - callback(null, data.toString()); - loopFiles(num + 1); - }); - } + if (num === paths.length) + return callback(null, result); + fs.readFile(paths[num], (err, data) => { + if (err) + return callback(err); + result.push(data.toString()); + loopFiles(num + 1); + }); }; + loopFiles(0); -}; +}; + +