1
0
mirror of https://github.com/JuanCanham/HackMyResume.git synced 2024-12-23 05:37:23 +00:00

Tweak converter.

This commit is contained in:
devlinjd 2015-11-20 15:29:38 -05:00
parent 4de997840e
commit 5304cbabd9

View File

@ -15,55 +15,45 @@ FRESH to JSON Resume conversion routiens.
/**
Convert from JSON Resume format to FRESH.
*/
toFRESH: function( jrs ) {
toFRESH: function( src, foreign ) {
foreign = (foreign === undefined || foreign === null) ? true : foreign;
return {
name: jrs.basics.name,
name: src.basics.name,
info: {
label: jrs.basics.label,
//class: jrs.basics.label,
image: jrs.basics.picture,
brief: jrs.basics.summary
label: src.basics.label,
class: src.basics.class, // <--> round-trip
image: src.basics.picture,
brief: src.basics.summary
},
contact: {
email: jrs.basics.email,
phone: jrs.basics.phone,
website: jrs.basics.website
//other: [none]
email: src.basics.email,
phone: src.basics.phone,
website: src.basics.website,
other: src.basics.other // <--> round-trip
},
meta: meta2FRESH( jrs.meta ),
// disposition: {
// travel: 25,
// relocation: true,
// authorization: "citizen",
// commitment: ["full-time","permanent","contract"],
// remote: true,
// relocation: {
// willing: true,
// destinations: [ "Austin, TX", "California", "New York" ]
// }
// },
meta: meta( true, src.meta ),
location: {
city: jrs.basics.location.city,
region: jrs.basics.location.region,
country: jrs.basics.location.countryCode,
code: jrs.basics.location.postalCode,
address: jrs.basics.location.address
city: src.basics.location.city,
region: src.basics.location.region,
country: src.basics.location.countryCode,
code: src.basics.location.postalCode,
address: src.basics.location.address
},
employment: {
history: jrs.work.map( function( job ) {
history: src.work.map( function( job ) {
return {
position: job.position,
employer: job.company,
summary: job.summary,
current: !job.endDate || !job.endDate.trim() || job.endDate.trim().toLowerCase() === 'current',
current: (!job.endDate || !job.endDate.trim() || job.endDate.trim().toLowerCase() === 'current') || undefined,
start: job.startDate,
end: job.endDate,
url: job.website,
@ -74,7 +64,7 @@ FRESH to JSON Resume conversion routiens.
},
education: {
history: jrs.education.map(function(edu){
history: src.education.map(function(edu){
return {
institution: edu.institution,
start: edu.startDate,
@ -90,7 +80,7 @@ FRESH to JSON Resume conversion routiens.
},
service: {
history: jrs.volunteer.map(function(vol) {
history: src.volunteer.map(function(vol) {
return {
type: 'volunteer',
position: vol.position,
@ -104,22 +94,20 @@ FRESH to JSON Resume conversion routiens.
})
},
skills: skillsToFRESH( jrs.skills ),
skills: skillsToFRESH( src.skills ),
writing: jrs.publications.map(function(pub){
writing: src.publications.map(function(pub){
return {
title: pub.name,
flavor: undefined,
publisher: pub.publisher,
link: [
{ 'url': pub.website }
],
year: pub.releaseDate,
url: pub.website,
date: pub.releaseDate,
summary: pub.summary
};
}),
recognition: jrs.awards.map(function(awd){
recognition: src.awards.map(function(awd){
return {
title: awd.title,
date: awd.date,
@ -129,7 +117,7 @@ FRESH to JSON Resume conversion routiens.
};
}),
social: jrs.basics.profiles.map(function(pro){
social: src.basics.profiles.map(function(pro){
return {
label: pro.network,
network: pro.network,
@ -138,37 +126,41 @@ FRESH to JSON Resume conversion routiens.
};
}),
interests: jrs.interests,
references: jrs.references,
languages: jrs.languages
interests: src.interests,
references: src.references,
languages: src.languages,
disposition: src.disposition // <--> round-trip
};
},
/**
Convert from FRESH format to JSON Resume.
@param foreign True if non-JSON-Resume properties should be included in
the result, false if those properties should be excluded.
*/
toJRS: function( fresh ) {
toJRS: function( src, foreign ) {
foreign = (foreign === undefined || foreign === null) ? false : foreign;
return {
basics: {
name: fresh.name,
label: fresh.info.label,
summary: fresh.info.brief,
website: fresh.contact.website,
phone: fresh.contact.phone,
email: fresh.contact.email,
picture: fresh.info.image,
name: src.name,
label: src.info.label,
class: foreign ? src.info.class : undefined,
summary: src.info.brief,
website: src.contact.website,
phone: src.contact.phone,
email: src.contact.email,
picture: src.info.image,
location: {
address: fresh.location.address,
postalCode: fresh.location.code,
city: fresh.location.city,
countryCode: fresh.location.country,
region: fresh.location.region
address: src.location.address,
postalCode: src.location.code,
city: src.location.city,
countryCode: src.location.country,
region: src.location.region
},
profiles: fresh.social.map(function(soc){
profiles: src.social.map(function(soc){
return {
network: soc.network,
username: soc.user,
@ -177,7 +169,7 @@ FRESH to JSON Resume conversion routiens.
})
},
work: fresh.employment.history.map(function(emp){
work: src.employment.history.map(function(emp){
return {
company: emp.employer,
website: emp.url,
@ -189,7 +181,7 @@ FRESH to JSON Resume conversion routiens.
};
}),
education: fresh.education.history.map(function(edu){
education: src.education.history.map(function(edu){
return {
institution: edu.institution,
gpa: edu.grade,
@ -201,11 +193,11 @@ FRESH to JSON Resume conversion routiens.
};
}),
skills: skillsToJRS( fresh.skills ),
skills: skillsToJRS( src.skills ),
volunteer: fresh.service.history.map(function(srv){
volunteer: src.service.history.map(function(srv){
return {
//???: srv.type,
flavor: foreign ? srv.flavor : undefined,
organization: srv.organization,
position: srv.position,
startDate: srv.start,
@ -216,10 +208,10 @@ FRESH to JSON Resume conversion routiens.
};
}),
awards: fresh.recognition.map(function(awd){
awards: src.recognition.map(function(awd){
return {
//???: awd.type, // TODO
//???: awd.url,
flavor: foreign ? awd.type : undefined,
url: foreign ? awd.url: undefined,
title: awd.title,
date: awd.date,
awarder: awd.from,
@ -227,21 +219,21 @@ FRESH to JSON Resume conversion routiens.
};
}),
publications: fresh.writing.map(function(pub){
publications: src.writing.map(function(pub){
return {
name: pub.title,
publisher: pub.publisher,
releaseDate: pub.date,
website: pub.link[0].url,
website: pub.url,
summary: pub.summary
};
}),
interests: fresh.interests,
references: fresh.references,
languages: fresh.languages
interests: src.interests,
references: src.references,
samples: foreign ? src.samples : undefined,
disposition: foreign ? src.disposition : undefined,
languages: src.languages
};
@ -249,10 +241,12 @@ FRESH to JSON Resume conversion routiens.
};
function meta2FRESH( obj ) {
obj = obj || { };
obj.format = obj.format || "FRESH@0.1.0";
obj.version = obj.version || "0.1.0";
function meta( direction, obj ) {
if( direction ) {
obj = obj || { };
obj.format = obj.format || "FRESH@0.1.0";
obj.version = obj.version || "0.1.0";
}
return obj;
}