2016-01-27 10:29:26 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
Implementation of the 'convert' verb for HackMyResume.
|
|
|
|
@module verbs/convert
|
|
|
|
@license MIT. See LICENSE.md for details.
|
|
|
|
*/
|
|
|
|
|
|
|
|
(function() {
|
|
|
|
var ConvertVerb, HMEVENT, HMSTATUS, ResumeFactory, Verb, _, chalk, convert;
|
|
|
|
|
|
|
|
ResumeFactory = require('../core/resume-factory');
|
|
|
|
|
|
|
|
chalk = require('chalk');
|
|
|
|
|
|
|
|
Verb = require('../verbs/verb');
|
|
|
|
|
|
|
|
HMSTATUS = require('../core/status-codes');
|
|
|
|
|
|
|
|
_ = require('underscore');
|
|
|
|
|
|
|
|
HMEVENT = require('../core/event-codes');
|
|
|
|
|
|
|
|
ConvertVerb = module.exports = Verb.extend({
|
|
|
|
init: function() {
|
2016-01-31 13:37:12 +00:00
|
|
|
return this._super('convert', convert);
|
2016-01-27 10:29:26 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
Convert between FRESH and JRS formats.
|
|
|
|
*/
|
|
|
|
|
|
|
|
convert = function(srcs, dst, opts) {
|
|
|
|
if (!srcs || !srcs.length) {
|
|
|
|
throw {
|
|
|
|
fluenterror: 6,
|
|
|
|
quit: true
|
|
|
|
};
|
|
|
|
}
|
|
|
|
if (!dst || !dst.length) {
|
|
|
|
if (srcs.length === 1) {
|
|
|
|
throw {
|
|
|
|
fluenterror: HMSTATUS.inputOutputParity,
|
|
|
|
quit: true
|
|
|
|
};
|
|
|
|
} else if (srcs.length === 2) {
|
|
|
|
dst = dst || [];
|
|
|
|
dst.push(srcs.pop());
|
|
|
|
} else {
|
|
|
|
throw {
|
|
|
|
fluenterror: HMSTATUS.inputOutputParity,
|
|
|
|
quit: true
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (srcs && dst && srcs.length && dst.length && srcs.length !== dst.length) {
|
|
|
|
throw {
|
|
|
|
fluenterror: HMSTATUS.inputOutputParity({
|
|
|
|
quit: true
|
|
|
|
})
|
|
|
|
};
|
|
|
|
}
|
|
|
|
_.each(srcs, function(src, idx) {
|
|
|
|
var rinfo, s, srcFmt, targetFormat;
|
|
|
|
rinfo = ResumeFactory.loadOne(src, {
|
|
|
|
format: null,
|
|
|
|
objectify: true,
|
|
|
|
"throw": false
|
|
|
|
});
|
|
|
|
if (rinfo.fluenterror) {
|
|
|
|
this.err(rinfo.fluenterror, rinfo);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
s = rinfo.rez;
|
|
|
|
srcFmt = ((s.basics && s.basics.imp) || s.imp).orgFormat === 'JRS' ? 'JRS' : 'FRESH';
|
|
|
|
targetFormat = srcFmt === 'JRS' ? 'FRESH' : 'JRS';
|
|
|
|
this.stat(HMEVENT.beforeConvert, {
|
|
|
|
srcFile: rinfo.file,
|
|
|
|
srcFmt: srcFmt,
|
|
|
|
dstFile: dst[idx],
|
|
|
|
dstFmt: targetFormat
|
|
|
|
});
|
|
|
|
s.saveAs(dst[idx], targetFormat);
|
|
|
|
}, this);
|
|
|
|
};
|
|
|
|
|
|
|
|
}).call(this);
|