From 7196bff27cafc8033ef5c9a74a97cf8ed29a841a Mon Sep 17 00:00:00 2001 From: hacksalot Date: Sat, 10 Feb 2018 01:10:20 -0500 Subject: [PATCH] feat: support JSON Resume edge schema --- dist/core/fresh-resume.js | 18 +++++++----------- dist/verbs/convert.js | 14 +++++--------- src/core/fresh-resume.coffee | 10 ++++++---- src/verbs/convert.coffee | 24 +++++++++++++----------- 4 files changed, 31 insertions(+), 35 deletions(-) diff --git a/dist/core/fresh-resume.js b/dist/core/fresh-resume.js index a053163..690dbf4 100644 --- a/dist/core/fresh-resume.js +++ b/dist/core/fresh-resume.js @@ -109,22 +109,18 @@ Definition of the FRESHResume class. Save the sheet to disk in a specific format, either FRESH or JSON Resume. */ - FreshResume.prototype.saveAs = function(filename, format, version) { - var freshVersionReg, newRep, parts, safeFormat, safeVersion; - safeFormat = (format || 'FRESH').trim(); - safeVersion = version || "0"; - freshVersionReg = require('../utils/fresh-version-regex'); - if (!freshVersionReg().test(safeFormat)) { - throw { - badVer: safeFormat - }; - } + FreshResume.prototype.saveAs = function(filename, format) { + var newRep, parts, safeFormat, useEdgeSchema; + safeFormat = (format && format.trim()) || 'FRESH'; parts = safeFormat.split('@'); if (parts[0] === 'FRESH') { this.imp.file = filename || this.imp.file; FS.writeFileSync(this.imp.file, this.stringify(), 'utf8'); } else if (parts[0] === 'JRS') { - newRep = CONVERTER.toJRS(this, null, parts.length > 1 ? parts[1] : "1.0.0"); + useEdgeSchema = parts.length > 1 ? parts[1] === '1' : false; + newRep = CONVERTER.toJRS(this, { + edge: useEdgeSchema + }); FS.writeFileSync(filename, JRSResume.stringify(newRep), 'utf8'); } else { throw { diff --git a/dist/verbs/convert.js b/dist/verbs/convert.js index 9101672..d4f83bd 100644 --- a/dist/verbs/convert.js +++ b/dist/verbs/convert.js @@ -39,7 +39,7 @@ Implementation of the 'convert' verb for HackMyResume. */ _convert = function(srcs, dst, opts) { - var fmtUp, freshVerRegex, matches, results, targetSchema, targetVer; + var fmtUp, results, targetVer; if (!srcs || !srcs.length) { this.err(HMSTATUS.resumeNotFound, { quit: true @@ -68,16 +68,12 @@ Implementation of the 'convert' verb for HackMyResume. targetVer = null; if (opts.format) { fmtUp = opts.format.trim().toUpperCase(); - freshVerRegex = require('../utils/fresh-version-regex'); - matches = fmtUp.match(freshVerRegex()); - if (!matches) { + if (!_.contains(['FRESH', 'FRESCA', 'JRS', 'JRS@1', 'JRS@edge'], fmtUp)) { this.err(HMSTATUS.invalidSchemaVersion, { data: opts.format.trim(), quit: true }); } - targetSchema = matches[1]; - targetVer = matches[2] || '1'; } if (this.hasError()) { this.reject(this.errorCode); @@ -85,7 +81,7 @@ Implementation of the 'convert' verb for HackMyResume. } results = _.map(srcs, function(src, idx) { var r; - r = _convertOne.call(this, src, dst, idx, targetSchema, targetVer); + r = _convertOne.call(this, src, dst, idx, fmtUp); if (r.fluenterror) { r.quit = opts.assert; this.err(r.fluenterror, r); @@ -103,7 +99,7 @@ Implementation of the 'convert' verb for HackMyResume. /** Private workhorse method. Convert a single resume. */ - _convertOne = function(src, dst, idx, targetSchema, targetVer) { + _convertOne = function(src, dst, idx, targetSchema) { var err, rez, rinfo, srcFmt, targetFormat; rinfo = ResumeFactory.loadOne(src, { format: null, @@ -140,7 +136,7 @@ Implementation of the 'convert' verb for HackMyResume. dstFmt: targetFormat }); try { - rez.saveAs(dst[idx], targetFormat, targetVer); + rez.saveAs(dst[idx], targetFormat); } catch (_error) { err = _error; if (err.badVer) { diff --git a/src/core/fresh-resume.coffee b/src/core/fresh-resume.coffee index d6b6bea..32826c5 100644 --- a/src/core/fresh-resume.coffee +++ b/src/core/fresh-resume.coffee @@ -94,11 +94,10 @@ class FreshResume# extends AbstractResume ###* Save the sheet to disk in a specific format, either FRESH or JSON Resume. ### - saveAs: ( filename, format, version ) -> + saveAs: ( filename, format ) -> # If format isn't specified, default to FRESH - safeFormat = (format || 'FRESH').trim() - safeVersion = version || "0" + safeFormat = (format && format.trim()) || 'FRESH' # Validate against the FRESH version regex # freshVersionReg = require '../utils/fresh-version-regex' @@ -106,11 +105,14 @@ class FreshResume# extends AbstractResume # throw badVer: safeFormat parts = safeFormat.split '@' + if parts[0] == 'FRESH' @imp.file = filename || @imp.file FS.writeFileSync @imp.file, @stringify(), 'utf8' + else if parts[0] == 'JRS' - newRep = CONVERTER.toJRS @, null, if parts.length > 1 then parts[1] else "1" + useEdgeSchema = if parts.length > 1 then parts[1] == '1' else false + newRep = CONVERTER.toJRS @, edge: useEdgeSchema FS.writeFileSync filename, JRSResume.stringify( newRep ), 'utf8' else throw badVer: safeFormat diff --git a/src/verbs/convert.coffee b/src/verbs/convert.coffee index 7604034..baa500e 100644 --- a/src/verbs/convert.coffee +++ b/src/verbs/convert.coffee @@ -50,15 +50,17 @@ _convert = ( srcs, dst, opts ) -> targetVer = null if opts.format fmtUp = opts.format.trim().toUpperCase() - freshVerRegex = require '../utils/fresh-version-regex' - matches = fmtUp.match freshVerRegex() - # null - # [ 'JRS@1.0', 'JRS', '1.0', index: 0, input: 'FRESH' ] - # [ 'FRESH', 'FRESH', undefined, index: 0, input: 'FRESH' ] - if not matches + if not _.contains ['FRESH','FRESCA','JRS','JRS@1','JRS@edge'], fmtUp @err HMSTATUS.invalidSchemaVersion, data: opts.format.trim(), quit: true - targetSchema = matches[1] - targetVer = matches[2] || '1' + # freshVerRegex = require '../utils/fresh-version-regex' + # matches = fmtUp.match freshVerRegex() + # # null + # # [ 'JRS@1.0', 'JRS', '1.0', index: 0, input: 'FRESH' ] + # # [ 'FRESH', 'FRESH', undefined, index: 0, input: 'FRESH' ] + # if not matches + # @err HMSTATUS.invalidSchemaVersion, data: opts.format.trim(), quit: true + # targetSchema = matches[1] + # targetVer = matches[2] || '1' # If any errors have occurred this early, we're done. if @hasError() @@ -69,7 +71,7 @@ _convert = ( srcs, dst, opts ) -> results = _.map srcs, ( src, idx ) -> # Convert each resume in turn - r = _convertOne.call @, src, dst, idx, targetSchema, targetVer + r = _convertOne.call @, src, dst, idx, fmtUp # Handle conversion errors if r.fluenterror @@ -88,7 +90,7 @@ _convert = ( srcs, dst, opts ) -> ###* Private workhorse method. Convert a single resume. ### -_convertOne = (src, dst, idx, targetSchema, targetVer) -> +_convertOne = (src, dst, idx, targetSchema) -> # Load the resume rinfo = ResumeFactory.loadOne src, @@ -132,7 +134,7 @@ _convertOne = (src, dst, idx, targetSchema, targetVer) -> # Save it to the destination format try - rez.saveAs dst[idx], targetFormat, targetVer + rez.saveAs dst[idx], targetFormat catch err if err.badVer return fluenterror: HMSTATUS.invalidSchemaVersion, quit: true, data: err.badVer