mirror of
				https://github.com/JuanCanham/HackMyResume.git
				synced 2025-11-03 22:37:27 +00:00 
			
		
		
		
	Rename Sheet/FreshSheet to JRSResume/FRESHResume.
This commit is contained in:
		@@ -1,5 +1,5 @@
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
FRESH character/resume sheet representation.
 | 
					Definition of the FRESHResume class.
 | 
				
			||||||
@license MIT. Copyright (c) 2015 James M. Devlin / FluentDesk
 | 
					@license MIT. Copyright (c) 2015 James M. Devlin / FluentDesk
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -15,18 +15,18 @@ FRESH character/resume sheet representation.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
  A FRESH-style resume in JSON or YAML.
 | 
					  A FRESH-style resume in JSON or YAML.
 | 
				
			||||||
  @class Sheet
 | 
					  @class FreshResume
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  function FreshSheet() {
 | 
					  function FreshResume() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Open and parse the specified JSON resume sheet. Merge the JSON object model
 | 
					  Open and parse the specified FRESH resume sheet. Merge the JSON object model
 | 
				
			||||||
  onto this Sheet instance with extend() and convert sheet dates to a safe &
 | 
					  onto this Sheet instance with extend() and convert sheet dates to a safe &
 | 
				
			||||||
  consistent format. Then sort each section by startDate descending.
 | 
					  consistent format. Then sort each section by startDate descending.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  FreshSheet.prototype.open = function( file, title ) {
 | 
					  FreshResume.prototype.open = function( file, title ) {
 | 
				
			||||||
    this.meta = { fileName: file };
 | 
					    this.meta = { fileName: file };
 | 
				
			||||||
    this.meta.raw = FS.readFileSync( file, 'utf8' );
 | 
					    this.meta.raw = FS.readFileSync( file, 'utf8' );
 | 
				
			||||||
    return this.parse( this.meta.raw, title );
 | 
					    return this.parse( this.meta.raw, title );
 | 
				
			||||||
@@ -35,7 +35,7 @@ FRESH character/resume sheet representation.
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Save the sheet to disk (for environments that have disk access).
 | 
					  Save the sheet to disk (for environments that have disk access).
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  FreshSheet.prototype.save = function( filename ) {
 | 
					  FreshResume.prototype.save = function( filename ) {
 | 
				
			||||||
    this.meta.fileName = filename || this.meta.fileName;
 | 
					    this.meta.fileName = filename || this.meta.fileName;
 | 
				
			||||||
    FS.writeFileSync( this.meta.fileName, this.stringify(), 'utf8' );
 | 
					    FS.writeFileSync( this.meta.fileName, this.stringify(), 'utf8' );
 | 
				
			||||||
    return this;
 | 
					    return this;
 | 
				
			||||||
@@ -45,11 +45,10 @@ FRESH character/resume sheet representation.
 | 
				
			|||||||
  Convert this object to a JSON string, sanitizing meta-properties along the
 | 
					  Convert this object to a JSON string, sanitizing meta-properties along the
 | 
				
			||||||
  way. Don't override .toString().
 | 
					  way. Don't override .toString().
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  FreshSheet.prototype.stringify = function() {
 | 
					  FreshResume.prototype.stringify = function() {
 | 
				
			||||||
    function replacer( key,value ) { // Exclude these keys from stringification
 | 
					    function replacer( key,value ) { // Exclude these keys from stringification
 | 
				
			||||||
      return _.some(['meta', 'warnings', 'computed', 'filt', 'ctrl', 'index',
 | 
					      return _.some(['meta', 'warnings', 'computed', 'filt', 'ctrl', 'index',
 | 
				
			||||||
        'safeStartDate', 'safeEndDate', 'safeDate', 'safeReleaseDate', 'result',
 | 
					        'safe', 'result', 'isModified', 'htmlPreview', 'display_progress_bar'],
 | 
				
			||||||
      'isModified', 'htmlPreview', 'display_progress_bar'],
 | 
					 | 
				
			||||||
        function( val ) { return key.trim() === val; }
 | 
					        function( val ) { return key.trim() === val; }
 | 
				
			||||||
      ) ? undefined : value;
 | 
					      ) ? undefined : value;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -61,7 +60,7 @@ FRESH character/resume sheet representation.
 | 
				
			|||||||
  onto this Sheet instance with extend() and convert sheet dates to a safe &
 | 
					  onto this Sheet instance with extend() and convert sheet dates to a safe &
 | 
				
			||||||
  consistent format. Then sort each section by startDate descending.
 | 
					  consistent format. Then sort each section by startDate descending.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  FreshSheet.prototype.parse = function( stringData, opts ) {
 | 
					  FreshResume.prototype.parse = function( stringData, opts ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Parse the incoming JSON representation
 | 
					    // Parse the incoming JSON representation
 | 
				
			||||||
    var rep = JSON.parse( stringData );
 | 
					    var rep = JSON.parse( stringData );
 | 
				
			||||||
@@ -91,7 +90,7 @@ FRESH character/resume sheet representation.
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Return a unique list of all keywords across all skills.
 | 
					  Return a unique list of all keywords across all skills.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  FreshSheet.prototype.keywords = function() {
 | 
					  FreshResume.prototype.keywords = function() {
 | 
				
			||||||
    var flatSkills = [];
 | 
					    var flatSkills = [];
 | 
				
			||||||
    this.skills && this.skills.length &&
 | 
					    this.skills && this.skills.length &&
 | 
				
			||||||
      (flatSkills = this.skills.map(function(sk) { return sk.name;  }));
 | 
					      (flatSkills = this.skills.map(function(sk) { return sk.name;  }));
 | 
				
			||||||
@@ -101,7 +100,7 @@ FRESH character/resume sheet representation.
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Update the sheet's raw data. TODO: remove/refactor
 | 
					  Update the sheet's raw data. TODO: remove/refactor
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  FreshSheet.prototype.updateData = function( str ) {
 | 
					  FreshResume.prototype.updateData = function( str ) {
 | 
				
			||||||
    this.clear( false );
 | 
					    this.clear( false );
 | 
				
			||||||
    this.parse( str )
 | 
					    this.parse( str )
 | 
				
			||||||
    return this;
 | 
					    return this;
 | 
				
			||||||
@@ -110,7 +109,7 @@ FRESH character/resume sheet representation.
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Reset the sheet to an empty state.
 | 
					  Reset the sheet to an empty state.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  FreshSheet.prototype.clear = function( clearMeta ) {
 | 
					  FreshResume.prototype.clear = function( clearMeta ) {
 | 
				
			||||||
    clearMeta = ((clearMeta === undefined) && true) || clearMeta;
 | 
					    clearMeta = ((clearMeta === undefined) && true) || clearMeta;
 | 
				
			||||||
    clearMeta && (delete this.meta);
 | 
					    clearMeta && (delete this.meta);
 | 
				
			||||||
    delete this.computed; // Don't use Object.keys() here
 | 
					    delete this.computed; // Don't use Object.keys() here
 | 
				
			||||||
@@ -127,15 +126,15 @@ FRESH character/resume sheet representation.
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Get the default (empty) sheet.
 | 
					  Get the default (empty) sheet.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  FreshSheet.default = function() {
 | 
					  FreshResume.default = function() {
 | 
				
			||||||
    return new FreshSheet().open( PATH.join( __dirname, 'empty.json'), 'Empty' );
 | 
					    return new FreshResume().open( PATH.join( __dirname, 'empty.json'), 'Empty' );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Add work experience to the sheet.
 | 
					  Add work experience to the sheet.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  FreshSheet.prototype.add = function( moniker ) {
 | 
					  FreshResume.prototype.add = function( moniker ) {
 | 
				
			||||||
    var defSheet = FreshSheet.default();
 | 
					    var defSheet = FreshResume.default();
 | 
				
			||||||
    var newObject = $.extend( true, {}, defSheet[ moniker ][0] );
 | 
					    var newObject = $.extend( true, {}, defSheet[ moniker ][0] );
 | 
				
			||||||
    this[ moniker ] = this[ moniker ] || [];
 | 
					    this[ moniker ] = this[ moniker ] || [];
 | 
				
			||||||
    this[ moniker ].push( newObject );
 | 
					    this[ moniker ].push( newObject );
 | 
				
			||||||
@@ -145,7 +144,7 @@ FRESH character/resume sheet representation.
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Determine if the sheet includes a specific social profile (eg, GitHub).
 | 
					  Determine if the sheet includes a specific social profile (eg, GitHub).
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  FreshSheet.prototype.hasProfile = function( socialNetwork ) {
 | 
					  FreshResume.prototype.hasProfile = function( socialNetwork ) {
 | 
				
			||||||
    socialNetwork = socialNetwork.trim().toLowerCase();
 | 
					    socialNetwork = socialNetwork.trim().toLowerCase();
 | 
				
			||||||
    return this.social && _.some( this.social, function(p) {
 | 
					    return this.social && _.some( this.social, function(p) {
 | 
				
			||||||
      return p.network.trim().toLowerCase() === socialNetwork;
 | 
					      return p.network.trim().toLowerCase() === socialNetwork;
 | 
				
			||||||
@@ -155,7 +154,7 @@ FRESH character/resume sheet representation.
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Determine if the sheet includes a specific skill.
 | 
					  Determine if the sheet includes a specific skill.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  FreshSheet.prototype.hasSkill = function( skill ) {
 | 
					  FreshResume.prototype.hasSkill = function( skill ) {
 | 
				
			||||||
    skill = skill.trim().toLowerCase();
 | 
					    skill = skill.trim().toLowerCase();
 | 
				
			||||||
    return this.skills && _.some( this.skills, function(sk) {
 | 
					    return this.skills && _.some( this.skills, function(sk) {
 | 
				
			||||||
      return sk.keywords && _.some( sk.keywords, function(kw) {
 | 
					      return sk.keywords && _.some( sk.keywords, function(kw) {
 | 
				
			||||||
@@ -167,7 +166,7 @@ FRESH character/resume sheet representation.
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Validate the sheet against the FRESH Resume schema.
 | 
					  Validate the sheet against the FRESH Resume schema.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  FreshSheet.prototype.isValid = function( info ) {
 | 
					  FreshResume.prototype.isValid = function( info ) {
 | 
				
			||||||
    var schemaObj = require('FRESCA');
 | 
					    var schemaObj = require('FRESCA');
 | 
				
			||||||
    //var schemaObj = JSON.parse( schema );
 | 
					    //var schemaObj = JSON.parse( schema );
 | 
				
			||||||
    var validator = require('is-my-json-valid')
 | 
					    var validator = require('is-my-json-valid')
 | 
				
			||||||
@@ -188,7 +187,7 @@ FRESH character/resume sheet representation.
 | 
				
			|||||||
  *latest end date of all jobs in the work history*. This last condition is for
 | 
					  *latest end date of all jobs in the work history*. This last condition is for
 | 
				
			||||||
  sheets that have overlapping jobs.
 | 
					  sheets that have overlapping jobs.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  FreshSheet.prototype.duration = function() {
 | 
					  FreshResume.prototype.duration = function() {
 | 
				
			||||||
    if( this.employment.history && this.employment.history.length ) {
 | 
					    if( this.employment.history && this.employment.history.length ) {
 | 
				
			||||||
      var careerStart = this.employment.history[ this.employment.history.length - 1].safe.start;
 | 
					      var careerStart = this.employment.history[ this.employment.history.length - 1].safe.start;
 | 
				
			||||||
      if ((typeof careerStart === 'string' || careerStart instanceof String) &&
 | 
					      if ((typeof careerStart === 'string' || careerStart instanceof String) &&
 | 
				
			||||||
@@ -206,7 +205,7 @@ FRESH character/resume sheet representation.
 | 
				
			|||||||
  Sort dated things on the sheet by start date descending. Assumes that dates
 | 
					  Sort dated things on the sheet by start date descending. Assumes that dates
 | 
				
			||||||
  on the sheet have been processed with _parseDates().
 | 
					  on the sheet have been processed with _parseDates().
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  FreshSheet.prototype.sort = function( ) {
 | 
					  FreshResume.prototype.sort = function( ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    this.employment.history && this.employment.history.sort( byDateDesc );
 | 
					    this.employment.history && this.employment.history.sort( byDateDesc );
 | 
				
			||||||
    this.education.history && this.education.history.sort( byDateDesc );
 | 
					    this.education.history && this.education.history.sort( byDateDesc );
 | 
				
			||||||
@@ -270,6 +269,6 @@ FRESH character/resume sheet representation.
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Export the Sheet function/ctor.
 | 
					  Export the Sheet function/ctor.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  module.exports = FreshSheet;
 | 
					  module.exports = FreshResume;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}());
 | 
					}());
 | 
				
			||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
Abstract character/resume sheet representation.
 | 
					Definition of the JRSResume class.
 | 
				
			||||||
@license MIT. Copyright (c) 2015 James M. Devlin / FluentDesk
 | 
					@license MIT. Copyright (c) 2015 James M. Devlin / FluentDesk
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -13,14 +13,14 @@ Abstract character/resume sheet representation.
 | 
				
			|||||||
    , moment = require('moment');
 | 
					    , moment = require('moment');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
  The Sheet class represent a specific JSON character sheet. When Sheet.open
 | 
					  The JRSResume class represent a specific JSON character sheet. When Sheet.open
 | 
				
			||||||
  is called, we merge the loaded JSON sheet properties onto the Sheet instance
 | 
					  is called, we merge the loaded JSON sheet properties onto the Sheet instance
 | 
				
			||||||
  via extend(), so a full-grown sheet object will have all of the methods here,
 | 
					  via extend(), so a full-grown sheet object will have all of the methods here,
 | 
				
			||||||
  plus a complement of JSON properties from the backing JSON file. That allows
 | 
					  plus a complement of JSON properties from the backing JSON file. That allows
 | 
				
			||||||
  us to treat Sheet objects interchangeably with the loaded JSON model.
 | 
					  us to treat Sheet objects interchangeably with the loaded JSON model.
 | 
				
			||||||
  @class Sheet
 | 
					  @class JRSResume
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  function Sheet() {
 | 
					  function JRSResume() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -29,7 +29,7 @@ Abstract character/resume sheet representation.
 | 
				
			|||||||
  onto this Sheet instance with extend() and convert sheet dates to a safe &
 | 
					  onto this Sheet instance with extend() and convert sheet dates to a safe &
 | 
				
			||||||
  consistent format. Then sort each section by startDate descending.
 | 
					  consistent format. Then sort each section by startDate descending.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  Sheet.prototype.open = function( file, title ) {
 | 
					  JRSResume.prototype.open = function( file, title ) {
 | 
				
			||||||
    this.meta = { fileName: file };
 | 
					    this.meta = { fileName: file };
 | 
				
			||||||
    this.meta.raw = FS.readFileSync( file, 'utf8' );
 | 
					    this.meta.raw = FS.readFileSync( file, 'utf8' );
 | 
				
			||||||
    return this.parse( this.meta.raw, title );
 | 
					    return this.parse( this.meta.raw, title );
 | 
				
			||||||
@@ -38,7 +38,7 @@ Abstract character/resume sheet representation.
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Save the sheet to disk (for environments that have disk access).
 | 
					  Save the sheet to disk (for environments that have disk access).
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  Sheet.prototype.save = function( filename ) {
 | 
					  JRSResume.prototype.save = function( filename ) {
 | 
				
			||||||
    this.meta.fileName = filename || this.meta.fileName;
 | 
					    this.meta.fileName = filename || this.meta.fileName;
 | 
				
			||||||
    FS.writeFileSync( this.meta.fileName, this.stringify(), 'utf8' );
 | 
					    FS.writeFileSync( this.meta.fileName, this.stringify(), 'utf8' );
 | 
				
			||||||
    return this;
 | 
					    return this;
 | 
				
			||||||
@@ -48,7 +48,7 @@ Abstract character/resume sheet representation.
 | 
				
			|||||||
  Convert this object to a JSON string, sanitizing meta-properties along the
 | 
					  Convert this object to a JSON string, sanitizing meta-properties along the
 | 
				
			||||||
  way. Don't override .toString().
 | 
					  way. Don't override .toString().
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  Sheet.prototype.stringify = function() {
 | 
					  JRSResume.prototype.stringify = function() {
 | 
				
			||||||
    function replacer( key,value ) { // Exclude these keys from stringification
 | 
					    function replacer( key,value ) { // Exclude these keys from stringification
 | 
				
			||||||
      return _.some(['meta', 'warnings', 'computed', 'filt', 'ctrl', 'index',
 | 
					      return _.some(['meta', 'warnings', 'computed', 'filt', 'ctrl', 'index',
 | 
				
			||||||
        'safeStartDate', 'safeEndDate', 'safeDate', 'safeReleaseDate', 'result',
 | 
					        'safeStartDate', 'safeEndDate', 'safeDate', 'safeReleaseDate', 'result',
 | 
				
			||||||
@@ -64,7 +64,7 @@ Abstract character/resume sheet representation.
 | 
				
			|||||||
  onto this Sheet instance with extend() and convert sheet dates to a safe &
 | 
					  onto this Sheet instance with extend() and convert sheet dates to a safe &
 | 
				
			||||||
  consistent format. Then sort each section by startDate descending.
 | 
					  consistent format. Then sort each section by startDate descending.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  Sheet.prototype.parse = function( stringData, opts ) {
 | 
					  JRSResume.prototype.parse = function( stringData, opts ) {
 | 
				
			||||||
    opts = opts || { };
 | 
					    opts = opts || { };
 | 
				
			||||||
    var rep = JSON.parse( stringData );
 | 
					    var rep = JSON.parse( stringData );
 | 
				
			||||||
    extend( true, this, rep );
 | 
					    extend( true, this, rep );
 | 
				
			||||||
@@ -86,7 +86,7 @@ Abstract character/resume sheet representation.
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Return a unique list of all keywords across all skills.
 | 
					  Return a unique list of all keywords across all skills.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  Sheet.prototype.keywords = function() {
 | 
					  JRSResume.prototype.keywords = function() {
 | 
				
			||||||
    var flatSkills = [];
 | 
					    var flatSkills = [];
 | 
				
			||||||
    if( this.skills && this.skills.length ) {
 | 
					    if( this.skills && this.skills.length ) {
 | 
				
			||||||
      this.skills.forEach( function( s ) {
 | 
					      this.skills.forEach( function( s ) {
 | 
				
			||||||
@@ -99,7 +99,7 @@ Abstract character/resume sheet representation.
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Update the sheet's raw data. TODO: remove/refactor
 | 
					  Update the sheet's raw data. TODO: remove/refactor
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  Sheet.prototype.updateData = function( str ) {
 | 
					  JRSResume.prototype.updateData = function( str ) {
 | 
				
			||||||
    this.clear( false );
 | 
					    this.clear( false );
 | 
				
			||||||
    this.parse( str )
 | 
					    this.parse( str )
 | 
				
			||||||
    return this;
 | 
					    return this;
 | 
				
			||||||
@@ -108,7 +108,7 @@ Abstract character/resume sheet representation.
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Reset the sheet to an empty state.
 | 
					  Reset the sheet to an empty state.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  Sheet.prototype.clear = function( clearMeta ) {
 | 
					  JRSResume.prototype.clear = function( clearMeta ) {
 | 
				
			||||||
    clearMeta = ((clearMeta === undefined) && true) || clearMeta;
 | 
					    clearMeta = ((clearMeta === undefined) && true) || clearMeta;
 | 
				
			||||||
    clearMeta && (delete this.meta);
 | 
					    clearMeta && (delete this.meta);
 | 
				
			||||||
    delete this.computed; // Don't use Object.keys() here
 | 
					    delete this.computed; // Don't use Object.keys() here
 | 
				
			||||||
@@ -125,15 +125,15 @@ Abstract character/resume sheet representation.
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Get the default (empty) sheet.
 | 
					  Get the default (empty) sheet.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  Sheet.default = function() {
 | 
					  JRSResume.default = function() {
 | 
				
			||||||
    return new Sheet().open( PATH.join( __dirname, 'empty.json'), 'Empty' );
 | 
					    return new JRSResume().open( PATH.join( __dirname, 'empty.json'), 'Empty' );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Add work experience to the sheet.
 | 
					  Add work experience to the sheet.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  Sheet.prototype.add = function( moniker ) {
 | 
					  JRSResume.prototype.add = function( moniker ) {
 | 
				
			||||||
    var defSheet = Sheet.default();
 | 
					    var defSheet = JRSResume.default();
 | 
				
			||||||
    var newObject = $.extend( true, {}, defSheet[ moniker ][0] );
 | 
					    var newObject = $.extend( true, {}, defSheet[ moniker ][0] );
 | 
				
			||||||
    this[ moniker ] = this[ moniker ] || [];
 | 
					    this[ moniker ] = this[ moniker ] || [];
 | 
				
			||||||
    this[ moniker ].push( newObject );
 | 
					    this[ moniker ].push( newObject );
 | 
				
			||||||
@@ -143,7 +143,7 @@ Abstract character/resume sheet representation.
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Determine if the sheet includes a specific social profile (eg, GitHub).
 | 
					  Determine if the sheet includes a specific social profile (eg, GitHub).
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  Sheet.prototype.hasProfile = function( socialNetwork ) {
 | 
					  JRSResume.prototype.hasProfile = function( socialNetwork ) {
 | 
				
			||||||
    socialNetwork = socialNetwork.trim().toLowerCase();
 | 
					    socialNetwork = socialNetwork.trim().toLowerCase();
 | 
				
			||||||
    return this.basics.profiles && _.some( this.basics.profiles, function(p) {
 | 
					    return this.basics.profiles && _.some( this.basics.profiles, function(p) {
 | 
				
			||||||
      return p.network.trim().toLowerCase() === socialNetwork;
 | 
					      return p.network.trim().toLowerCase() === socialNetwork;
 | 
				
			||||||
@@ -153,7 +153,7 @@ Abstract character/resume sheet representation.
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Determine if the sheet includes a specific skill.
 | 
					  Determine if the sheet includes a specific skill.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  Sheet.prototype.hasSkill = function( skill ) {
 | 
					  JRSResume.prototype.hasSkill = function( skill ) {
 | 
				
			||||||
    skill = skill.trim().toLowerCase();
 | 
					    skill = skill.trim().toLowerCase();
 | 
				
			||||||
    return this.skills && _.some( this.skills, function(sk) {
 | 
					    return this.skills && _.some( this.skills, function(sk) {
 | 
				
			||||||
      return sk.keywords && _.some( sk.keywords, function(kw) {
 | 
					      return sk.keywords && _.some( sk.keywords, function(kw) {
 | 
				
			||||||
@@ -165,7 +165,7 @@ Abstract character/resume sheet representation.
 | 
				
			|||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Validate the sheet against the JSON Resume schema.
 | 
					  Validate the sheet against the JSON Resume schema.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  Sheet.prototype.isValid = function( ) { // TODO: ↓ fix this path ↓
 | 
					  JRSResume.prototype.isValid = function( ) { // TODO: ↓ fix this path ↓
 | 
				
			||||||
    var schema = FS.readFileSync( PATH.join( __dirname, 'resume.json' ), 'utf8' );
 | 
					    var schema = FS.readFileSync( PATH.join( __dirname, 'resume.json' ), 'utf8' );
 | 
				
			||||||
    var schemaObj = JSON.parse( schema );
 | 
					    var schemaObj = JSON.parse( schema );
 | 
				
			||||||
    var validator = require('is-my-json-valid')
 | 
					    var validator = require('is-my-json-valid')
 | 
				
			||||||
@@ -181,7 +181,7 @@ Abstract character/resume sheet representation.
 | 
				
			|||||||
  *latest end date of all jobs in the work history*. This last condition is for
 | 
					  *latest end date of all jobs in the work history*. This last condition is for
 | 
				
			||||||
  sheets that have overlapping jobs.
 | 
					  sheets that have overlapping jobs.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  Sheet.prototype.duration = function() {
 | 
					  JRSResume.prototype.duration = function() {
 | 
				
			||||||
    if( this.work && this.work.length ) {
 | 
					    if( this.work && this.work.length ) {
 | 
				
			||||||
      var careerStart = this.work[ this.work.length - 1].safeStartDate;
 | 
					      var careerStart = this.work[ this.work.length - 1].safeStartDate;
 | 
				
			||||||
      if ((typeof careerStart === 'string' || careerStart instanceof String) &&
 | 
					      if ((typeof careerStart === 'string' || careerStart instanceof String) &&
 | 
				
			||||||
@@ -199,7 +199,7 @@ Abstract character/resume sheet representation.
 | 
				
			|||||||
  Sort dated things on the sheet by start date descending. Assumes that dates
 | 
					  Sort dated things on the sheet by start date descending. Assumes that dates
 | 
				
			||||||
  on the sheet have been processed with _parseDates().
 | 
					  on the sheet have been processed with _parseDates().
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  Sheet.prototype.sort = function( ) {
 | 
					  JRSResume.prototype.sort = function( ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    this.work && this.work.sort( byDateDesc );
 | 
					    this.work && this.work.sort( byDateDesc );
 | 
				
			||||||
    this.education && this.education.sort( byDateDesc );
 | 
					    this.education && this.education.sort( byDateDesc );
 | 
				
			||||||
@@ -253,8 +253,8 @@ Abstract character/resume sheet representation.
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
  Export the Sheet function/ctor.
 | 
					  Export the JRSResume function/ctor.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  module.exports = Sheet;
 | 
					  module.exports = JRSResume;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}());
 | 
					}());
 | 
				
			||||||
@@ -37,7 +37,7 @@ module.exports = function () {
 | 
				
			|||||||
    if(!src || !src.length) { throw { fluenterror: 3 }; }
 | 
					    if(!src || !src.length) { throw { fluenterror: 3 }; }
 | 
				
			||||||
    var sheets = src.map( function( res ) {
 | 
					    var sheets = src.map( function( res ) {
 | 
				
			||||||
      _log( 'Reading JSON resume: ' + res );
 | 
					      _log( 'Reading JSON resume: ' + res );
 | 
				
			||||||
      return (new FLUENT.Sheet()).open( res );
 | 
					      return (new FLUENT.FRESHResume()).open( res );
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Merge input resumes...
 | 
					    // Merge input resumes...
 | 
				
			||||||
@@ -139,7 +139,7 @@ module.exports = function () {
 | 
				
			|||||||
    if( !src || !src.length ) { throw { fluenterror: 3 }; }
 | 
					    if( !src || !src.length ) { throw { fluenterror: 3 }; }
 | 
				
			||||||
    var isValid = true;
 | 
					    var isValid = true;
 | 
				
			||||||
    var sheets = src.map( function( res ) {
 | 
					    var sheets = src.map( function( res ) {
 | 
				
			||||||
      var sheet = (new FLUENT.Sheet()).open( res );
 | 
					      var sheet = (new FLUENT.FRESHResume()).open( res );
 | 
				
			||||||
      var valid = sheet.isValid();
 | 
					      var valid = sheet.isValid();
 | 
				
			||||||
      _log( 'Validating JSON resume: ' + res +
 | 
					      _log( 'Validating JSON resume: ' + res +
 | 
				
			||||||
        (valid ? ' (VALID)' : ' (INVALID)'));
 | 
					        (valid ? ' (VALID)' : ' (INVALID)'));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,9 @@ External API surface for FluentCV:CLI.
 | 
				
			|||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = {
 | 
					module.exports = {
 | 
				
			||||||
  Sheet: require('./core/fresh-sheet'),
 | 
					  Sheet: require('./core/fresh-resume'),
 | 
				
			||||||
 | 
					  FRESHResume: require('./core/fresh-resume'),
 | 
				
			||||||
 | 
					  JRSResume: require('./core/jrs-resume'),
 | 
				
			||||||
  Theme: require('./core/theme'),
 | 
					  Theme: require('./core/theme'),
 | 
				
			||||||
  FluentDate: require('./core/fluent-date'),
 | 
					  FluentDate: require('./core/fluent-date'),
 | 
				
			||||||
  HtmlGenerator: require('./gen/html-generator'),
 | 
					  HtmlGenerator: require('./gen/html-generator'),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ var chai = require('chai')
 | 
				
			|||||||
  , should = chai.should()
 | 
					  , should = chai.should()
 | 
				
			||||||
  , path = require('path')
 | 
					  , path = require('path')
 | 
				
			||||||
  , _ = require('underscore')
 | 
					  , _ = require('underscore')
 | 
				
			||||||
	, FreshSheet = require('../src/core/fresh-sheet')
 | 
						, FRESHResume = require('../src/core/fresh-resume')
 | 
				
			||||||
  , validator = require('is-my-json-valid');
 | 
					  , validator = require('is-my-json-valid');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
chai.config.includeStack = false;
 | 
					chai.config.includeStack = false;
 | 
				
			||||||
@@ -15,7 +15,7 @@ describe('fullstack.json (FRESH)', function () {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	  it('should open without throwing an exception', function () {
 | 
						  it('should open without throwing an exception', function () {
 | 
				
			||||||
      function tryOpen() {
 | 
					      function tryOpen() {
 | 
				
			||||||
        _sheet = new FreshSheet().open( 'tests/exemplars/fresh-exemplar.json' );
 | 
					        _sheet = new FRESHResume().open( 'tests/exemplars/fresh-exemplar.json' );
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      tryOpen.should.not.Throw();
 | 
					      tryOpen.should.not.Throw();
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
@@ -45,7 +45,7 @@ describe('fullstack.json (FRESH)', function () {
 | 
				
			|||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    it('should not be modified after saving', function() {
 | 
					    it('should not be modified after saving', function() {
 | 
				
			||||||
      var savedSheet = new FreshSheet().open( 'tests/sandbox/fullstack.json' );
 | 
					      var savedSheet = new FRESHResume().open( 'tests/sandbox/fullstack.json' );
 | 
				
			||||||
      _sheet.stringify().should.equal( savedSheet.stringify() )
 | 
					      _sheet.stringify().should.equal( savedSheet.stringify() )
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ var chai = require('chai')
 | 
				
			|||||||
  , should = chai.should()
 | 
					  , should = chai.should()
 | 
				
			||||||
  , path = require('path')
 | 
					  , path = require('path')
 | 
				
			||||||
  , _ = require('underscore')
 | 
					  , _ = require('underscore')
 | 
				
			||||||
	, Sheet = require('../src/core/sheet')
 | 
						, JRSResume = require('../src/core/jrs-resume')
 | 
				
			||||||
  , validator = require('is-my-json-valid');
 | 
					  , validator = require('is-my-json-valid');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
chai.config.includeStack = false;
 | 
					chai.config.includeStack = false;
 | 
				
			||||||
@@ -15,7 +15,7 @@ describe('fullstack.json (JRS)', function () {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	  it('should open without throwing an exception', function () {
 | 
						  it('should open without throwing an exception', function () {
 | 
				
			||||||
      function tryOpen() {
 | 
					      function tryOpen() {
 | 
				
			||||||
        _sheet = new Sheet().open( 'node_modules/resample/fullstack/in/resume.json' );
 | 
					        _sheet = new JRSResume().open( 'node_modules/resample/fullstack/in/resume.json' );
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      tryOpen.should.not.Throw();
 | 
					      tryOpen.should.not.Throw();
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
@@ -44,7 +44,7 @@ describe('fullstack.json (JRS)', function () {
 | 
				
			|||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    it('should not be modified after saving', function() {
 | 
					    it('should not be modified after saving', function() {
 | 
				
			||||||
      var savedSheet = new Sheet().open( 'tests/sandbox/fullstack.json' );
 | 
					      var savedSheet = new JRSResume().open( 'tests/sandbox/fullstack.json' );
 | 
				
			||||||
      _sheet.stringify().should.equal( savedSheet.stringify() )
 | 
					      _sheet.stringify().should.equal( savedSheet.stringify() )
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user