1
0
mirror of https://github.com/JuanCanham/HackMyResume.git synced 2024-09-28 20:19:12 +01:00

Code cleanup.

Use _.reduceRight in lieue of Array.prototype.reduce to ease logging
during resume merge and clean up code, comments, and whitespace
throughout.
This commit is contained in:
devlinjd 2015-10-07 03:53:38 -04:00
parent 7f930283c6
commit 11f76d920f
2 changed files with 24 additions and 38 deletions

View File

@ -10,58 +10,50 @@ module.exports = function () {
, extend = require( './utils/extend' ) , extend = require( './utils/extend' )
, unused = require('./utils/string') , unused = require('./utils/string')
, FLUENT = require('fluentlib') , FLUENT = require('fluentlib')
, _ = require('underscore')
, rez, _log; , rez, _log;
/** /**
Core workhorse method for FluentCMD. Given a source JSON resume, a destination Given a source JSON resume, a destination resume path, and a theme file,
resume path, and a theme file, generate 0..N resumes in the desired formats. generate 0..N resumes in the desired formats.
@param src Path to the source JSON resume file: "rez/resume.json". @param src Path to the source JSON resume file: "rez/resume.json".
@param dst An array of paths to the destination resume file(s): "rez/resume.all". @param dst An array of paths to the target resume file(s).
@param theme Friendly name of the resume theme. Defaults to "default". @param theme Friendly name of the resume theme. Defaults to "informatic".
@param logger Optional logging override. @param logger Optional logging override.
*/ */
function gen( src, dst, theme, logger ) { function gen( src, dst, theme, logger ) {
_log = logger || console.log; _log = logger || console.log;
_opts.theme = theme; _opts.theme = theme;
dst = (dst && dst.length && dst) || ['resume.all']; var msg = '';
// Assemble output resume targets // Load input resumes...
var targets = [];
dst.forEach( function(t) {
t = path.resolve(t);
var dot = t.lastIndexOf('.');
var format = ( dot === -1 ) ? 'all' : t.substring( dot + 1 );
var temp = ( format === 'all' ) ?
_fmts.map( function( fmt ) { return t.replace( /all$/g, fmt.name ); }) :
( format === 'doc' ? [ 'doc' ] : [ t ] ); // interim code
targets.push.apply(targets, temp);
});
// Assemble input resumes
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.Sheet()).open( res );
}); });
// Merge input resumes // Merge input resumes...
var msg = ''; rez = _.reduceRight( sheets, function( a, b, idx ) {
sheets.length > 1 && (msg += ('Merging ' + sheets[ sheets.length - 1].meta.fileName)); msg += ((idx == sheets.length - 2) ? 'Merging ' + a.meta.fileName : '')
rez = sheets.reduce( function( acc, elem ) { + ' onto ' + b.meta.fileName;
msg += (' onto ' + acc.meta.fileName); return extend( true, b, a );
return extend( true, acc, elem );
}); });
sheets.length > 1 && _log( msg ); msg && _log(msg);
// Expand output resumes... (can't use map() here)
var targets = [];
( (dst && dst.length && dst) || ['resume.all'] ).forEach( function(t) {
var to = path.resolve(t), pa = path.parse(to), fmat = pa.ext || '.all';
targets.push.apply(targets, fmat === '.all' ?
_fmts.map(function(z){ return to.replace(/all$/g,z.name); }) : [to]);
});
// Run the transformation! // Run the transformation!
var finished = targets.map( single ); var finished = targets.map( single );
return { // Don't send the client back empty-handed
sheet: rez,//.rep, return { sheet: rez, targets: targets, processed: finished };
targets: targets,
processed: finished
};
} }
/** /**
@ -71,7 +63,6 @@ module.exports = function () {
*/ */
function single( f ) { function single( f ) {
try { try {
// Get the output file type (pdf, html, txt, etc) // Get the output file type (pdf, html, txt, etc)
var fType = path.extname( f ).trim().toLowerCase().substr(1); var fType = path.extname( f ).trim().toLowerCase().substr(1);
var fName = path.basename( f, '.' + fType ); var fName = path.basename( f, '.' + fType );
@ -114,11 +105,11 @@ module.exports = function () {
Default options. Default options.
*/ */
var _opts = { var _opts = {
theme: 'default', theme: 'informatic',
} }
/** /**
Module public interface. Used by FCV Desktop. Internal module interface. Used by FCV Desktop and HMR.
*/ */
return { return {
generate: gen, generate: gen,

View File

@ -9,22 +9,17 @@ var ARGS = require( 'minimist' )
, FCMD = require( './fluentcmd'); , FCMD = require( './fluentcmd');
try { try {
console.log( '*** FluentCMD v0.1.0 ***' ); console.log( '*** FluentCMD v0.1.0 ***' );
if( process.argv.length <= 2 ) { throw 'Please specify a JSON resume file.'; } if( process.argv.length <= 2 ) { throw 'Please specify a JSON resume file.'; }
var args = ARGS( process.argv.slice(2) ); var args = ARGS( process.argv.slice(2) );
var src = args._.filter( function( a ) { return a.endsWith('.json'); }); var src = args._.filter( function( a ) { return a.endsWith('.json'); });
var dst = args._.filter( function( a ) { return !a.endsWith('.json'); }); var dst = args._.filter( function( a ) { return !a.endsWith('.json'); });
FCMD.generate( src, dst, args.t || 'informatic' ); FCMD.generate( src, dst, args.t || 'informatic' );
process.platform !== 'win32' && console.log('\n'); process.platform !== 'win32' && console.log('\n');
} }
catch( ex ) { catch( ex ) {
var msg = ex.toString(); var msg = ex.toString();
var idx = msg.indexOf('Error: '); var idx = msg.indexOf('Error: ');
var trimmed = idx === -1 ? msg : msg.substring( idx + 7 ); var trimmed = idx === -1 ? msg : msg.substring( idx + 7 );
console.log( 'ERROR: ' + trimmed.toString() ); console.log( 'ERROR: ' + trimmed.toString() );
} }