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
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Created by .ignore support plugin (hsz.mobi)
### Example user template template
### Example user template

# IntelliJ project files
.idea
*.iml
out
gen
node_modules/
.idea/
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

Jennifer Louie
1 change: 1 addition & 0 deletions data/lorem.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi eget libero et ligula volutpat gravida. Nam venenatis ante nisl, id imperdiet enim imperdiet nec. Quisque cursus hendrerit erat, nec molestie libero fringilla nec. Aliquam varius condimentum nisl, in ullamcorper quam molestie eget. Sed eleifend massa tempor, dapibus magna sit amet, mattis est. Donec maximus rhoncus leo, ac suscipit risus facilisis at. Donec sollicitudin sapien nibh. Vivamus ut nisl finibus, pulvinar nisl vel, tincidunt tortor. Donec faucibus arcu vitae enim tincidunt posuere. Nunc ut dolor lectus. Duis vehicula aliquet tortor quis feugiat. Maecenas dignissim ipsum at pharetra volutpat. Vivamus non bibendum nibh, vel dictum neque. Proin id orci convallis, viverra urna vestibulum, sollicitudin orci. Duis congue augue lobortis, bibendum ante vel, pretium ligula. Duis faucibus justo non tempor cursus.
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!
13 changes: 13 additions & 0 deletions emitter-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
const EventEmitter = require('./emitter');
// const EventEmitter = require('events');

const eventEmitter = new EventEmitter();

const callback = () => {
console.log('an event occurred!');
};

eventEmitter.on('event', callback);
eventEmitter.emit('event');

eventEmitter.removeListener('event', callback);
53 changes: 53 additions & 0 deletions emitter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
const _ = require('lodash');

const emitter = function() {

var eventListeners = [];

this.on = function(eventType, callback) {
var event = _.find(eventListeners, ['event', eventType]);
if(event) {
event.listeners.push(callback);
}
else {
eventListeners.push({
'event': eventType,
'listeners': [callback]
});
}
};

this.emit = function(eventType, args) {
var event = _.find(eventListeners, ['event', eventType]);
if(event) {
_.forEach(event.listeners, (callback) => {
_.attempt(callback, args);
});
}
};

this.removeListener = function(eventType, callback) {
var event = _.find(eventListeners, ['event', eventType]);
if(event) {
_.forEach(event.listeners, (listener) => {
if(_.isEqual(listener, callback)) {
const index = event.listeners.indexOf(listener);

if (index !== -1) {
event.listeners.splice(index, 1);
}
return false; // break forEach
}
});
}
};

this.removeAllListeners = function(eventType) {
var event = _.find(eventListeners, ['event', eventType]);
if(event) {
event.listeners.length = 0; // clear array
}
};
};

module.exports = emitter;
30 changes: 30 additions & 0 deletions fsp-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
const fsp = require('./fsp');

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

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

fsp.appendFile('./data/test.txt', 'Hello again!')
.then(function(res) {
// Outputs the file data
// after appending
console.log(res);
})
.catch(function(err) {
console.error(err);
});
38 changes: 38 additions & 0 deletions fsp.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
const fs = require('fs');

const fsp = {
readFile: function(path) {
return new Promise((resolve, reject) => {
fs.readFile(path, 'utf8', (error, data) => {
if(error) {
reject(error);
}
resolve(data);
});
});
},

writeFile: function(file, data) {
return new Promise((resolve, reject) => {
fs.writeFile(file, data, (error) => {
if(error) {
reject(error);
}
resolve(data);
});
});
},

appendFile: function(file, data) {
return new Promise((resolve, reject) => {
fs.appendFile(file, data, (error) => {
if(error) {
reject(error);
}
resolve(data);
});
});
},
};

module.exports = fsp;
Loading