resume_exporter 0.0.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/resume_exporter +4 -2
- data/lib/exporters/html.rb +33 -0
- data/lib/exporters/pdf.rb +13 -0
- data/lib/extractors/html/linkedin.rb +145 -169
- data/lib/extractors/html/stackoverflow.rb +60 -72
- data/lib/extractors/html/xing.rb +46 -60
- data/lib/extractors/html.rb +1 -1
- data/lib/extractors/json/fresh.rb +196 -233
- data/lib/extractors/json/json_resume.rb +107 -127
- data/lib/extractors/json/prtflio.rb +20 -24
- data/lib/extractors/json.rb +7 -6
- data/lib/resume_exporter.rb +6 -0
- data/lib/templates/default.json.jbuilder +162 -229
- data/lib/templates/default.md.erb +99 -244
- data/lib/templates/default.txt.erb +99 -224
- data/lib/templates/default.xml.builder +162 -227
- data/lib/templates/fresh.json.jbuilder +149 -155
- data/lib/templates/html/_affiliation.liquid +53 -0
- data/lib/templates/html/_basics.liquid +19 -0
- data/lib/templates/html/_contact.liquid +27 -0
- data/lib/templates/html/_css.liquid +324 -0
- data/lib/templates/html/_disposition.liquid +13 -0
- data/lib/templates/html/_education.liquid +56 -0
- data/lib/templates/html/_employment.liquid +67 -0
- data/lib/templates/html/_extracurricular.liquid +53 -0
- data/lib/templates/html/_footer.liquid +1 -0
- data/lib/templates/html/_governance.liquid +52 -0
- data/lib/templates/html/_image.liquid +7 -0
- data/lib/templates/html/_interests.liquid +23 -0
- data/lib/templates/html/_languages.liquid +22 -0
- data/lib/templates/html/_open_source.liquid +53 -0
- data/lib/templates/html/_patents.liquid +50 -0
- data/lib/templates/html/_projects.liquid +53 -0
- data/lib/templates/html/_qualifications.liquid +53 -0
- data/lib/templates/html/_reading.liquid +52 -0
- data/lib/templates/html/_recognition.liquid +54 -0
- data/lib/templates/html/_references.liquid +28 -0
- data/lib/templates/html/_resume.liquid +49 -0
- data/lib/templates/html/_service.liquid +53 -0
- data/lib/templates/html/_skills.liquid +35 -0
- data/lib/templates/html/_social.liquid +25 -0
- data/lib/templates/html/_speaking.liquid +53 -0
- data/lib/templates/html/_writing.liquid +52 -0
- data/lib/templates/html/default.liquid +1 -0
- data/lib/templates/json_resume.json.jbuilder +72 -72
- metadata +119 -20
@@ -1,217 +1,211 @@
|
|
1
|
-
json.name @data.dig(
|
1
|
+
json.name @data.dig("basics", "name")
|
2
2
|
|
3
3
|
json.meta do
|
4
4
|
json.format "FRESH@0.6.0"
|
5
|
-
json.version @data.dig(
|
5
|
+
json.version @data.dig("meta", "version")
|
6
6
|
end
|
7
7
|
|
8
8
|
json.info do
|
9
|
-
json.label @data.dig(
|
10
|
-
json.class @data.dig(
|
11
|
-
json.image @data.dig(
|
12
|
-
json.brief @data.dig(
|
13
|
-
json.quote @data.dig(
|
9
|
+
json.label @data.dig("basics", "label")
|
10
|
+
json.class @data.dig("basics", "class")
|
11
|
+
json.image @data.dig("basics", "image")
|
12
|
+
json.brief @data.dig("basics", "summary")
|
13
|
+
json.quote @data.dig("basics", "quote")
|
14
14
|
end
|
15
15
|
|
16
16
|
json.disposition do
|
17
|
-
json.travel @data.dig(
|
18
|
-
json.authorization @data.dig(
|
19
|
-
json.commitment @data.dig(
|
20
|
-
json.remote @data.dig(
|
17
|
+
json.travel @data.dig("disposition", "travel")
|
18
|
+
json.authorization @data.dig("disposition", "authorization")
|
19
|
+
json.commitment @data.dig("disposition", "commitment")
|
20
|
+
json.remote @data.dig("disposition", "remote")
|
21
21
|
json.relocation do
|
22
|
-
json.willing @data.dig(
|
23
|
-
json.destinations @data.dig(
|
22
|
+
json.willing @data.dig("disposition", "relocation", "willing")
|
23
|
+
json.destinations @data.dig("disposition", "relocation", "destinations")
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
27
|
json.contact do
|
28
|
-
json.email @data.dig(
|
29
|
-
json.phone @data.dig(
|
30
|
-
json.website @data.dig(
|
31
|
-
json.other @data.dig(
|
28
|
+
json.email @data.dig("basics", "contact", "email")
|
29
|
+
json.phone @data.dig("basics", "contact", "phone")
|
30
|
+
json.website @data.dig("basics", "contact", "website")
|
31
|
+
json.other @data.dig("basics", "contact", "other")
|
32
32
|
end
|
33
33
|
|
34
34
|
json.location do
|
35
|
-
json.address @data.dig(
|
36
|
-
json.code @data.dig(
|
37
|
-
json.city @data.dig(
|
38
|
-
json.country @data.dig(
|
39
|
-
json.region @data.dig(
|
35
|
+
json.address @data.dig("location", "address") || @data.dig("basics", "contact", "location")
|
36
|
+
json.code @data.dig("location", "code")
|
37
|
+
json.city @data.dig("location", "city")
|
38
|
+
json.country @data.dig("location", "country")
|
39
|
+
json.region @data.dig("location", "region")
|
40
40
|
end
|
41
41
|
|
42
42
|
json.employment do
|
43
|
-
json.
|
44
|
-
|
45
|
-
json.
|
46
|
-
json.
|
47
|
-
json.
|
48
|
-
json.
|
49
|
-
json.
|
50
|
-
json.
|
51
|
-
json.
|
52
|
-
json.
|
53
|
-
json.keywords job[:keywords]
|
43
|
+
json.history @data.dig("employment") do |job|
|
44
|
+
json.employer job["employer"]
|
45
|
+
json.position job["position"]
|
46
|
+
json.url job["url"]
|
47
|
+
json.start job["startDate"]
|
48
|
+
json.end job["endDate"]
|
49
|
+
json.summary job["summary"]
|
50
|
+
json.location job["location"]
|
51
|
+
json.highlights job["highlights"]
|
52
|
+
json.keywords job["keywords"]
|
54
53
|
end
|
55
54
|
end
|
56
55
|
|
57
|
-
json.projects @data.dig(
|
58
|
-
json.title project[
|
59
|
-
json.category project[
|
60
|
-
json.description project[
|
61
|
-
json.summary project[
|
62
|
-
json.role project[
|
63
|
-
json.url project[
|
64
|
-
json.media project[
|
65
|
-
json.repo project[
|
66
|
-
json.start project[
|
67
|
-
json.end project[
|
68
|
-
json.highlights project[
|
69
|
-
json.location project[
|
70
|
-
json.keywords project[
|
56
|
+
json.projects @data.dig("projects") do |project|
|
57
|
+
json.title project["title"]
|
58
|
+
json.category project["category"]
|
59
|
+
json.description project["description"]
|
60
|
+
json.summary project["summary"]
|
61
|
+
json.role project["roles"].join(", ") if project["roles"]
|
62
|
+
json.url project["url"]
|
63
|
+
json.media project["media"]
|
64
|
+
json.repo project["repo"]
|
65
|
+
json.start project["startDate"]
|
66
|
+
json.end project["endDate"]
|
67
|
+
json.highlights project["highlights"]
|
68
|
+
json.location project["location"]
|
69
|
+
json.keywords project["keywords"]
|
71
70
|
end
|
72
71
|
|
73
72
|
json.skills do
|
74
|
-
json.sets @data.dig(
|
75
|
-
json.name skill[
|
76
|
-
json.level skill[
|
77
|
-
json.skills skill[
|
73
|
+
json.sets @data.dig("skills", "sets") do |skill|
|
74
|
+
json.name skill["name"]
|
75
|
+
json.level skill["level"]
|
76
|
+
json.skills skill["keywords"]
|
78
77
|
end
|
79
78
|
|
80
|
-
json.list @data.dig(
|
79
|
+
json.list @data.dig("skills", "list")
|
81
80
|
end
|
82
81
|
|
83
82
|
json.service do
|
84
|
-
json.
|
85
|
-
|
86
|
-
json.
|
87
|
-
json.
|
88
|
-
json.
|
89
|
-
json.
|
90
|
-
json.
|
91
|
-
json.
|
92
|
-
json.
|
93
|
-
json.
|
94
|
-
json.
|
95
|
-
json.location entry[:location]
|
83
|
+
json.history @data.dig("service") do |entry|
|
84
|
+
json.category entry["category"]
|
85
|
+
json.organization entry["organization"]
|
86
|
+
json.position entry["roles"].join(", ") if entry["roles"]
|
87
|
+
json.url entry["url"]
|
88
|
+
json.start entry["startDate"]
|
89
|
+
json.end entry["endDate"]
|
90
|
+
json.summary entry["summary"]
|
91
|
+
json.highlights entry["highlights"]
|
92
|
+
json.keywords entry["keywords"]
|
93
|
+
json.location entry["location"]
|
96
94
|
end
|
97
95
|
end
|
98
96
|
|
99
97
|
json.education do
|
100
|
-
json.
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
json.
|
105
|
-
json.
|
106
|
-
json.
|
107
|
-
json.
|
108
|
-
json.
|
109
|
-
json.
|
110
|
-
json.
|
111
|
-
json.
|
112
|
-
json.
|
113
|
-
json.
|
114
|
-
json.keywords entry[:keywords]
|
115
|
-
json.highlights entry[:highlights]
|
116
|
-
json.location entry[:location]
|
98
|
+
json.history @data.dig("education") do |entry|
|
99
|
+
json.title entry["title"]
|
100
|
+
json.institution entry["institution"]
|
101
|
+
json.area entry["fieldOfStudy"]
|
102
|
+
json.studyType entry["degree"]
|
103
|
+
json.start entry["startDate"]
|
104
|
+
json.end entry["endDate"]
|
105
|
+
json.grade entry["grade"]
|
106
|
+
json.curriculum entry["curriculum"]
|
107
|
+
json.url entry["url"]
|
108
|
+
json.summary entry["description"]
|
109
|
+
json.keywords entry["keywords"]
|
110
|
+
json.highlights entry["highlights"]
|
111
|
+
json.location entry["location"]
|
117
112
|
end
|
118
113
|
end
|
119
114
|
|
120
|
-
json.social @data.dig(
|
115
|
+
json.social @data.dig("basics", "contact", "social")
|
121
116
|
|
122
|
-
json.recognition @data.dig(
|
123
|
-
json.category entry[
|
124
|
-
json.title entry[
|
125
|
-
json.date entry[
|
126
|
-
json.from entry[
|
127
|
-
json.summary entry[
|
128
|
-
json.url entry[
|
117
|
+
json.recognition @data.dig("recognition") do |entry|
|
118
|
+
json.category entry["category"]
|
119
|
+
json.title entry["title"]
|
120
|
+
json.date entry["startDate"]
|
121
|
+
json.from entry["from"]
|
122
|
+
json.summary entry["summary"]
|
123
|
+
json.url entry["url"]
|
129
124
|
end
|
130
125
|
|
131
|
-
json.writing @data.dig(
|
132
|
-
json.title entry[
|
133
|
-
json.category entry[
|
134
|
-
json.publisher entry[
|
135
|
-
json.date entry[
|
136
|
-
json.url entry[
|
137
|
-
json.summary entry[
|
126
|
+
json.writing @data.dig("writing") do |entry|
|
127
|
+
json.title entry["title"]
|
128
|
+
json.category entry["category"]
|
129
|
+
json.publisher entry["publisher"]
|
130
|
+
json.date entry["date"]
|
131
|
+
json.url entry["url"]
|
132
|
+
json.summary entry["summary"]
|
138
133
|
end
|
139
134
|
|
140
|
-
json.reading @data.dig(
|
141
|
-
json.title entry[
|
142
|
-
json.category entry[
|
143
|
-
json.url entry[
|
144
|
-
json.author entry[
|
145
|
-
json.date entry[
|
146
|
-
json.summary entry[
|
135
|
+
json.reading @data.dig("reading") do |entry|
|
136
|
+
json.title entry["title"]
|
137
|
+
json.category entry["category"]
|
138
|
+
json.url entry["url"]
|
139
|
+
json.author entry["author"]
|
140
|
+
json.date entry["date"]
|
141
|
+
json.summary entry["summary"]
|
147
142
|
end
|
148
143
|
|
149
|
-
json.speaking @data.dig(
|
150
|
-
json.title entry[
|
151
|
-
json.event entry[
|
152
|
-
json.location entry[
|
153
|
-
json.date entry[
|
154
|
-
json.summary entry[
|
155
|
-
json.highlights entry[
|
156
|
-
json.keywords entry[
|
144
|
+
json.speaking @data.dig("speaking") do |entry|
|
145
|
+
json.title entry["title"]
|
146
|
+
json.event entry["event"]
|
147
|
+
json.location entry["location"]
|
148
|
+
json.date entry["date"]
|
149
|
+
json.summary entry["summary"]
|
150
|
+
json.highlights entry["highlights"]
|
151
|
+
json.keywords entry["keywords"]
|
157
152
|
end
|
158
153
|
|
159
|
-
json.governance @data.dig(
|
160
|
-
json.summary entry[
|
161
|
-
json.category entry[
|
162
|
-
json.role entry[
|
163
|
-
json.organization entry[
|
164
|
-
json.start entry[
|
165
|
-
json.end entry[
|
166
|
-
json.keywords entry[
|
167
|
-
json.highlights entry[
|
154
|
+
json.governance @data.dig("governance") do |entry|
|
155
|
+
json.summary entry["summary"]
|
156
|
+
json.category entry["category"]
|
157
|
+
json.role entry["roles"].join(", ") if entry["roles"]
|
158
|
+
json.organization entry["organization"]
|
159
|
+
json.start entry["startDate"]
|
160
|
+
json.end entry["endDate"]
|
161
|
+
json.keywords entry["keywords"]
|
162
|
+
json.highlights entry["highlights"]
|
168
163
|
end
|
169
164
|
|
170
|
-
json.languages @data.dig(
|
171
|
-
json.language language[
|
172
|
-
json.level language[
|
173
|
-
json.years language[
|
165
|
+
json.languages @data.dig("languages") do |language|
|
166
|
+
json.language language["language"]
|
167
|
+
json.level language["level"]
|
168
|
+
json.years language["years"]
|
174
169
|
end
|
175
170
|
|
176
|
-
json.samples @data.dig(
|
171
|
+
json.samples @data.dig("samples")
|
177
172
|
|
178
|
-
json.references @data.dig(
|
179
|
-
json.name reference[
|
180
|
-
json.role reference[
|
181
|
-
json.category reference[
|
182
|
-
json.private reference[
|
183
|
-
json.summary reference[
|
184
|
-
json.contact reference[
|
173
|
+
json.references @data.dig("references") do |reference|
|
174
|
+
json.name reference["name"]
|
175
|
+
json.role reference["role"]
|
176
|
+
json.category reference["category"]
|
177
|
+
json.private reference["private"]
|
178
|
+
json.summary reference["summary"]
|
179
|
+
json.contact reference["contact"]
|
185
180
|
end
|
186
181
|
|
187
|
-
json.testimonials @data.dig(
|
182
|
+
json.testimonials @data.dig("testimonials")
|
188
183
|
|
189
|
-
json.interests @data.dig(
|
190
|
-
json.name interest[
|
191
|
-
json.summary interest[
|
192
|
-
json.keywords interest[
|
184
|
+
json.interests @data.dig("interests") do |interest|
|
185
|
+
json.name interest["name"]
|
186
|
+
json.summary interest["summary"]
|
187
|
+
json.keywords interest["keywords"]
|
193
188
|
end
|
194
189
|
|
195
|
-
json.extracurricular @data.dig(
|
196
|
-
json.title entry[
|
197
|
-
json.activity entry[
|
198
|
-
json.location entry[
|
199
|
-
json.start entry[
|
200
|
-
json.end entry[
|
190
|
+
json.extracurricular @data.dig("extracurriculars") do |entry|
|
191
|
+
json.title entry["title"]
|
192
|
+
json.activity entry["summary"]
|
193
|
+
json.location entry["location"]
|
194
|
+
json.start entry["startDate"]
|
195
|
+
json.end entry["endDate"]
|
201
196
|
end
|
202
197
|
|
203
198
|
json.affiliation do
|
204
|
-
json.
|
205
|
-
|
206
|
-
json.
|
207
|
-
json.
|
208
|
-
json.
|
209
|
-
json.
|
210
|
-
json.
|
211
|
-
json.
|
212
|
-
json.
|
213
|
-
json.
|
214
|
-
json.
|
215
|
-
json.keywords entry[:keywords]
|
199
|
+
json.history @data.dig("affiliations") do |entry|
|
200
|
+
json.category entry["category"]
|
201
|
+
json.organization entry["organization"]
|
202
|
+
json.role entry["roles"].join(", ") if entry["roles"]
|
203
|
+
json.url entry["url"]
|
204
|
+
json.start entry["startDate"]
|
205
|
+
json.end entry["endDate"]
|
206
|
+
json.summary entry["summary"]
|
207
|
+
json.location entry["location"]
|
208
|
+
json.highlights entry["highlights"]
|
209
|
+
json.keywords entry["keywords"]
|
216
210
|
end
|
217
211
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
{% if site.data.resume.affiliation.size > 0 %}
|
2
|
+
<div class="row affiliation section" id="affiliation">
|
3
|
+
<div class="col-12">
|
4
|
+
<h2 class="section-heading">Affiliation</h2>
|
5
|
+
|
6
|
+
{% for affiliation in site.data.resume.affiliation %}
|
7
|
+
<div class="affiliation-entry entry {% if affiliation == site.data.resume.affiliation.last %}last{% endif %}">
|
8
|
+
<div class="row title">
|
9
|
+
<div class="organization col-sm-8">
|
10
|
+
<h3>
|
11
|
+
{% if affiliation.url %}
|
12
|
+
<a href="{{affiliation.url}}">{{affiliation.organization}}</a>
|
13
|
+
{% else %}
|
14
|
+
{{affiliation.organization}}
|
15
|
+
{% endif %}
|
16
|
+
</h3>
|
17
|
+
</div>
|
18
|
+
<div class="col-sm-4 right">
|
19
|
+
{% capture dates %}{{ affiliation.startDate }}{% if affiliation.startDate.size > 0 and affiliation.endDate.size > 0 %} - {% endif %} {{affiliation.endDate}}{%endcapture%}
|
20
|
+
{{ dates }}
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div class="row subtitle">
|
25
|
+
<div class="col-sm-6">
|
26
|
+
{{ affiliation.category }}
|
27
|
+
</div>
|
28
|
+
<div class="col-sm-6 right">
|
29
|
+
{{ affiliation.location }}
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
{% if affiliation.summary %}
|
34
|
+
<div class="summary row">
|
35
|
+
{{affiliation.summary}}
|
36
|
+
</div>
|
37
|
+
{% endif %}
|
38
|
+
|
39
|
+
{% if affiliation.keywords %}
|
40
|
+
<div class="keywords row">
|
41
|
+
{% for keyword in affiliation.keywords %}
|
42
|
+
<span class="keyword tag col-12">
|
43
|
+
{{ keyword }}
|
44
|
+
</span>
|
45
|
+
{% endfor %}
|
46
|
+
</div>
|
47
|
+
{% endif %}
|
48
|
+
|
49
|
+
</div>
|
50
|
+
{% endfor %}
|
51
|
+
</div>
|
52
|
+
</div>
|
53
|
+
{% endif %}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
{% if site.data.resume.basics.size > 0 %}
|
2
|
+
<div class="row basics section" id="basics">
|
3
|
+
<div class="col-12">
|
4
|
+
{% if site.data.resume.basics.name %}
|
5
|
+
<h1 class="name">{{ site.data.resume.basics.name }}</h1>
|
6
|
+
{% endif %}
|
7
|
+
|
8
|
+
{% if site.data.resume.basics.label %}
|
9
|
+
<h2 class="label">{{ site.data.resume.basics.label }}</h2>
|
10
|
+
{% endif %}
|
11
|
+
|
12
|
+
{% if site.data.resume.basics.summary %}
|
13
|
+
<div class="summary">
|
14
|
+
{{ site.data.resume.basics.summary }}
|
15
|
+
</div>
|
16
|
+
{% endif %}
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
{% endif %}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
{% if site.data.resume.basics.contact.size > 0 %}
|
2
|
+
<div class="row contact">
|
3
|
+
<div class="col-12">
|
4
|
+
<h2 class="section-heading">Contact</h2>
|
5
|
+
{% if site.data.resume.basics.contact.email %}
|
6
|
+
<div class="email">
|
7
|
+
{{ site.data.resume.basics.contact.email }}
|
8
|
+
</div>
|
9
|
+
{% endif %}
|
10
|
+
{% if site.data.resume.basics.contact.phone %}
|
11
|
+
<div class="phone">
|
12
|
+
{{ site.data.resume.basics.contact.phone }}
|
13
|
+
</div>
|
14
|
+
{% endif %}
|
15
|
+
{% if site.data.resume.basics.contact.website %}
|
16
|
+
<div class="website">
|
17
|
+
<a href="{{ site.data.resume.basics.contact.website }}">{{ site.data.resume.basics.contact.website }}</a>
|
18
|
+
</div>
|
19
|
+
{% endif %}
|
20
|
+
{% if site.data.resume.basics.contact.location %}
|
21
|
+
<div class="location">
|
22
|
+
{{ site.data.resume.basics.contact.location }}
|
23
|
+
</div>
|
24
|
+
{% endif %}
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
{% endif %}
|