mirror of
				https://github.com/JuanCanham/HackMyResume.git
				synced 2025-10-31 05:07:26 +00:00 
			
		
		
		
	feat: support JSON Resume edge schema
This commit is contained in:
		
							
								
								
									
										18
									
								
								dist/core/fresh-resume.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								dist/core/fresh-resume.js
									
									
									
									
										vendored
									
									
								
							| @@ -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 { | ||||
|   | ||||
							
								
								
									
										14
									
								
								dist/verbs/convert.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								dist/verbs/convert.js
									
									
									
									
										vendored
									
									
								
							| @@ -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) { | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user