Skip to content

Commit

Permalink
Merge pull request #16 from tomasbulva/gh-pages
Browse files Browse the repository at this point in the history
enhanced zip reader results recognition and updated the way the dates are handled.
  • Loading branch information
JMPerez committed Jan 28, 2018
2 parents 1512281 + 90bd803 commit 560f883
Show file tree
Hide file tree
Showing 5 changed files with 1,041 additions and 100 deletions.
1,040 changes: 992 additions & 48 deletions dist/output.js

Large diffs are not rendered by default.

19 changes: 6 additions & 13 deletions js/converter.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,19 +62,18 @@ class LinkedInToJsonResume {
}

processPosition(source) {

function processPosition(position) {
let object = {
company: position.companyName,
position: position.title || '',
website: '',
startDate: `${position.startDate.year}-${position.startDate.month < 10 ? '0' : ''}${position.startDate.month}-01`,
startDate: `${position.startDate}`,
summary: position.description,
highlights: []
};

if (position.endDate) {
object.endDate = `${position.endDate.year}-${position.endDate.month < 10 ? '0' : ''}${position.endDate.month}-01`;
object.endDate = `${position.endDate}`;
}

return object;
Expand All @@ -84,19 +83,18 @@ class LinkedInToJsonResume {
}

processEducation(source) {

function processEducation(education) {
let object = {
institution: education.schoolName,
area: '',
studyType: education.degree,
startDate: `${education.startDate}-01-01`,
startDate: `${education.startDate}`,
gpa: '',
courses: []
};

if (education.endDate) {
object.endDate = `${education.endDate}-01-01`;
object.endDate = `${education.endDate}`;
}

return object;
Expand All @@ -106,7 +104,6 @@ class LinkedInToJsonResume {
}

processSkills(skills) {

this.target.skills = skills.map(skill => ({
name: skill,
level: '',
Expand All @@ -115,7 +112,6 @@ class LinkedInToJsonResume {
}

processLanguages(source) {

function cleanProficiencyString(proficiency) {
proficiency = proficiency.toLowerCase().replace(/_/g, ' ');
return proficiency[0].toUpperCase() + proficiency.substr(1);
Expand All @@ -128,33 +124,30 @@ class LinkedInToJsonResume {
}

processReferences(source) {

this.target.references = source.map(reference => ({
name: `${reference.recommenderFirstName} ${reference.recommenderLastName} - ${reference.recommenderCompany}`,
reference: reference.recommendationBody
}));
}

processInterests(source) {

this.target.interests = source.map(interest => ({
name: interest,
keywords: []
}));
}

processProjects(source) {

function processProjects(project) {

let p = {
name: project.title,
startDate: `${project.startDate.year}-${project.startDate.month < 10 ? '0' : ''}${project.startDate.month}-01`,
startDate: `${project.startDate}`,
summary: project.description,
url: project.url
};
if(project.endDate) {
p.endDate = `${project.endDate.year}-${project.endDate.month < 10 ? '0' : ''}${project.endDate.month}-01`;
p.endDate = `${project.endDate}`;
}
return p;
}
Expand Down
70 changes: 31 additions & 39 deletions js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import LinkedInToJsonResume from './converter.js';
import csvToArray from './csvtoarray.js';
import save from './file.js';
import moment from '../vendor/moment.js';

((() => {
const filedrag = document.getElementById('filedrag');
Expand Down Expand Up @@ -61,24 +62,24 @@ import save from './file.js';
getEntries(file, entries => {

const promises = entries.map(entry => {

switch (entry.filename) {
case 'Skills.csv':
switch (true) {
case (entry.filename.indexOf('Skills.csv') !== -1):
return readEntryContents(entry).then(contents => {
// console.log('Skills contents', contents);
contents = contents.replace(/"/g, '');
let elements = contents.split('\n');
elements = elements.slice(1, elements.length -1);
linkedinToJsonResume.processSkills(elements);
return;
});

case 'Education.csv':
case (entry.filename.indexOf('Education.csv') !== -1):
return readEntryContents(entry).then(contents => {
const elements = csvToArray(contents);
const education = elements.slice(1, elements.length - 1).map(elem => ({
schoolName: elem[0],
startDate: elem[1],
endDate: elem[2],
startDate: moment(elem[1]).format('YYYY-MM-DD'),
endDate: moment(elem[2]).format('YYYY-MM-DD'),
notes: elem[3],
degree: elem[4],
activities: elem[5]
Expand All @@ -89,33 +90,30 @@ import save from './file.js';
return;
});

case 'Positions.csv':
case (entry.filename.indexOf('Positions.csv') !== -1):
return readEntryContents(entry).then(contents => {
const elements = csvToArray(contents);
const positions = elements.slice(1, elements.length - 1).map(elem => ({
companyName: elem[0],
description: elem[1],
location: elem[2],

startDate: {
year: elem[3].split('/')[1],
month: elem[3].split('/')[0]
},

endDate: elem[4] ? {
year: elem[4].split('/')[1],
month: elem[4].split('/')[0]
} : null,

title: elem[5]
}));
const positions = elements.slice(1, elements.length - 1).map(
elem => {
return {
companyName: elem[0],
title: elem[1],
description: elem[2],
location: elem[3],

startDate: moment(elem[4]).format('YYYY-MM-DD'),

endDate: elem[5] ? moment(elem[5]).format('YYYY-MM-DD') : null,
};
}
);
linkedinToJsonResume.processPosition(positions.sort((p1,p2) =>
(+p2.startDate.year - +p1.startDate.year) || (+p2.startDate.month - +p1.startDate.month)
));
return;
});

case 'Languages.csv':
case (entry.filename.indexOf('Languages.csv') !== -1):
return readEntryContents(entry).then(contents => {
const elements = csvToArray(contents);
const languages = elements.slice(1, elements.length - 1).map(elem => ({
Expand All @@ -126,9 +124,9 @@ import save from './file.js';
return;
});

case 'Recommendations Received.csv':
case (entry.filename.indexOf('Recommendations Received.csv') !== -1):
return readEntryContents(entry).then(contents => {
const elements = csvToArray(contents);
const elements = csvToArray(contents);
const recommendations = elements.slice(1, elements.length - 1).map(elem => ({
recommenderFirstName: elem[0],
recommenderLastName: elem[1],
Expand All @@ -142,7 +140,7 @@ import save from './file.js';
return;
});

case 'Profile.csv':
case (entry.filename.indexOf('Profile.csv') !== -1):
return readEntryContents(entry).then(contents => {
const elements = csvToArray(contents);
const profile = {
Expand All @@ -163,7 +161,7 @@ import save from './file.js';
return;
});

case 'Email Addresses.csv':
case (entry.filename.indexOf('Email Addresses.csv') !== -1):
return readEntryContents(entry).then(contents => {
const elements = csvToArray(contents, '\t'); // yes, recommendations use tab-delimiter
const email = elements.slice(1, elements.length - 1).map(elem => ({
Expand All @@ -179,7 +177,7 @@ import save from './file.js';
return;
});

case 'Interests.csv':
case (entry.filename.indexOf('Interests.csv') !== -1):
return readEntryContents(entry).then(contents => {
const elements = csvToArray(contents);
let interests = [];
Expand All @@ -190,21 +188,15 @@ import save from './file.js';
return;
});

case 'Projects.csv':
case (entry.filename.indexOf('Projects.csv') !== -1):
return readEntryContents(entry).then(contents => {
const elements = csvToArray(contents);
const projects = elements.slice(1, elements.length - 1).map(elem => ({
title: elem[0],

startDate: {
year: elem[1].split('/')[1],
month: elem[1].split('/')[0]
},
startDate: moment(elem[1]).format('YYYY-MM-DD'),

endDate: elem[2] ? {
year: elem[2].split('/')[1],
month: elem[2].split('/')[0]
} : null,
endDate: elem[2] ? moment(elem[2]).format('YYYY-MM-DD') : null,

description: elem[3],
url: elem[4]
Expand Down
5 changes: 5 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
"description": "LinkedIn to JSON Résumé",
"main": "js/main.js",
"scripts": {
"start": "npm run pre-build; npm run build",
"build": "mkdir -p dist && node ./node_modules/browserify/bin/cmd.js -d -e js/main.js -t babelify --outfile dist/output.js",
"pre-build": "cp -f node_modules/moment/min/moment.min.js vendor/moment.js",
"lint": "./node_modules/jshint/bin/jshint js/*.js",
"test": "npm run lint"
},
Expand All @@ -22,5 +24,8 @@
"babelify": "^6.1.2",
"browserify": "^10.2.4",
"jshint": "^2.8.0"
},
"dependencies": {
"moment": "^2.18.1"
}
}
7 changes: 7 additions & 0 deletions vendor/moment.js

Large diffs are not rendered by default.

0 comments on commit 560f883

Please sign in to comment.