mirror of
https://github.com/JuanCanham/HackMyResume.git
synced 2024-11-05 09:56:22 +00:00
56 lines
1.7 KiB
JavaScript
56 lines
1.7 KiB
JavaScript
(function() {
|
|
module.exports = {
|
|
/**
|
|
Removes ignored or private fields from a resume object
|
|
@returns an object with the following structure:
|
|
{
|
|
scrubbed: the processed resume object
|
|
ignoreList: an array of ignored nodes that were removed
|
|
privateList: an array of private nodes that were removed
|
|
}
|
|
*/
|
|
scrubResume: function(rep, opts) {
|
|
var ignoreList, includePrivates, privateList, scrubbed, traverse;
|
|
traverse = require('traverse');
|
|
ignoreList = [];
|
|
privateList = [];
|
|
includePrivates = opts && opts.private;
|
|
scrubbed = traverse(rep).map(function() { // [^1]
|
|
if (!this.isLeaf) {
|
|
if (this.node.ignore === true || this.node.ignore === 'true') {
|
|
ignoreList.push(this.node);
|
|
this.delete();
|
|
} else if ((this.node.private === true || this.node.private === 'true') && !includePrivates) {
|
|
privateList.push(this.node);
|
|
this.delete();
|
|
}
|
|
}
|
|
if (_.isArray(this.node)) { // [^2]
|
|
this.after(function() {
|
|
this.update(_.compact(this.node));
|
|
});
|
|
}
|
|
});
|
|
return {
|
|
scrubbed: scrubbed,
|
|
ingoreList: ignoreList,
|
|
privateList: privateList
|
|
};
|
|
}
|
|
};
|
|
|
|
// [^1]: As of v0.6.6, the NPM traverse library has a quirk when attempting
|
|
// to remove array elements directly using traverse's `this.remove`. See:
|
|
|
|
// https://github.com/substack/js-traverse/issues/48
|
|
|
|
// [^2]: The workaround is to use traverse's 'this.delete' to nullify the value
|
|
// first, followed by removal with something like _.compact.
|
|
|
|
// https://github.com/substack/js-traverse/issues/48#issuecomment-142607200
|
|
|
|
|
|
}).call(this);
|
|
|
|
//# sourceMappingURL=resume-scrubber.js.map
|