mirror of
https://github.com/JuanCanham/HackMyResume.git
synced 2025-05-02 20:37:08 +01:00
Finish HackMyCore reshaping.
Reintroduce HackMyCore, dropping the interim submodule, and reorganize and improve tests.
This commit is contained in:
100
dist/renderers/handlebars-generator.js
vendored
Normal file
100
dist/renderers/handlebars-generator.js
vendored
Normal file
@ -0,0 +1,100 @@
|
||||
|
||||
/**
|
||||
Definition of the HandlebarsGenerator class.
|
||||
@license MIT. See LICENSE.md for details.
|
||||
@module renderers/handlebars-generator
|
||||
*/
|
||||
|
||||
(function() {
|
||||
var FS, HANDLEBARS, HMSTATUS, HandlebarsGenerator, PATH, READFILES, SLASH, _, parsePath, registerHelpers, registerPartials;
|
||||
|
||||
_ = require('underscore');
|
||||
|
||||
HANDLEBARS = require('handlebars');
|
||||
|
||||
FS = require('fs');
|
||||
|
||||
registerHelpers = require('../helpers/handlebars-helpers');
|
||||
|
||||
PATH = require('path');
|
||||
|
||||
parsePath = require('parse-filepath');
|
||||
|
||||
READFILES = require('recursive-readdir-sync');
|
||||
|
||||
HMSTATUS = require('../core/status-codes');
|
||||
|
||||
SLASH = require('slash');
|
||||
|
||||
|
||||
/**
|
||||
Perform template-based resume generation using Handlebars.js.
|
||||
@class HandlebarsGenerator
|
||||
*/
|
||||
|
||||
HandlebarsGenerator = module.exports = {
|
||||
generateSimple: function(data, tpl) {
|
||||
var template;
|
||||
try {
|
||||
template = HANDLEBARS.compile(tpl, {
|
||||
strict: false,
|
||||
assumeObjects: false
|
||||
});
|
||||
return template(data);
|
||||
} catch (_error) {
|
||||
throw {
|
||||
fluenterror: template ? HMSTATUS.invokeTemplate : HMSTATUS.compileTemplate,
|
||||
inner: _error
|
||||
};
|
||||
}
|
||||
},
|
||||
generate: function(json, jst, format, curFmt, opts, theme) {
|
||||
var ctx, encData;
|
||||
registerPartials(format, theme);
|
||||
registerHelpers(theme, opts);
|
||||
encData = json;
|
||||
if (format === 'html' || format === 'pdf') {
|
||||
encData = json.markdownify();
|
||||
}
|
||||
if (format === 'doc') {
|
||||
encData = json.xmlify();
|
||||
}
|
||||
ctx = {
|
||||
r: encData,
|
||||
RAW: json,
|
||||
filt: opts.filters,
|
||||
format: format,
|
||||
opts: opts,
|
||||
engine: this,
|
||||
results: curFmt.files,
|
||||
headFragment: opts.headFragment || ''
|
||||
};
|
||||
return this.generateSimple(ctx, jst);
|
||||
}
|
||||
};
|
||||
|
||||
registerPartials = function(format, theme) {
|
||||
var partialsFolder;
|
||||
if (_.contains(['html', 'doc', 'md', 'txt', 'pdf'], format)) {
|
||||
partialsFolder = PATH.join(parsePath(require.resolve('fresh-themes')).dirname, '/partials/', format === 'pdf' ? 'html' : format);
|
||||
_.each(READFILES(partialsFolder, function(error) {
|
||||
return {};
|
||||
}), function(el) {
|
||||
var compiledTemplate, name, pathInfo, tplData;
|
||||
pathInfo = parsePath(el);
|
||||
name = SLASH(PATH.relative(partialsFolder, el).replace(/\.(?:html|xml|hbs|md|txt)$/i, ''));
|
||||
tplData = FS.readFileSync(el, 'utf8');
|
||||
compiledTemplate = HANDLEBARS.compile(tplData);
|
||||
HANDLEBARS.registerPartial(name, compiledTemplate);
|
||||
return theme.partialsInitialized = true;
|
||||
});
|
||||
}
|
||||
return _.each(theme.partials, function(el) {
|
||||
var compiledTemplate, tplData;
|
||||
tplData = FS.readFileSync(el.path, 'utf8');
|
||||
compiledTemplate = HANDLEBARS.compile(tplData);
|
||||
return HANDLEBARS.registerPartial(el.name, compiledTemplate);
|
||||
});
|
||||
};
|
||||
|
||||
}).call(this);
|
58
dist/renderers/jrs-generator.js
vendored
Normal file
58
dist/renderers/jrs-generator.js
vendored
Normal file
@ -0,0 +1,58 @@
|
||||
|
||||
/**
|
||||
Definition of the JRSGenerator class.
|
||||
@license MIT. See LICENSE.md for details.
|
||||
@module renderers/jrs-generator
|
||||
*/
|
||||
|
||||
(function() {
|
||||
var FS, HANDLEBARS, JRSGenerator, MD, MDIN, PATH, READFILES, SLASH, _, parsePath, registerHelpers;
|
||||
|
||||
_ = require('underscore');
|
||||
|
||||
HANDLEBARS = require('handlebars');
|
||||
|
||||
FS = require('fs');
|
||||
|
||||
registerHelpers = require('../helpers/handlebars-helpers');
|
||||
|
||||
PATH = require('path');
|
||||
|
||||
parsePath = require('parse-filepath');
|
||||
|
||||
READFILES = require('recursive-readdir-sync');
|
||||
|
||||
SLASH = require('slash');
|
||||
|
||||
MD = require('marked');
|
||||
|
||||
|
||||
/**
|
||||
Perform template-based resume generation for JSON Resume themes.
|
||||
@class JRSGenerator
|
||||
*/
|
||||
|
||||
JRSGenerator = module.exports = {
|
||||
generate: function(json, jst, format, cssInfo, opts, theme) {
|
||||
var org, rezHtml, turnoff;
|
||||
turnoff = ['log', 'error', 'dir'];
|
||||
org = turnoff.map(c)(function() {
|
||||
var ret;
|
||||
ret = console[c];
|
||||
return console[c] = function() {};
|
||||
});
|
||||
rezHtml = theme.render(json.harden());
|
||||
turnoff.forEach(function(c, idx) {
|
||||
return console[c] = org[idx];
|
||||
});
|
||||
return rezHtml = rezHtml.replace(/@@@@~.*?~@@@@/gm, function(val) {
|
||||
return MDIN(val.replace(/~@@@@/gm, '').replace(/@@@@~/gm, ''));
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
MDIN = function(txt) {
|
||||
return MD(txt || '').replace(/^\s*<p>|<\/p>\s*$/gi, '');
|
||||
};
|
||||
|
||||
}).call(this);
|
60
dist/renderers/underscore-generator.js
vendored
Normal file
60
dist/renderers/underscore-generator.js
vendored
Normal file
@ -0,0 +1,60 @@
|
||||
|
||||
/**
|
||||
Definition of the UnderscoreGenerator class.
|
||||
@license MIT. See LICENSE.md for details.
|
||||
@module underscore-generator.js
|
||||
*/
|
||||
|
||||
(function() {
|
||||
var HMSTATUS, UnderscoreGenerator, _, registerHelpers;
|
||||
|
||||
_ = require('underscore');
|
||||
|
||||
registerHelpers = require('../helpers/underscore-helpers');
|
||||
|
||||
HMSTATUS = require('../core/status-codes');
|
||||
|
||||
|
||||
/**
|
||||
Perform template-based resume generation using Underscore.js.
|
||||
@class UnderscoreGenerator
|
||||
*/
|
||||
|
||||
UnderscoreGenerator = module.exports = {
|
||||
generateSimple: function(data, tpl) {
|
||||
var template;
|
||||
try {
|
||||
template = _.template(tpl);
|
||||
return template(data);
|
||||
} catch (_error) {
|
||||
throw {
|
||||
fluenterror: template ? HMSTATUS.invokeTemplate : HMSTATUS.compileTemplate,
|
||||
inner: _error
|
||||
};
|
||||
}
|
||||
},
|
||||
generate: function(json, jst, format, cssInfo, opts, theme) {
|
||||
var ctx, delims;
|
||||
delims = (opts.themeObj && opts.themeObj.delimeters) || opts.template;
|
||||
if (opts.themeObj && opts.themeObj.delimeters) {
|
||||
delims = _.mapObject(delims, function(val, key) {
|
||||
return new RegExp(val, "ig");
|
||||
});
|
||||
}
|
||||
_.templateSettings = delims;
|
||||
jst = jst.replace(delims.comment, '');
|
||||
ctx = {
|
||||
r: format === 'html' || format === 'pdf' || format === 'png' ? json.markdownify() : json,
|
||||
filt: opts.filters,
|
||||
XML: require('xml-escape'),
|
||||
RAW: json,
|
||||
cssInfo: cssInfo,
|
||||
headFragment: opts.headFragment || '',
|
||||
opts: opts
|
||||
};
|
||||
registerHelpers(theme, opts, cssInfo, ctx, this);
|
||||
return this.generateSimple(ctx, jst);
|
||||
}
|
||||
};
|
||||
|
||||
}).call(this);
|
Reference in New Issue
Block a user