diff --git a/.gitignore b/.gitignore index e82a8b6..3053511 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ resume.html resume.pdf resume.json .DS_Store +.log diff --git a/index.js b/index.js index e87e041..6daa209 100644 --- a/index.js +++ b/index.js @@ -5,26 +5,71 @@ var Handlebars = require("handlebars"); function render(resume) { var css = fs.readFileSync(__dirname + "/style.css", "utf-8"); var tpl = fs.readFileSync(__dirname + "/resume.hbs", "utf-8"); + var partialsDir = path.join(__dirname, 'partials'); var filenames = fs.readdirSync(partialsDir); - filenames.forEach(function (filename) { var matches = /^([^.]+).hbs$/.exec(filename); if (!matches) { return; } var name = matches[1]; - var filepath = path.join(partialsDir, filename) + var filepath = path.join(partialsDir, filename); var template = fs.readFileSync(filepath, 'utf8'); - Handlebars.registerPartial(name, template); }); + + Handlebars.registerHelper('icon', iconHtml); + Handlebars.registerHelper('year-month', shortenDateYearMonth); + return Handlebars.compile(tpl)({ css: css, resume: resume }); } +function iconHtml(iconName) { + let classes = ''; + switch (iconName) { + case 'GitHub': + return fontAwesomeHtml("fa-brands fa-github"); + case 'Mastodon': + return fontAwesomeHtml("fa-brands fa-mastodon"); + case 'Education': + return fontAwesomeHtml("fa-solid fa-graduation-cap"); + case 'Hammer': + return fontAwesomeHtml("fa-solid fa-hammer"); + case 'Language': + return fontAwesomeHtml("fa-solid fa-language"); + case 'Lightbulb': + return fontAwesomeHtml("fa-solid fa-lightbulb"); + case 'Paragraph': + return fontAwesomeHtml("fa-solid fa-paragraph"); + case 'Briefcase': + return fontAwesomeHtml("fa-solid fa-briefcase"); + case 'English': + return "🇬🇧"; + case "German": + return "🇩🇪"; + case "French": + return "🇫🇷"; + default: + console.warn("Could not fine icon: ", iconName); + return fontAwesomeHtml('fa-solid fa-file'); + } +} + +function fontAwesomeHtml(classes) { + return new Handlebars.SafeString(``); +} + + + + +function shortenDateYearMonth(date) { + return date.substring(0, 7); +} + module.exports = { render: render -}; \ No newline at end of file +}; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..3e33c1b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,111 @@ +{ + "name": "jsonresume-theme-boilerplate", + "version": "0.1.2", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "jsonresume-theme-boilerplate", + "version": "0.1.2", + "license": "MIT", + "dependencies": { + "handlebars": "^4.7.7" + } + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uglify-js": { + "version": "3.16.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.2.tgz", + "integrity": "sha512-AaQNokTNgExWrkEYA24BTNMSjyqEXPSfhqoS0AxmHkCJ4U+Dyy5AvbGV/sqxuxficEfGGoX3zWw9R7QpLFfEsg==", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" + } + }, + "dependencies": { + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "uglify-js": { + "version": "3.16.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.2.tgz", + "integrity": "sha512-AaQNokTNgExWrkEYA24BTNMSjyqEXPSfhqoS0AxmHkCJ4U+Dyy5AvbGV/sqxuxficEfGGoX3zWw9R7QpLFfEsg==", + "optional": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" + } + } +} diff --git a/package.json b/package.json index c1b3404..21a4626 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,14 @@ { - "name": "jsonresume-theme-boilerplate", - "version": "0.1.2", - "description": "Boilerplate theme for JSON Resume", - "author": "Mattias Erming", + "name": "jsonresume-theme-kindrobot", + "version": "0.1.0", + "description": "kindrobot's theme for JSON Resume", + "author": "Stef Dunlap", "repository": { "type": "git", - "url": "https://github.com/erming/jsonresume-theme-boilerplate" + "url": "https://github.com/motevets/jsonresume-theme-kindrobot" }, "license": "MIT", "dependencies": { - "handlebars": "^2.0.0-alpha.4" + "handlebars": "^4.7.7" } } diff --git a/partials/basics.hbs b/partials/basics.hbs index 38b4afa..5d276e4 100644 --- a/partials/basics.hbs +++ b/partials/basics.hbs @@ -11,80 +11,57 @@ {{/if}} {{#if email}}
{{summary}}
-{{summary}}
+