From 5161a3a82324712184767f28991009ed5d1876dd Mon Sep 17 00:00:00 2001 From: hacksalot Date: Thu, 1 Feb 2018 06:44:07 -0500 Subject: [PATCH] feat: include private fields during convert --- dist/core/abstract-resume.js | 2 +- dist/core/fresh-resume.js | 9 +++++---- dist/core/jrs-resume.js | 9 +++++---- dist/verbs/convert.js | 5 ++++- src/core/abstract-resume.coffee | 4 ++-- src/core/fresh-resume.coffee | 8 ++++---- src/core/jrs-resume.coffee | 8 ++++---- src/verbs/convert.coffee | 6 +++++- 8 files changed, 30 insertions(+), 21 deletions(-) diff --git a/dist/core/abstract-resume.js b/dist/core/abstract-resume.js index b2227bf..ce0e81e 100644 --- a/dist/core/abstract-resume.js +++ b/dist/core/abstract-resume.js @@ -78,7 +78,7 @@ Definition of the AbstractResume class. traverse = require('traverse'); ignoreList = []; privateList = []; - includePrivates = (opts != null ? opts["private"] : void 0) == null ? true : opts != null ? opts["private"] : void 0; + includePrivates = opts && opts["private"]; scrubbed = traverse(rep).map(function() { if (!this.isLeaf) { if (this.node.ignore === true || this.node.ignore === 'true') { diff --git a/dist/core/fresh-resume.js b/dist/core/fresh-resume.js index c7d2886..6632689 100644 --- a/dist/core/fresh-resume.js +++ b/dist/core/fresh-resume.js @@ -77,10 +77,11 @@ Definition of the FRESHResume class. */ FreshResume.prototype.parseJSON = function(rep, opts) { - var ignoreList, privateList, ref, ref1, scrubbed, that; - that = this; - ref = this.scrubResume(rep, opts), scrubbed = ref.scrubbed, ignoreList = ref.ignoreList, privateList = ref.privateList; - extend(true, this, scrubbed); + var ignoreList, privateList, ref, ref1, scrubbed; + if (opts && opts.privatize) { + ref = this.scrubResume(rep, opts), scrubbed = ref.scrubbed, ignoreList = ref.ignoreList, privateList = ref.privateList; + } + extend(true, this, opts && opts.privatize ? scrubbed : rep); if (!((ref1 = this.imp) != null ? ref1.processed : void 0)) { opts = opts || {}; if (opts.imp === void 0 || opts.imp) { diff --git a/dist/core/jrs-resume.js b/dist/core/jrs-resume.js index 5b4e5e2..be078ad 100644 --- a/dist/core/jrs-resume.js +++ b/dist/core/jrs-resume.js @@ -71,11 +71,12 @@ Definition of the JRSResume class. */ JRSResume.prototype.parseJSON = function(rep, opts) { - var ignoreList, privateList, ref, ref1, scrubbed, that; + var ignoreList, privateList, ref, ref1, scrubbed; opts = opts || {}; - that = this; - ref = this.scrubResume(rep, opts), scrubbed = ref.scrubbed, ignoreList = ref.ignoreList, privateList = ref.privateList; - extend(true, this, scrubbed); + if (opts.privatize) { + ref = this.scrubResume(rep, opts), scrubbed = ref.scrubbed, ignoreList = ref.ignoreList, privateList = ref.privateList; + } + extend(true, this, opts.privatize ? scrubbed : rep); if (!((ref1 = this.imp) != null ? ref1.processed : void 0)) { opts = opts || {}; if (opts.imp === void 0 || opts.imp) { diff --git a/dist/verbs/convert.js b/dist/verbs/convert.js index cedd0a3..f3e4806 100644 --- a/dist/verbs/convert.js +++ b/dist/verbs/convert.js @@ -93,7 +93,10 @@ Implementation of the 'convert' verb for HackMyResume. var rez, rinfo, srcFmt, targetFormat; rinfo = ResumeFactory.loadOne(src, { format: null, - objectify: true + objectify: true, + inner: { + privatize: false + } }); if (rinfo.fluenterror) { this.stat(HMEVENT.beforeConvert, { diff --git a/src/core/abstract-resume.coffee b/src/core/abstract-resume.coffee index 575f846..13ce00c 100644 --- a/src/core/abstract-resume.coffee +++ b/src/core/abstract-resume.coffee @@ -63,7 +63,7 @@ class AbstractResume traverse = require 'traverse' ignoreList = [] privateList = [] - includePrivates = if not opts?.private? then true else opts?.private + includePrivates = opts && opts.private scrubbed = traverse( rep ).map () -> # [^1] if !@isLeaf @@ -86,7 +86,7 @@ class AbstractResume module.exports = AbstractResume -# [^1]: As of this writing, the NPM traverse library has a quirk when attempting +# [^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 diff --git a/src/core/fresh-resume.coffee b/src/core/fresh-resume.coffee index 6bc91ce..28b89e5 100644 --- a/src/core/fresh-resume.coffee +++ b/src/core/fresh-resume.coffee @@ -53,12 +53,12 @@ class FreshResume extends AbstractResume ### parseJSON: ( rep, opts ) -> - # Ignore any element with the 'ignore: true' or 'private: true' designator. - that = @ - { scrubbed, ignoreList, privateList } = @scrubResume rep, opts + if opts and opts.privatize + # Ignore any element with the 'ignore: true' or 'private: true' designator. + { scrubbed, ignoreList, privateList } = @scrubResume rep, opts # Now apply the resume representation onto this object - extend( true, @, scrubbed ); + extend true, @, if opts and opts.privatize then scrubbed else rep # If the resume has already been processed, then we are being called from # the .dupe method, and there's no need to do any post processing diff --git a/src/core/jrs-resume.coffee b/src/core/jrs-resume.coffee index 42551a9..e7b2835 100644 --- a/src/core/jrs-resume.coffee +++ b/src/core/jrs-resume.coffee @@ -48,12 +48,12 @@ class JRSResume extends AbstractResume ### parseJSON: ( rep, opts ) -> opts = opts || { }; - # Ignore any element with the 'ignore: true' or 'private: true' designator. - that = this - { scrubbed, ignoreList, privateList } = @scrubResume rep, opts + if opts.privatize + # Ignore any element with the 'ignore: true' or 'private: true' designator. + { scrubbed, ignoreList, privateList } = @scrubResume rep, opts # Extend resume properties onto ourself. - extend true, this, scrubbed + extend true, this, if opts.privatize then scrubbed else rep # Set up metadata if !@imp?.processed diff --git a/src/verbs/convert.coffee b/src/verbs/convert.coffee index 9fdebc1..00272bf 100644 --- a/src/verbs/convert.coffee +++ b/src/verbs/convert.coffee @@ -77,7 +77,11 @@ _convert = ( srcs, dst, opts ) -> _convertOne = (src, dst, idx) -> # Load the resume - rinfo = ResumeFactory.loadOne src, format: null, objectify: true + rinfo = ResumeFactory.loadOne src, + format: null + objectify: true, + inner: + privatize: false # If a load error occurs, report it and move on to the next file (if any) if rinfo.fluenterror