mirror of
https://github.com/JuanCanham/HackMyResume.git
synced 2024-11-22 16:30:11 +00:00
0f65e4c9f3
Reintroduce HackMyCore, dropping the interim submodule, and reorganize and improve tests.
78 lines
1.7 KiB
JavaScript
78 lines
1.7 KiB
JavaScript
|
|
/**
|
|
Implementation of the 'peek' verb for HackMyResume.
|
|
@module verbs/peek
|
|
@license MIT. See LICENSE.md for details.
|
|
*/
|
|
|
|
(function() {
|
|
var HMEVENT, HMSTATUS, PeekVerb, Verb, _, __, peek, safeLoadJSON;
|
|
|
|
Verb = require('../verbs/verb');
|
|
|
|
_ = require('underscore');
|
|
|
|
__ = require('lodash');
|
|
|
|
safeLoadJSON = require('../utils/safe-json-loader');
|
|
|
|
HMSTATUS = require('../core/status-codes');
|
|
|
|
HMEVENT = require('../core/event-codes');
|
|
|
|
PeekVerb = module.exports = Verb.extend({
|
|
init: function() {
|
|
return this._super('peek');
|
|
},
|
|
invoke: function() {
|
|
this.stat(HMEVENT.begin, {
|
|
cmd: 'peek'
|
|
});
|
|
peek.apply(this, arguments);
|
|
return this.stat(HMEVENT.end);
|
|
}
|
|
});
|
|
|
|
|
|
/** Peek at a resume, resume section, or resume field. */
|
|
|
|
peek = function(src, dst, opts) {
|
|
var objPath;
|
|
if (!src || !src.length) {
|
|
({
|
|
"throw": {
|
|
fluenterror: HMSTATUS.resumeNotFound
|
|
}
|
|
});
|
|
}
|
|
objPath = (dst && dst[0]) || '';
|
|
_.each(src, function(t) {
|
|
var errCode, obj, tgt;
|
|
this.stat(HMEVENT.beforePeek, {
|
|
file: t,
|
|
target: objPath
|
|
});
|
|
obj = safeLoadJSON(t);
|
|
tgt = null;
|
|
if (!obj.ex) {
|
|
tgt = objPath ? __.get(obj.json, objPath) : obj.json;
|
|
}
|
|
this.stat(HMEVENT.afterPeek, {
|
|
file: t,
|
|
requested: objPath,
|
|
target: tgt,
|
|
error: obj.ex
|
|
});
|
|
if (obj.ex) {
|
|
errCode = obj.ex.operation === 'parse' ? HMSTATUS.parseError : HMSTATUS.readError;
|
|
if (errCode === HMSTATUS.readError) {
|
|
obj.ex.quiet = true;
|
|
}
|
|
this.setError(errCode, obj.ex);
|
|
return this.err(errCode, obj.ex);
|
|
}
|
|
}, this);
|
|
};
|
|
|
|
}).call(this);
|