hackmyresume
Advanced tools
Comparing version 1.0.1 to 1.1.0
{ | ||
"name": "hackmyresume", | ||
"version": "1.0.1", | ||
"version": "1.1.0", | ||
"description": "Generate polished résumés and CVs in HTML, Markdown, LaTeX, MS Word, PDF, plain text, JSON, XML, YAML, smoke signal, and carrier pigeon.", | ||
@@ -5,0 +5,0 @@ "repository": { |
@@ -34,3 +34,3 @@ /** | ||
// Register necessary helpers. | ||
registerHelpers(); | ||
registerHelpers( theme ); | ||
@@ -37,0 +37,0 @@ // Compile and run the Handlebars template. |
@@ -11,6 +11,4 @@ /** | ||
var HANDLEBARS = require('handlebars') | ||
, MD = require('marked') | ||
, H2W = require('../utils/html-to-wpml') | ||
, moment = require('moment') | ||
, _ = require('underscore'); | ||
, _ = require('underscore') | ||
, helpers = require('./generic-helpers'); | ||
@@ -21,106 +19,9 @@ /** | ||
*/ | ||
module.exports = function() { | ||
module.exports = function( theme ) { | ||
// Set up a date formatting helper so we can do: | ||
// {{formatDate val 'YYYY-MM'}} | ||
HANDLEBARS.registerHelper("formatDate", function(datetime, format) { | ||
return moment ? moment( datetime ).format( format ) : datetime; | ||
}); | ||
helpers.theme = theme; | ||
HANDLEBARS.registerHelper( helpers ); | ||
// Set up a Markdown-to-WordProcessingML helper so we can do: | ||
// {{wmpl val [true|false]}} | ||
HANDLEBARS.registerHelper("wpml", function( txt, inline ) { | ||
if(!txt) return ''; | ||
inline = (inline && !inline.hash) || false; | ||
txt = inline ? | ||
MD(txt.trim()).replace(/^\s*<p>|<\/p>\s*$/gi, '') : | ||
MD(txt.trim()); | ||
txt = H2W( txt.trim() ); | ||
return txt; | ||
}); | ||
// Set up a last-word helper so we can do: | ||
// {{lastWord val [true|false]}} | ||
HANDLEBARS.registerHelper("link", function( text, url ) { | ||
return url && url.trim() ? | ||
('<a href="' + url + '">' + text + '</a>') : text; | ||
}); | ||
// Set up a last-word helper so we can do: | ||
// {{lastWord val [true|false]}} | ||
HANDLEBARS.registerHelper("lastWord", function( txt ) { | ||
return txt && txt.trim() ? _.last( txt.split(' ') ) : ''; | ||
}); | ||
// Set up a skill colorizing helper: | ||
// {{skillColor val}} | ||
HANDLEBARS.registerHelper("skillColor", function( lvl ) { | ||
switch(lvl) { | ||
case 'beginner': return '#5CB85C'; | ||
case 'intermediate': return '#F1C40F'; | ||
case 'advanced': return '#428BCA'; | ||
case 'master': return '#C00000'; | ||
} | ||
}); | ||
// Set up a skill colorizing helper: | ||
// {{skillColor val}} | ||
HANDLEBARS.registerHelper("skillHeight", function( lvl ) { | ||
switch(lvl) { | ||
case 'beginner': return '30'; | ||
case 'intermediate': return '16'; | ||
case 'advanced': return '8'; | ||
case 'master': return '0'; | ||
} | ||
}); | ||
// Set up a Markdown-to-WordProcessingML helper so we can do: | ||
// {{initialWords val [true|false]}} | ||
HANDLEBARS.registerHelper("initialWords", function( txt ) { | ||
return txt && txt.trim() ? _.initial( txt.split(' ') ).join(' ') : ''; | ||
}); | ||
// Set up a URL-trimming helper to drop the protocol so we can do: | ||
// {{trimURL url}} | ||
HANDLEBARS.registerHelper("trimURL", function( url ) { | ||
return url && url.trim() ? url.trim().replace(/^https?:\/\//i, '') : ''; | ||
}); | ||
// Set up a URL-trimming helper to drop the protocol so we can do: | ||
// {{trimURL url}} | ||
HANDLEBARS.registerHelper("toLower", function( txt ) { | ||
return txt && txt.trim() ? txt.toLowerCase() : ''; | ||
}); | ||
// Set up a Markdown-to-WordProcessingML helper so we can do: | ||
// {{either A B}} | ||
HANDLEBARS.registerHelper("either", function( lhs, rhs, options ) { | ||
if (lhs || rhs) return options.fn(this); | ||
}); | ||
// Set up a generic conditional helper so we can do: | ||
// {{compare val otherVal operator="<"}} | ||
// http://doginthehat.com.au/2012/02/comparison-block-helper-for-handlebars-templates/ | ||
HANDLEBARS.registerHelper('compare', function(lvalue, rvalue, options) { | ||
if (arguments.length < 3) | ||
throw new Error("Handlerbars Helper 'compare' needs 2 parameters"); | ||
var operator = options.hash.operator || "=="; | ||
var operators = { | ||
'==': function(l,r) { return l == r; }, | ||
'===': function(l,r) { return l === r; }, | ||
'!=': function(l,r) { return l != r; }, | ||
'<': function(l,r) { return l < r; }, | ||
'>': function(l,r) { return l > r; }, | ||
'<=': function(l,r) { return l <= r; }, | ||
'>=': function(l,r) { return l >= r; }, | ||
'typeof': function(l,r) { return typeof l == r; } | ||
}; | ||
if (!operators[operator]) | ||
throw new Error("Handlerbars Helper 'compare' doesn't know the operator "+operator); | ||
var result = operators[operator](lvalue,rvalue); | ||
return result ? options.fn(this) : options.inverse(this); | ||
}); | ||
}; | ||
}()); |
@@ -50,3 +50,2 @@ #! /usr/bin/env node | ||
// Get the action to be performed | ||
@@ -60,3 +59,3 @@ var params = a._.map( function(p){ return p.toLowerCase().trim(); }); | ||
// Get source and dest params | ||
// Find the TO keyword, if any | ||
var splitAt = _.indexOf( params, 'to' ); | ||
@@ -71,4 +70,6 @@ if( splitAt === a._.length - 1 ) { | ||
// Massage inputs and outputs | ||
var src = a._.slice(1, splitAt === -1 ? undefined : splitAt ); | ||
var dst = splitAt === -1 ? [] : a._.slice( splitAt + 1 ); | ||
( splitAt === -1 ) && dst.push( src.pop() ); // Allow omitting TO keyword | ||
var parms = [ src, dst, opts, logMsg ]; | ||
@@ -75,0 +76,0 @@ |
@@ -20,1 +20,5 @@ /** | ||
}; | ||
String.is = function( val ) { | ||
return typeof val === 'string' || val instanceof String; | ||
}; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
408226
48
3830