UNPKG

kcv-theme-moon

Version:
273 lines (252 loc) 7.1 kB
var fs = require('fs'); var _ = require('lodash'); var Mustache = require('mustache'); var d = new Date(); var curyear = d.getFullYear(); function getMonth(startDateStr) { switch (startDateStr.substr(5, 2)) { case '01': return "January "; case '02': return "February "; case '03': return "March "; case '04': return "April "; case '05': return "May "; case '06': return "June "; case '07': return "July "; case '08': return "August "; case '09': return "September "; case '10': return "October "; case '11': return "November "; case '12': return "December "; } } function render(resume, themeOptions) { if (resume.basics && resume.basics.name) { resume.basics.capitalName = resume.basics.name.toUpperCase(); } if (resume.basics && resume.basics.profiles) { _.each(resume.basics.profiles, function (p) { switch (p.network.toLowerCase()) { case "facebook": p.iconClass = "fa fa-facebook-square"; break; case "github": p.iconClass = "fa fa-github-square"; break; case "twitter": p.iconClass = "fa fa-twitter-square"; break; case "googlePlus": case "google-plus": case "googleplus": p.iconClass = "fa fa-google-plus-square"; break; case "youtube": case "YouTube": p.iconClass = "fa fa-youtube-square"; break; case "vimeo": p.iconClass = "fa fa-vimeo-square"; break; case "linkedin": p.iconClass = "fa fa-linkedin-square"; break; case "pinterest": p.iconClass = "fa fa-pinterest-square"; break; case "flickr": case "flicker": p.iconClass = "fa fa-flickr"; break; case "behance": p.iconClass = "fa fa-behance-square"; break; case "dribbble": case "dribble": p.iconClass = "fa fa-dribbble"; break; case "codepen": case "codePen": p.iconClass = "fa fa-codepen"; break; case "soundcloud": case "soundCloud": p.iconClass = "fa fa-soundcloud"; break; case "steam": p.iconClass = "fa fa-steam"; break; case "reddit": p.iconClass = "fa fa-reddit"; break; case "tumblr": case "tumbler": p.iconClass = "fa fa-tumblr-square"; break; case "stack-overflow": case "stackOverflow": p.iconClass = "fa fa-stack-overflow"; break; case "bitbucket": p.iconClass = "fa fa-bitbucket"; break; case "blog": case "rss": p.iconClass = "fa fa-rss-square"; break; } if (p.url) { p.text = p.url; } else { p.text = p.network + ": " + p.username; } }); } if (resume.work && resume.work.length) { resume.workBool = true; _.each(resume.work, function (w) { if (w.startDate) { w.startDateYear = (w.startDate || "").substr(0, 4); w.startDateMonth = getMonth(w.startDate || ""); } if (w.endDate) { w.endDateYear = (w.endDate || "").substr(0, 4); w.endDateMonth = getMonth(w.endDate || ""); } else { w.endDateYear = 'Present'; } if (w.highlights) { if (w.highlights[0]) { if (w.highlights[0] !== "") { w.boolHighlights = true; } } } }); } if (resume.volunteer && resume.volunteer.length) { resume.volunteerBool = true; _.each(resume.volunteer, function (w) { if (w.startDate) { w.startDateYear = (w.startDate || "").substr(0, 4); w.startDateMonth = getMonth(w.startDate || ""); } if (w.endDate) { w.endDateYear = (w.endDate || "").substr(0, 4); w.endDateMonth = getMonth(w.endDate || ""); } else { w.endDateYear = 'Present' } if (w.highlights) { if (w.highlights[0]) { if (w.highlights[0] !== "") { w.boolHighlights = true; } } } }); } if (resume.photo) { resume.photoBool = true; } if (resume.education && resume.education.length) { if (resume.education[0].institution) { resume.educationBool = true; _.each(resume.education, function (e) { if (!e.area || !e.studyType) { e.educationDetail = (e.area === null ? '' : e.area) + (e.studyType === null ? '' : e.studyType); } else { e.educationDetail = e.area + ", " + e.studyType; } if (e.startDate) { e.startDateYear = e.startDate.substr(0, 4); e.startDateMonth = getMonth(e.startDate || ""); } else { e.endDateMonth = ""; } if (e.endDate) { e.endDateYear = e.endDate.substr(0, 4); e.endDateMonth = getMonth(e.endDate || ""); if (e.endDateYear > curyear) { e.endDateYear += " (expected)"; } } else { e.endDateYear = 'Present' e.endDateMonth = ''; } if (e.courses) { if (e.courses[0]) { if (e.courses[0] !== "") { e.educationCourses = true; } } } }); } } if (resume.awards && resume.awards.length) { if (resume.awards[0].title) { resume.awardsBool = true; _.each(resume.awards, function (a) { a.year = (a.date || "").substr(0, 4); a.day = (a.date || "").substr(8, 2); a.month = getMonth(a.date || ""); }); } } if (resume.publications && resume.publications.length) { if (resume.publications[0].name) { resume.publicationsBool = true; _.each(resume.publications, function (a) { a.year = (a.releaseDate || "").substr(0, 4); a.day = (a.releaseDate || "").substr(8, 2); a.month = getMonth(a.releaseDate || ""); }); } } if (resume.skills && resume.skills.length) { if (resume.skills[0].name) { resume.skillsBool = true; } } if (resume.interests && resume.interests.length) { if (resume.interests[0].name) { resume.interestsBool = true; } } if (resume.languages && resume.languages.length) { if (resume.languages[0].language) { resume.languagesBool = true; } } if (resume.references && resume.references.length) { if (resume.references[0].name) { resume.referencesBool = true; } } resume.css = fs.readFileSync(__dirname + "/style.css", "utf-8"); resume.printcss = fs.readFileSync(__dirname + "/print.css", "utf-8"); var theme = fs.readFileSync(__dirname + '/resume.template', 'utf8'); resume.inYears = (function (_firstJobStartDateStr) { var firstJobStartDate = new Date(_firstJobStartDateStr); return function () { return (new Date()).getFullYear() - firstJobStartDate.getFullYear(); }; })(resume.work[resume.work.length - 1].startDate); var resumeHTML = Mustache.render(theme, resume); return resumeHTML; } module.exports = { render: render };