Skip to content

cayla-lab #8

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rules": {
"no-console": "off",
"indent": [ "error", 2 ],
"quotes": [ "error", "single" ],
"semi": ["error", "always"],
"linebreak-style": [ "error", "unix" ]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No comma dangle. Boo. :p

},
"env": {
"es6": true,
"node": true,
"mocha": true,
"jasmine": true
},
"ecmaFeatures": {
"modules": true,
"experimentalObjectRestSpread": true,
"impliedStrict": true
},
"extends": "eslint:recommended"
}
113 changes: 113 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# Created by https://www.gitignore.io/api/node,osx,windows

### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# nyc test coverage
.nyc_output

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# Typescript v1 declaration files
typings/

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env


### OSX ###
*.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon


# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

### Windows ###
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db

# Folder config file
Desktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Windows Installer files
*.cab
*.msi
*.msm
*.msp

# Windows shortcuts
*.lnk

# End of https://www.gitignore.io/api/node,osx,windows
1 change: 1 addition & 0 deletions data/one.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1file number one
1 change: 1 addition & 0 deletions data/three.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2file number three
1 change: 1 addition & 0 deletions data/two.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3file number two
4 changes: 4 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
'use strict';

const fs = require('fs');
const readFiles = require('./lib/file-reader.js')

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're requiring in your file reader here in the index, but you're not using it here.

Write a version of the function call for the readFiles method so that you can call it here in the index file, and not just in the test file.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Basically, I want you to create a function much like how you did in your tests to take the data from your three files and print them out or do something with them in a meaningful way.

22 changes: 22 additions & 0 deletions lib/file-reader.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
'use strict';

const fs = require('fs');

const readFileHelper = module.exports = function(pathArray, callback) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work making the input an array of paths.

var result = [];

fs.readFile(pathArray[0],function(err, data){
if (err) return callback(err);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice use of returning the callback of the error.

result.push(data.toString('hex', 0, 8));
fs.readFile(pathArray[1], function(err, data){
if (err) return callback(err);
result.push(data.toString('hex', 0, 8));
fs.readFile(pathArray[2], function (err, data){
if (err) return callback(err);
result.push(data.toString('hex', 0,8));
console.log('my result:', result);
callback(null, result);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work calling the callback at the bottom with the resulting information and a null for the first argument. Perfect ansynchronous callback pattern.

});
});
});
};
29 changes: 29 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"name": "03-parallel_file_processing",
"version": "1.0.0",
"description": "![CF](https://camo.githubusercontent.com/70edab54bba80edb7493cad3135e9606781cbb6b/687474703a2f2f692e696d6775722e636f6d2f377635415363382e706e67) Lab 03: Parallel File Processing ===",
"main": "index.js",
"directories": {
"test": "test"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/caylazabel/03-parallel_file_processing.git"
},
"keywords": [],
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/caylazabel/03-parallel_file_processing/issues"
},
"homepage": "https://github.com/caylazabel/03-parallel_file_processing#readme",
"devDependencies": {
"chai": "^3.5.0",
"gulp-eslint": "^3.0.1",
"gulp-mocha": "^3.0.1",
"mocha": "^3.2.0"
}
}
36 changes: 36 additions & 0 deletions test/file-reader-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
'use strict';

const expect = require('chai').expect;
const readFile = require('../lib/file-reader.js');

describe('Read File Helper Module', function(){
describe('with bad file paths', function(){
it('should return an error', function(){
readFile([`${__dirname}/dont-exist.txt`], function(err){
expect(!!err).to.equal(true);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good stuff with the double bang here.

});
});
});

describe('with file good file paths', function(){
before((done) => {
this.paths = [

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work using the before block like Brian did during class.

`${__dirname}/../data/one.txt`,
`${__dirname}/../data/two.txt`,
`${__dirname}/../data/three.txt`
];
done();
});
it('should have correct order of hex strings', (done) => {
var expectedResult = ['3166696c65206e75', '3366696c65206e75', '3266696c65206e75'];

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perfect way to check the call is being made asynchronously.

readFile(this.paths, function(err, data){
expect(err).to.equal(null);
expect(data[0]).to.equal(expectedResult[0]);
expect(data[1]).to.equal(expectedResult[1]);
expect(data[2]).to.equal(expectedResult[2]);
console.log('data', data);
done();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great use of done here to end things.

});
});
});
});