resme 1.0.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.org +15 -0
- data/CODE_OF_CONDUCT.org +16 -0
- data/LICENSE.txt +1 -1
- data/README.org +19 -129
- data/Rakefile +11 -1
- data/TAGS +83 -0
- data/exe/resme +2 -2
- data/lib/resme/cli.rb +80 -0
- data/lib/resme/document.rb +37 -0
- data/lib/resme/document_validator.rb +308 -0
- data/lib/resme/executor.rb +90 -0
- data/lib/resme/helper.rb +211 -0
- data/lib/resme/json_resume.rb +156 -0
- data/lib/resme/version.rb +1 -2
- data/lib/resme.rb +20 -5
- data/sig/resme.rbs +4 -0
- data/templates/json.erb +1 -0
- data/templates/org.erb +217 -0
- data/{lib/resme/templates → templates}/resume.yml +38 -33
- metadata +22 -53
- data/.gitignore +0 -8
- data/Gemfile +0 -6
- data/Gemfile.lock +0 -20
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/lib/resme/cli/command_semantics.rb +0 -198
- data/lib/resme/cli/command_syntax.rb +0 -282
- data/lib/resme/cli/resume_structure_validator.rb +0 -293
- data/lib/resme/renderer/renderer.rb +0 -134
- data/lib/resme/templates/resume.json.erb +0 -155
- data/lib/resme/templates/resume.md.erb +0 -160
- data/lib/resme/templates/resume.org.erb +0 -205
- data/resme.gemspec +0 -34
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Resme
|
|
4
|
+
#
|
|
5
|
+
# Export to JSON resume
|
|
6
|
+
#
|
|
7
|
+
class JsonResume
|
|
8
|
+
include Helper
|
|
9
|
+
|
|
10
|
+
def initialize(document)
|
|
11
|
+
@document = document
|
|
12
|
+
@data = document.data
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def build
|
|
16
|
+
address = @data[:addresses]&.first || {}
|
|
17
|
+
|
|
18
|
+
{
|
|
19
|
+
"basics": {
|
|
20
|
+
"name": full_name(@data),
|
|
21
|
+
"label": @data[:basics][:title],
|
|
22
|
+
"image": "",
|
|
23
|
+
"email": select(@data[:contacts], label: :email),
|
|
24
|
+
"phone": select(@data[:contacts], label: :phone),
|
|
25
|
+
"url": select(@data[:web_presence], label: :url),
|
|
26
|
+
"summary": @data[:summary],
|
|
27
|
+
"location": {
|
|
28
|
+
"address": address[:street],
|
|
29
|
+
"postalCode": address[:postal_code].to_s,
|
|
30
|
+
"city": address[:city],
|
|
31
|
+
"countryCode": address[:country_code],
|
|
32
|
+
"region": address[:region]
|
|
33
|
+
}.compact,
|
|
34
|
+
"profiles": @data[:web_presence].map do |kv|
|
|
35
|
+
{
|
|
36
|
+
"network": kv[:label],
|
|
37
|
+
"username": kv[:value],
|
|
38
|
+
# "url":
|
|
39
|
+
}
|
|
40
|
+
end.compact
|
|
41
|
+
}.compact,
|
|
42
|
+
|
|
43
|
+
"work": @data[:work].map do |job|
|
|
44
|
+
{
|
|
45
|
+
"name": job[:name],
|
|
46
|
+
"position": job[:position],
|
|
47
|
+
"url": job[:url],
|
|
48
|
+
"startDate": complete_date(job[:date] || job[:start_date]),
|
|
49
|
+
"endDate": complete_date(job[:date] || job[:end_date]),
|
|
50
|
+
"summary": job[:summary],
|
|
51
|
+
"highlights": split_highlights(job[:details])
|
|
52
|
+
}.compact
|
|
53
|
+
end,
|
|
54
|
+
|
|
55
|
+
"volunteer": (@data[:volunteer] || []).map do |job|
|
|
56
|
+
{
|
|
57
|
+
"organization": job[:name],
|
|
58
|
+
"position": job[:position],
|
|
59
|
+
"startDate": complete_date(job[:date] || job[:start_date]),
|
|
60
|
+
"endDate": complete_date(job[:date] || job[:end_date]),
|
|
61
|
+
"summary": job[:summary],
|
|
62
|
+
"highlights": split_highlights(job[:details])
|
|
63
|
+
}.compact
|
|
64
|
+
end,
|
|
65
|
+
|
|
66
|
+
"education": (@data[:education].select { |x| x[:publish] } || []).map do |job|
|
|
67
|
+
{
|
|
68
|
+
"institution": job[:school],
|
|
69
|
+
"url": job[:url],
|
|
70
|
+
"area": job[:topic],
|
|
71
|
+
"studyType": job[:degree],
|
|
72
|
+
"startDate": complete_date(job[:date] || job[:start_date]),
|
|
73
|
+
"endDate": complete_date(job[:date] || job[:end_date]),
|
|
74
|
+
"score": job[:score],
|
|
75
|
+
"courses": []
|
|
76
|
+
}.compact
|
|
77
|
+
end,
|
|
78
|
+
|
|
79
|
+
"awards": (@data[:awards] || []).map do |job|
|
|
80
|
+
{
|
|
81
|
+
"title": job[:title],
|
|
82
|
+
"date": complete_date(job[:date]),
|
|
83
|
+
"awarder": job[:name],
|
|
84
|
+
"summary": job[:summary]
|
|
85
|
+
}.compact
|
|
86
|
+
end,
|
|
87
|
+
|
|
88
|
+
"certificates": [],
|
|
89
|
+
|
|
90
|
+
"publications": (@data[:publications] || []).map do |job|
|
|
91
|
+
{
|
|
92
|
+
"name": [job[:title], job[:authors]].compact.join(", "),
|
|
93
|
+
"publisher": job[:publisher],
|
|
94
|
+
"releaseDate": complete_date(job[:date]),
|
|
95
|
+
"url": job[:url],
|
|
96
|
+
"summary": ""
|
|
97
|
+
}.compact
|
|
98
|
+
end,
|
|
99
|
+
|
|
100
|
+
"skills": (@data[:skills] || []).map do |job|
|
|
101
|
+
{
|
|
102
|
+
"name": job[:name],
|
|
103
|
+
"level": job[:level],
|
|
104
|
+
"keywords": split_highlights(job[:summary])
|
|
105
|
+
}.compact
|
|
106
|
+
end,
|
|
107
|
+
|
|
108
|
+
"languages": (@data.dig(:languages, :mother_tongues) || []).map do |job|
|
|
109
|
+
{
|
|
110
|
+
"language": job[:language],
|
|
111
|
+
"fluency": "Native speaker"
|
|
112
|
+
}.compact
|
|
113
|
+
end + (@data.dig(:languages, :foreign) || []).map do |job|
|
|
114
|
+
{
|
|
115
|
+
"language": job[:language],
|
|
116
|
+
"fluency": job[:level]
|
|
117
|
+
}.compact
|
|
118
|
+
end,
|
|
119
|
+
|
|
120
|
+
"interests": (@data[:interests] || []).map do |job|
|
|
121
|
+
{
|
|
122
|
+
"name": job[:name],
|
|
123
|
+
"keywords": split_highlights(job[:summary])
|
|
124
|
+
}.compact
|
|
125
|
+
end,
|
|
126
|
+
|
|
127
|
+
"references": (@data[:references] || []).map do |job|
|
|
128
|
+
{
|
|
129
|
+
"name": job[:name],
|
|
130
|
+
"reference": job[:reference]
|
|
131
|
+
}.compact
|
|
132
|
+
end,
|
|
133
|
+
|
|
134
|
+
"projects": (@data[:projects] || []).map do |job|
|
|
135
|
+
{
|
|
136
|
+
"name": job[:name],
|
|
137
|
+
"url": job[:url],
|
|
138
|
+
"startDate": complete_date(job[:date] || job[:start_date]),
|
|
139
|
+
"endDate": complete_date(job[:date] || job[:end_date]),
|
|
140
|
+
"description": job[:summary],
|
|
141
|
+
"highlights": []
|
|
142
|
+
}.compact
|
|
143
|
+
end
|
|
144
|
+
}.compact
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
private
|
|
148
|
+
|
|
149
|
+
# make a string with an itemized list into an array of the items
|
|
150
|
+
def split_highlights(highlights)
|
|
151
|
+
(highlights || "").split(/^ *- /)
|
|
152
|
+
.map { |x| x.gsub("\n", "") }
|
|
153
|
+
.reject { |x| x == "" }
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|
data/lib/resme/version.rb
CHANGED
data/lib/resme.rb
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require "
|
|
4
|
-
require "
|
|
5
|
-
require "
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "classy_hash"
|
|
4
|
+
require "date"
|
|
5
|
+
require "erb"
|
|
6
|
+
require "fileutils"
|
|
7
|
+
require "json"
|
|
8
|
+
require "optionparser"
|
|
9
|
+
require "yaml"
|
|
10
|
+
|
|
11
|
+
require_relative "resme/version"
|
|
12
|
+
require_relative "resme/helper"
|
|
13
|
+
|
|
14
|
+
require_relative "resme/cli"
|
|
15
|
+
require_relative "resme/document"
|
|
16
|
+
require_relative "resme/document_validator"
|
|
17
|
+
require_relative "resme/json_resume"
|
|
18
|
+
require_relative "resme/executor"
|
|
19
|
+
require_relative "resme/version"
|
|
20
|
+
|
data/sig/resme.rbs
ADDED
data/templates/json.erb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= JSON.pretty_generate @json_resume %>
|
data/templates/org.erb
ADDED
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
#+TITLE: Curriculum Vitae
|
|
2
|
+
#+AUTHOR: <%= full_name @data %>, <%= @data[:basics][:title] %>
|
|
3
|
+
#+EMAIL: <%= select @data[:contacts], label: :email %>
|
|
4
|
+
#+DATE: <<%= Date.today %>>
|
|
5
|
+
#+STARTUP: showall
|
|
6
|
+
#+OPTIONS: toc:nil num:nil
|
|
7
|
+
#+OPTIONS: h:1
|
|
8
|
+
#+OPTIONS: prop:nil
|
|
9
|
+
|
|
10
|
+
<% if @data[:addresses] || @data[:contacts] || @data[:web_presence] %>
|
|
11
|
+
* Contacts
|
|
12
|
+
:PROPERTIES:
|
|
13
|
+
<% (@data[:addresses] || []).each do |x| -%>
|
|
14
|
+
<%= ":#{x[:label].upcase}: #{x[:street]}, #{x[:postal_code]} #{x[:city]}" %>
|
|
15
|
+
<% end -%>
|
|
16
|
+
<% (@data[:contacts] || []).each do |x| -%>
|
|
17
|
+
<%= ":#{x[:label].upcase}: #{x[:value]}" %>
|
|
18
|
+
<% end -%>
|
|
19
|
+
:END:
|
|
20
|
+
|
|
21
|
+
<% (@data[:contacts] || []).each do |x| -%>
|
|
22
|
+
| <%= "%-30s" % x[:label] %> | <%= "%-40s" % x[:value] %> |
|
|
23
|
+
<% end -%>
|
|
24
|
+
<% (@data[:web_presence] || []).each do |x| -%>
|
|
25
|
+
| <%= "%-30s" % x[:label] %> | <%= "%-40s" % x[:value] %> |
|
|
26
|
+
<% end -%>
|
|
27
|
+
<% end -%>
|
|
28
|
+
|
|
29
|
+
<% if @data[:summary] -%>
|
|
30
|
+
* Summary
|
|
31
|
+
|
|
32
|
+
<%= reflow_s @data[:summary] -%>
|
|
33
|
+
<% end -%>
|
|
34
|
+
|
|
35
|
+
<% if @data[:skills] -%>
|
|
36
|
+
* Skills
|
|
37
|
+
|
|
38
|
+
<% (@data[:skills] || []).each do |item| -%>
|
|
39
|
+
** <%= item[:name] %>: <%= item[:level] %>
|
|
40
|
+
<%= propertify item %>
|
|
41
|
+
|
|
42
|
+
<% end %>
|
|
43
|
+
<% end -%>
|
|
44
|
+
|
|
45
|
+
<% if @data[:work] -%>
|
|
46
|
+
* Work Experience
|
|
47
|
+
|
|
48
|
+
<% (@data[:work] || []).each do |item| -%>
|
|
49
|
+
** <%= period item %>: <%= clean [item[:position], item[:name]].join(", ") %>
|
|
50
|
+
<%= propertify item %>
|
|
51
|
+
|
|
52
|
+
<%= reflow_s item[:summary] -%>
|
|
53
|
+
|
|
54
|
+
<% end -%>
|
|
55
|
+
<% end -%>
|
|
56
|
+
|
|
57
|
+
<% if @data[:teaching] -%>
|
|
58
|
+
* Teaching
|
|
59
|
+
|
|
60
|
+
<% (@data[:teaching] || []).each do |item| -%>
|
|
61
|
+
|
|
62
|
+
** <%= period item %>: <%= item[:subject] %>
|
|
63
|
+
<%= propertify item %>
|
|
64
|
+
|
|
65
|
+
<%- string = [item[:position], item[:school], item[:name]].compact.join(", ") %>
|
|
66
|
+
<%= reflow_s string %>
|
|
67
|
+
|
|
68
|
+
<% end -%>
|
|
69
|
+
<% end -%>
|
|
70
|
+
|
|
71
|
+
<% if @data[:projects] -%>
|
|
72
|
+
* Projects
|
|
73
|
+
|
|
74
|
+
<% (@data[:projects] || []).each do |item| -%>
|
|
75
|
+
|
|
76
|
+
** <%= period item %>: <%= [item[:name], item[:position]].join(", ") %>
|
|
77
|
+
<%= propertify item %>
|
|
78
|
+
|
|
79
|
+
<%= reflow_s item[:summary] -%>
|
|
80
|
+
|
|
81
|
+
<% end -%>
|
|
82
|
+
<% end -%>
|
|
83
|
+
|
|
84
|
+
<% if @data[:other] -%>
|
|
85
|
+
* Other
|
|
86
|
+
|
|
87
|
+
<% (@data[:other] || []).each do |item| -%>
|
|
88
|
+
|
|
89
|
+
** <%= period item %>: <%= [item[:name], item[:position]].join(", ") %>
|
|
90
|
+
<%= propertify item %>
|
|
91
|
+
|
|
92
|
+
<%= reflow_s item[:summary] -%>
|
|
93
|
+
|
|
94
|
+
<% end -%>
|
|
95
|
+
<% end -%>
|
|
96
|
+
|
|
97
|
+
<% if @data[:committees] -%>
|
|
98
|
+
* Committees
|
|
99
|
+
|
|
100
|
+
<% (@data[:committees] || []).each do |item| -%>
|
|
101
|
+
|
|
102
|
+
** <%= item[:name] %>, <%= item[:position] %> <%= item[:editions] %>
|
|
103
|
+
<%= propertify item %>
|
|
104
|
+
|
|
105
|
+
<% end -%>
|
|
106
|
+
<% end -%>
|
|
107
|
+
|
|
108
|
+
<% if @data[:volunteer] -%>
|
|
109
|
+
* Volunteer
|
|
110
|
+
|
|
111
|
+
<% (@data[:volunteer] || []).each do |item| -%>
|
|
112
|
+
|
|
113
|
+
** *<%= period item %>: <%= [item[:position], item[:name]].join(", ") %>*
|
|
114
|
+
<%= propertify item %>
|
|
115
|
+
|
|
116
|
+
<%= reflow_s item[:summary] -%>
|
|
117
|
+
|
|
118
|
+
<% end -%>
|
|
119
|
+
<% end -%>
|
|
120
|
+
|
|
121
|
+
<% if @data[:publications] -%>
|
|
122
|
+
* Publications
|
|
123
|
+
|
|
124
|
+
<% (@data[:publications] || []).each do |item| -%>
|
|
125
|
+
- <%= item[:authors] %>, *"<%= item[:title] %>"*
|
|
126
|
+
<%= item[:publisher] %>, <%= item[:date] %>
|
|
127
|
+
<% end -%>
|
|
128
|
+
<% end -%>
|
|
129
|
+
|
|
130
|
+
<% if @data[:talks] -%>
|
|
131
|
+
* Talks
|
|
132
|
+
|
|
133
|
+
<% (@data[:talks] || []).each do |item| -%>
|
|
134
|
+
- <%= item[:title] %>
|
|
135
|
+
<%= item[:venue] %>
|
|
136
|
+
(<%= item[:date] %>)
|
|
137
|
+
<% end -%>
|
|
138
|
+
<% end -%>
|
|
139
|
+
|
|
140
|
+
<% if @data[:visits] -%>
|
|
141
|
+
* Visits
|
|
142
|
+
|
|
143
|
+
<% (@data[:visits] || []).each do |item| -%>
|
|
144
|
+
|
|
145
|
+
** *<%= period item %>: <%= [item[:position], item[:name], item[:address]].join(", ") %>*
|
|
146
|
+
<%= propertify item %>
|
|
147
|
+
|
|
148
|
+
<%= reflow_s item[:summary] -%>
|
|
149
|
+
|
|
150
|
+
<% end -%>
|
|
151
|
+
<% end -%>
|
|
152
|
+
|
|
153
|
+
<% if @data[:education] -%>
|
|
154
|
+
* Education
|
|
155
|
+
|
|
156
|
+
<% @data[:education].select { |x| x[:publish] }.each do |item| -%>
|
|
157
|
+
|
|
158
|
+
** *<%= year(item[:end_date]) %>: <%= [item[:degree], item[:school], item[:address]].join(", ") %>*
|
|
159
|
+
<%= propertify item %>
|
|
160
|
+
|
|
161
|
+
<% end -%>
|
|
162
|
+
<% end -%>
|
|
163
|
+
|
|
164
|
+
<% [:awards, :achievements].each do |group| -%>
|
|
165
|
+
<% if @data[group] -%>
|
|
166
|
+
* <%= group.capitalize %>
|
|
167
|
+
|
|
168
|
+
<% (group || []).each do |item| -%>
|
|
169
|
+
|
|
170
|
+
** <%= item[:date] %>: <%= [item[:title], item[:name], item[:address]].join(", ") %>
|
|
171
|
+
<%= propertify item %>
|
|
172
|
+
|
|
173
|
+
<%= reflow_s item[:summary] -%>
|
|
174
|
+
|
|
175
|
+
<% end -%>
|
|
176
|
+
<% end -%>
|
|
177
|
+
<% end -%>
|
|
178
|
+
|
|
179
|
+
<% if @data[:software] %>
|
|
180
|
+
* Software
|
|
181
|
+
|
|
182
|
+
<% (@data[:software] || []).each do |item| -%>
|
|
183
|
+
- <%= item[:title] %> (<%= item[:position] %>)
|
|
184
|
+
<%= item[:url] %>
|
|
185
|
+
<% end -%>
|
|
186
|
+
<% end -%>
|
|
187
|
+
|
|
188
|
+
<% if @data[:interests] -%>
|
|
189
|
+
* Interests
|
|
190
|
+
|
|
191
|
+
<% (@data[:interests] || []).each do |item| -%>
|
|
192
|
+
- *<%= item[:name] %>:* <%= reflow_s item[:summary] %>
|
|
193
|
+
<% end -%>
|
|
194
|
+
<% end -%>
|
|
195
|
+
|
|
196
|
+
<% if @data[:languages] %>
|
|
197
|
+
* Languages
|
|
198
|
+
|
|
199
|
+
<% if @data[:languages] and @data[:languages][:mother_tongues] -%>
|
|
200
|
+
- Mother Tongue(s): <%= @data[:languages][:mother_tongues].map { |x| x[:language] }.join(",") %>
|
|
201
|
+
<% end -%>
|
|
202
|
+
<% if @data[:languages] and @data[:languages][:foreign] -%>
|
|
203
|
+
- Other Language(s):
|
|
204
|
+
<% @data[:languages][:foreign].each do |x| -%>
|
|
205
|
+
+ <%= x[:language] %>: <%= x[:level] %>
|
|
206
|
+
<% end -%>
|
|
207
|
+
<% end -%>
|
|
208
|
+
<% end -%>
|
|
209
|
+
|
|
210
|
+
<% if @data[:references] %>
|
|
211
|
+
* References
|
|
212
|
+
|
|
213
|
+
<% (@data[:references] || []).each do |item| -%>
|
|
214
|
+
<%= item[:name] %>:
|
|
215
|
+
<%= reflow_s item[:reference], indent: 0 %>
|
|
216
|
+
<% end -%>
|
|
217
|
+
<% end -%>
|
|
@@ -41,8 +41,10 @@ contacts:
|
|
|
41
41
|
addresses:
|
|
42
42
|
- label:
|
|
43
43
|
street:
|
|
44
|
-
|
|
44
|
+
postal_code:
|
|
45
45
|
city:
|
|
46
|
+
region:
|
|
47
|
+
country_code:
|
|
46
48
|
country:
|
|
47
49
|
|
|
48
50
|
# this is your presence on the net
|
|
@@ -56,6 +58,8 @@ web_presence:
|
|
|
56
58
|
#
|
|
57
59
|
# if you write a multi-line entry don't forget to use ">-" or "|-"
|
|
58
60
|
# (see the YAML documentation for more information)
|
|
61
|
+
#
|
|
62
|
+
# |- has the advntage of preserving paragraphs.
|
|
59
63
|
summary:
|
|
60
64
|
|
|
61
65
|
#
|
|
@@ -69,24 +73,24 @@ summary:
|
|
|
69
73
|
|
|
70
74
|
# work experience
|
|
71
75
|
work:
|
|
72
|
-
-
|
|
73
|
-
|
|
76
|
+
- name:
|
|
77
|
+
url:
|
|
74
78
|
address:
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
79
|
+
end_date:
|
|
80
|
+
start_date:
|
|
81
|
+
position:
|
|
78
82
|
summary:
|
|
79
83
|
details:
|
|
80
84
|
|
|
81
85
|
# teaching experience
|
|
82
86
|
teaching:
|
|
83
|
-
-
|
|
87
|
+
- name:
|
|
84
88
|
school:
|
|
85
89
|
address:
|
|
86
|
-
|
|
90
|
+
position:
|
|
87
91
|
subject:
|
|
88
|
-
|
|
89
|
-
|
|
92
|
+
end_date:
|
|
93
|
+
start_date:
|
|
90
94
|
summary:
|
|
91
95
|
details:
|
|
92
96
|
|
|
@@ -94,42 +98,42 @@ teaching:
|
|
|
94
98
|
projects:
|
|
95
99
|
- name:
|
|
96
100
|
size:
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
+
stakeholder:
|
|
102
|
+
position:
|
|
103
|
+
start_date:
|
|
104
|
+
end_date:
|
|
101
105
|
summary:
|
|
102
106
|
|
|
103
107
|
# other experiences
|
|
104
108
|
other:
|
|
105
|
-
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
+
- name:
|
|
110
|
+
end_date:
|
|
111
|
+
start_date:
|
|
112
|
+
position:
|
|
109
113
|
summary:
|
|
110
114
|
|
|
111
115
|
# participation to committees (e.g. program committees in conferences)
|
|
112
116
|
committees:
|
|
113
|
-
-
|
|
114
|
-
|
|
117
|
+
- name:
|
|
118
|
+
position:
|
|
115
119
|
editions:
|
|
116
120
|
url:
|
|
117
121
|
|
|
118
122
|
# work as volunteer
|
|
119
123
|
volunteer:
|
|
120
|
-
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
+
- name:
|
|
125
|
+
end_date:
|
|
126
|
+
start_date:
|
|
127
|
+
position:
|
|
124
128
|
summary:
|
|
125
129
|
|
|
126
130
|
# mobility programs and other similar initiatives (e.g., Erasmus grants)
|
|
127
131
|
visits:
|
|
128
|
-
-
|
|
132
|
+
- name:
|
|
129
133
|
address:
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
134
|
+
position:
|
|
135
|
+
end_date:
|
|
136
|
+
start_date:
|
|
133
137
|
summary:
|
|
134
138
|
|
|
135
139
|
# education and degrees
|
|
@@ -139,8 +143,9 @@ education:
|
|
|
139
143
|
topic:
|
|
140
144
|
school:
|
|
141
145
|
address:
|
|
142
|
-
|
|
143
|
-
|
|
146
|
+
end_date:
|
|
147
|
+
start_date:
|
|
148
|
+
url:
|
|
144
149
|
publish: yes
|
|
145
150
|
|
|
146
151
|
# publications
|
|
@@ -160,7 +165,7 @@ talks:
|
|
|
160
165
|
|
|
161
166
|
# any award
|
|
162
167
|
awards:
|
|
163
|
-
-
|
|
168
|
+
- name:
|
|
164
169
|
address:
|
|
165
170
|
date:
|
|
166
171
|
title:
|
|
@@ -168,7 +173,7 @@ awards:
|
|
|
168
173
|
|
|
169
174
|
# any interesting achievement you want to highlight?
|
|
170
175
|
achievements:
|
|
171
|
-
-
|
|
176
|
+
- name:
|
|
172
177
|
address:
|
|
173
178
|
date:
|
|
174
179
|
title:
|
|
@@ -181,7 +186,7 @@ software:
|
|
|
181
186
|
url:
|
|
182
187
|
programming_language:
|
|
183
188
|
license:
|
|
184
|
-
|
|
189
|
+
position:
|
|
185
190
|
summary:
|
|
186
191
|
|
|
187
192
|
# what are your skills?
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: resme
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Adolfo Villafiorita
|
|
@@ -13,44 +13,16 @@ dependencies:
|
|
|
13
13
|
name: classy_hash
|
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
|
15
15
|
requirements:
|
|
16
|
-
- - "
|
|
16
|
+
- - ">="
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version:
|
|
18
|
+
version: '0'
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
|
-
- - "
|
|
23
|
+
- - ">="
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version:
|
|
26
|
-
- !ruby/object:Gem::Dependency
|
|
27
|
-
name: bundler
|
|
28
|
-
requirement: !ruby/object:Gem::Requirement
|
|
29
|
-
requirements:
|
|
30
|
-
- - "~>"
|
|
31
|
-
- !ruby/object:Gem::Version
|
|
32
|
-
version: 2.3.20
|
|
33
|
-
type: :development
|
|
34
|
-
prerelease: false
|
|
35
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
-
requirements:
|
|
37
|
-
- - "~>"
|
|
38
|
-
- !ruby/object:Gem::Version
|
|
39
|
-
version: 2.3.20
|
|
40
|
-
- !ruby/object:Gem::Dependency
|
|
41
|
-
name: rake
|
|
42
|
-
requirement: !ruby/object:Gem::Requirement
|
|
43
|
-
requirements:
|
|
44
|
-
- - "~>"
|
|
45
|
-
- !ruby/object:Gem::Version
|
|
46
|
-
version: 13.0.6
|
|
47
|
-
type: :development
|
|
48
|
-
prerelease: false
|
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
-
requirements:
|
|
51
|
-
- - "~>"
|
|
52
|
-
- !ruby/object:Gem::Version
|
|
53
|
-
version: 13.0.6
|
|
25
|
+
version: '0'
|
|
54
26
|
description: 'This gem allows you to manage your resume in YAML, while providing different
|
|
55
27
|
backends for publishings. Supported backends: Org Mode, Markdown, JSON resume,
|
|
56
28
|
and Europass XML. Custom templates can be defined using ERB.'
|
|
@@ -61,33 +33,31 @@ executables:
|
|
|
61
33
|
extensions: []
|
|
62
34
|
extra_rdoc_files: []
|
|
63
35
|
files:
|
|
64
|
-
- ".gitignore"
|
|
65
36
|
- CHANGELOG.org
|
|
66
|
-
-
|
|
67
|
-
- Gemfile.lock
|
|
37
|
+
- CODE_OF_CONDUCT.org
|
|
68
38
|
- LICENSE.txt
|
|
69
39
|
- README.org
|
|
70
40
|
- Rakefile
|
|
71
|
-
-
|
|
72
|
-
- bin/setup
|
|
41
|
+
- TAGS
|
|
73
42
|
- exe/resme
|
|
74
43
|
- lib/resme.rb
|
|
75
|
-
- lib/resme/cli
|
|
76
|
-
- lib/resme/
|
|
77
|
-
- lib/resme/
|
|
78
|
-
- lib/resme/
|
|
79
|
-
- lib/resme/
|
|
80
|
-
- lib/resme/
|
|
81
|
-
- lib/resme/templates/resume.org.erb
|
|
82
|
-
- lib/resme/templates/resume.yml
|
|
44
|
+
- lib/resme/cli.rb
|
|
45
|
+
- lib/resme/document.rb
|
|
46
|
+
- lib/resme/document_validator.rb
|
|
47
|
+
- lib/resme/executor.rb
|
|
48
|
+
- lib/resme/helper.rb
|
|
49
|
+
- lib/resme/json_resume.rb
|
|
83
50
|
- lib/resme/version.rb
|
|
84
|
-
- resme.
|
|
85
|
-
|
|
51
|
+
- sig/resme.rbs
|
|
52
|
+
- templates/json.erb
|
|
53
|
+
- templates/org.erb
|
|
54
|
+
- templates/resume.yml
|
|
55
|
+
homepage: https://github.com/avillafiorita/resme
|
|
86
56
|
licenses:
|
|
87
57
|
- MIT
|
|
88
58
|
metadata:
|
|
89
59
|
allowed_push_host: https://rubygems.org/
|
|
90
|
-
homepage_uri:
|
|
60
|
+
homepage_uri: https://github.com/avillafiorita/resme
|
|
91
61
|
source_code_uri: https://github.com/avillafiorita/resme
|
|
92
62
|
changelog_uri: https://github.com/avillafiorita/resme/CHANGELOG.org
|
|
93
63
|
rdoc_options: []
|
|
@@ -97,15 +67,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
97
67
|
requirements:
|
|
98
68
|
- - ">="
|
|
99
69
|
- !ruby/object:Gem::Version
|
|
100
|
-
version: 2.
|
|
70
|
+
version: 3.2.0
|
|
101
71
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
102
72
|
requirements:
|
|
103
73
|
- - ">="
|
|
104
74
|
- !ruby/object:Gem::Version
|
|
105
75
|
version: '0'
|
|
106
76
|
requirements: []
|
|
107
|
-
rubygems_version: 3.6.
|
|
77
|
+
rubygems_version: 3.6.9
|
|
108
78
|
specification_version: 4
|
|
109
|
-
summary:
|
|
110
|
-
XML.
|
|
79
|
+
summary: Keep your resume in YML and export to various formats
|
|
111
80
|
test_files: []
|