cray
Version:
Epub parser
59 lines (46 loc) • 1.4 kB
JavaScript
/**
* @author: Akshay Kr Singh.
* @date: 20/11/15.
* @github: https://github.com/akshayKrSingh
*/
var Reader = require('../reader/index');
var Editor = require('../editor/index');
var _ = require('lodash');
var util = require('util');
var EventEmitter = require('events').EventEmitter;
var parsePath = require('parse-filepath');
var Parser = function(path) {
if (!(this instanceof Parser)) {
return new Parser(path);
}
EventEmitter.call(this);
var paths = (path) ? _.isArray(path) ? path : [path] : [],
epubs = [], queueLength = paths.length, processedCounter = 0;
var parser = this;
function emitWhenDone() {
if (processedCounter >= queueLength) {
parser.emit('READY', epubs);
}
}
_.each(paths, function(loc) {
var e = Reader({path: loc}), locInfo = parsePath(loc);
e.parse();
e.baseName = locInfo.basename;
e.absolutePath = locInfo.absolute;
e.dirName = locInfo.dirName || 'CWD';
epubs.push(e);
epubs[epubs.length - 1].on('error', function() {
processedCounter++;
emitWhenDone();
});
epubs[epubs.length - 1].on('finish', function() {
processedCounter++;
emitWhenDone();
});
});
this.queue = epubs;
this.Reader = Reader;
this.Editor = Editor;
};
util.inherits(Parser, EventEmitter);
module.exports = Parser;