Skip to content
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
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
# assignment_async_nodejs
Async Node.js sprint

Brian P. Gallagher
49 changes: 49 additions & 0 deletions data/lorem.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.


Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.


Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.


Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.


Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.











1 change: 1 addition & 0 deletions data/test.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Hello!Hello again!
35 changes: 35 additions & 0 deletions events.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
var Emitter = require('./lib/my_event_emitter');
// var Emitter = require('events');


var emitter = new Emitter();
emitter.on('go', function() {
console.log(this);
});

console.log('1. ', emitter._events);

var fn = function() {
console.log('Hi');
};

emitter.on('go', fn);
// emitter.addListener('go', fn);

console.log('2. ', emitter._events);

emitter.removeListener('go', fn);

console.log('3. ', emitter._events);

emitter.on('go', fn);

console.log('4. ', emitter._events);

emitter.emit('go');

emitter.removeAllListeners('go');

console.log('5. ', emitter._events);


49 changes: 49 additions & 0 deletions file_io.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
var fs = require('fs');
var fsp = require('./lib/fsp');


const FILE_PATH = `${ __dirname }/data/lorem.txt`;
// console.log(FILE_PATH);

var data = fs.readFileSync(FILE_PATH, 'utf8');
// console.log(data);


// fs.readFile(FILE_PATH, 'utf8', function(err, data) {
// err ? console.error(err) : console.log(data);
// });


fsp.readFile('./data/lorem.txt')
.then(function(data) {
console.log(data);
})
.catch(function(err) {
console.error(err);
});


fsp.writeFile('./data/test.txt', 'Hello!')
.then(function(res) {
console.log(res);
})
.catch(function(err) {
console.error(err);
});


fsp.appendFile('./data/test.txt', 'Hello again!')
.then(function(res) {
console.log(res);
})
.catch(function(err) {
console.error(err);
});








82 changes: 82 additions & 0 deletions lib/fsp.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
var fs = require('fs');


var fsp = {};

// readFile(fd, options, cb)
fsp.readFile = function(path, options) {
if (!options) {
options = 'utf8';
}

return new Promise(function(resolve, reject) {
fs.readFile(path, options, function(err, data) {
err ? reject(err) : resolve(data);
});
});
};


// writeFile(file, data, options, cb)
fsp.writeFile = function(path, options) {
if (!options) {
options = 'utf8';
}

return new Promise(function(resolve, reject) {
fs.writeFile(path, options, function(err) {
if (err) {
reject(err);
} else {
fsp.readFile(path)
.then(function(data) {
resolve(data);
})
.catch(function(err) {
reject(err);
});
}
});
});
};


// appendFile(file, data, options, cb)
fsp.appendFile = function(path, data, options) {
if (!options) {
options = 'utf8';
}

return new Promise(function(resolve, reject) {
fs.appendFile(path, data, options, function(err) {
if (err) {
reject(err);
} else {
fsp.readFile(path)
.then(function(data) {
resolve(data);
})
.catch(function(err) {
reject(err);
});
}
});
});
};


module.exports = fsp;














58 changes: 58 additions & 0 deletions lib/my_event_emitter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@


function MyEventEmitter() {
this._events = {};
}


MyEventEmitter.prototype.emit = function(eventType) {
if (!this._events[eventType]) {
return;
}

for (var i = 0; i < this._events[eventType].length; i++) {
var callback = this._events[eventType][i];
callback.call(this);
}
};


MyEventEmitter.prototype.on = function(eventType, callback) {
this._events[eventType] = this._events[eventType] || [];
this._events[eventType].push(callback);
};


MyEventEmitter.prototype.addListener = MyEventEmitter.prototype.on;


MyEventEmitter.prototype.removeListener = function(eventType, callback) {
if (this._events[eventType] && callback) {
for (var i = 0; i < this._events[eventType].length; i++) {
if (callback === this._events[eventType][i]) {
this._events[eventType].splice(i, 1);
}
}
}
};


MyEventEmitter.prototype.removeAllListeners = function(eventType) {
this._events[eventType] = this._events[eventType] || [];
this._events[eventType].splice(0);
delete this._events[eventType];
};




module.exports = MyEventEmitter;









Loading