resme 2.0.0 → 2.1.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.
@@ -0,0 +1,372 @@
1
+ /* Europass "Timeline" Template - Shair.Tech Palette Edition */
2
+
3
+ @import url('https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,600;0,700;1,400;1,600&display=swap');
4
+
5
+ :root {
6
+ --shair-blue-dark: #0f2d4a;
7
+ --shair-blue-medium: #163a5f;
8
+ --shair-green-main: #22a06b;
9
+ --shair-green-dark: #1b7a52;
10
+ --shair-green-light: #e8f6f0;
11
+ --shair-bg-sidebar: #f4f8fa;
12
+ --shair-border: #d0dbe5;
13
+ --timeline-line-color: #cbd5e1;
14
+
15
+ --text-dark: #232c33;
16
+ --text-muted: #5a6872;
17
+ --white: #ffffff;
18
+ }
19
+
20
+ * {
21
+ box-sizing: border-box;
22
+ margin: 0;
23
+ padding: 0;
24
+ }
25
+
26
+ body {
27
+ font-family: 'Open Sans', Arial, Helvetica, sans-serif;
28
+ font-size: 13px;
29
+ line-height: 1.5;
30
+ color: var(--text-dark);
31
+ background-color: #eaedf1;
32
+ }
33
+
34
+ /* Outer Container Setup */
35
+ .container {
36
+ display: flex;
37
+ max-width: 960px;
38
+ margin: 30px auto;
39
+ background-color: var(--white);
40
+ box-shadow: 0 4px 20px rgba(15, 45, 74, 0.08);
41
+ border-radius: 6px;
42
+ position: relative;
43
+ overflow: hidden;
44
+ min-height: 100vh;
45
+ }
46
+
47
+ /* Europass Logo - Positioned Top Right */
48
+ .container::after {
49
+ content: "";
50
+ position: absolute;
51
+ top: 25px;
52
+ right: 35px;
53
+ width: 170px;
54
+ height: 40px;
55
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 60'%3E%3C!-- EU Flag --%3E%3Crect width='60' height='40' y='10' fill='%230f2d4a' rx='2'/%3E%3Cg fill='%2322a06b'%3E%3Cpolygon points='30,14 30.8,16.5 33.4,16.5 31.3,18 32.1,20.5 30,19 27.9,20.5 28.7,18 26.6,16.5 29.2,16.5'/%3E%3Cpolygon points='30,40 30.8,42.5 33.4,42.5 31.3,44 32.1,46.5 30,45 27.9,46.5 28.7,44 26.6,42.5 29.2,42.5'/%3E%3Cpolygon points='17,27 17.8,29.5 20.4,29.5 18.3,31 19.1,33.5 17,32 14.9,33.5 15.7,31 13.6,29.5 16.2,29.5'/%3E%3Cpolygon points='43,27 43.8,29.5 46.4,29.5 44.3,31 45.1,33.5 43,32 40.9,33.5 41.7,31 39.6,29.5 42.2,29.5'/%3E%3Cpolygon points='20.5,17.5 21.3,20 23.9,20 21.8,21.5 22.6,24 20.5,22.5 18.4,24 19.2,21.5 17.1,20 19.7,20'/%3E%3Cpolygon points='39.5,17.5 40.3,20 42.9,20 40.8,21.5 41.6,24 39.5,22.5 37.4,24 38.2,21.5 36.1,20 38.7,20'/%3E%3Cpolygon points='20.5,36.5 21.3,39 23.9,39 21.8,40.5 22.6,43 20.5,41.5 18.4,43 19.2,40.5 17.1,39 19.7,39'/%3E%3Cpolygon points='39.5,36.5 40.3,39 42.9,39 40.8,40.5 41.6,43 39.5,41.5 37.4,43 38.2,40.5 36.1,39 38.7,39'/%3E%3Cpolygon points='13.5,21 14.3,23.5 16.9,23.5 14.8,25 15.6,27.5 13.5,26 11.4,27.5 12.2,25 10.1,23.5 12.7,23.5'/%3E%3Cpolygon points='46.5,21 47.3,23.5 49.9,23.5 47.8,25 48.6,27.5 46.5,26 44.4,27.5 45.2,25 43.1,23.5 45.7,23.5'/%3E%3Cpolygon points='13.5,33 14.3,35.5 16.9,35.5 14.8,37 15.6,39.5 13.5,38 11.4,39.5 12.2,37 10.1,35.5 12.7,35.5'/%3E%3Cpolygon points='46.5,33 47.3,35.5 49.9,35.5 47.8,37 48.6,39.5 46.5,38 44.4,39.5 45.2,37 43.1,35.5 45.7,35.5'/%3E%3C/g%3E%3C!-- Europass Text --%3E%3Cg transform='translate(75, 2)'%3E%3Cpath fill='%2322a06b' d='M23.1 11.2C13.2 11.2 5 18.3 3.2 28h13.2c1.5-3.3 5-5.6 9-5.6 5.5 0 10 4.5 10 10s-4.5 10-10 10c-4 0-7.5-2.3-9-5.6H3.2c1.8 9.7 10 16.8 19.9 16.8 11.2 0 20.3-9.1 20.3-20.3S34.3 11.2 23.1 11.2z'/%3E%3Cpath fill='%230f2d4a' d='M62.4 12.1h-8.8v31.1h8.8V12.1zm21.3 0h-8.8v18.7c0 4.1-2.9 6.2-6.2 6.2s-6.2-2.1-6.2-6.2V12.1h-8.8v19.4c0 8.3 5.9 12.4 15 12.4s15-4.1 15-12.4V12.1zm17.9 11.7c-5.3 0-8.8 3.8-8.8 9.5s3.5 9.5 8.8 9.5 8.8-3.8 8.8-9.5zm0-6.6c10.1 0 17.6 7 17.6 16.1s-7.5 16.1-17.6 16.1S84 32.4 84 23.3s7.5-16.1 17.6-16.1zm29.8 6.6c-4.8 0-8 3.5-8 8.8s3.2 8.8 8 8.8 8-3.5 8-8.8-3.2-8.8-8-8.8zm-16.8-11.7h8.8v4.5c2.3-3.4 6.2-5.1 10.7-5.1 8.5 0 14.8 6.2 14.8 15.6s-6.3 15.6-14.8 15.6c-4.5 0-8.4-1.7-10.7-5.1v12h-8.8V12.1zm59.2 11.7c-4.8 0-8 3.5-8 8.8s3.2 8.8 8 8.8 8-3.5 8-8.8-3.2-8.8-8-8.8zm-16.8-11.7h8.8v4.5c2.3-3.4 6.2-5.1 10.7-5.1 8.5 0 14.8 6.2 14.8 15.6s-6.3 15.6-14.8 15.6c-4.5 0-8.4-1.7-10.7-5.1v4.5h-8.8V12.1z'/%3E%3C/g%3E%3C/svg%3E");
56
+ background-repeat: no-repeat;
57
+ background-size: contain;
58
+ z-index: 10;
59
+ }
60
+
61
+ /* Left Sidebar Layout */
62
+ .contact-information {
63
+ width: 32%;
64
+ background-color: var(--shair-bg-sidebar);
65
+ padding: 35px 22px;
66
+ border-right: 1px solid var(--shair-border);
67
+ }
68
+
69
+ .contact-information .fullname-title {
70
+ display: none;
71
+ }
72
+
73
+ .contact-information h2 {
74
+ font-size: 13px;
75
+ font-weight: 700;
76
+ text-transform: uppercase;
77
+ color: var(--shair-blue-dark);
78
+ letter-spacing: 0.6px;
79
+ border-bottom: 2px solid var(--shair-green-main);
80
+ padding-bottom: 4px;
81
+ margin-bottom: 15px;
82
+ }
83
+
84
+ .contact-information .section {
85
+ margin-bottom: 24px;
86
+ }
87
+
88
+ .contact-information .item {
89
+ margin-bottom: 12px;
90
+ word-break: break-word;
91
+ }
92
+
93
+ .contact-information .label {
94
+ display: block;
95
+ font-size: 11px;
96
+ font-weight: 700;
97
+ text-transform: capitalize;
98
+ color: var(--shair-green-dark);
99
+ }
100
+
101
+ .contact-information .value {
102
+ font-size: 12.5px;
103
+ color: var(--text-dark);
104
+ }
105
+
106
+ .contact-information .value .street,
107
+ .contact-information .value .postal-code,
108
+ .contact-information .value .city {
109
+ display: block;
110
+ }
111
+
112
+ /* Right Main Area */
113
+ .main {
114
+ width: 68%;
115
+ padding: 35px 40px;
116
+ background-color: var(--white);
117
+ }
118
+
119
+ .main .fullname-title {
120
+ font-size: 26px;
121
+ font-weight: 700;
122
+ color: var(--shair-blue-dark);
123
+ letter-spacing: 0.2px;
124
+ margin-bottom: 30px;
125
+ padding-right: 180px; /* Leave space for top-right logo */
126
+ border-bottom: 3px solid var(--shair-green-main);
127
+ padding-bottom: 10px;
128
+ }
129
+
130
+ .main .section {
131
+ margin-bottom: 30px;
132
+ position: relative;
133
+ }
134
+
135
+ .main h2 {
136
+ font-size: 14.5px;
137
+ font-weight: 700;
138
+ color: var(--shair-blue-medium);
139
+ text-transform: uppercase;
140
+ border-bottom: 1.5px solid var(--shair-border);
141
+ padding-bottom: 4px;
142
+ margin-bottom: 20px;
143
+ }
144
+
145
+ /* Timeline Specific Structure */
146
+ .work-experiences.section,
147
+ .teachings.section,
148
+ .projects.section,
149
+ .education.section,
150
+ .volunteer.section,
151
+ .other.section,
152
+ .visits.section {
153
+ position: relative;
154
+ padding-left: 20px;
155
+ }
156
+
157
+ /* Timeline Vertical Line */
158
+ .work-experiences.section::before,
159
+ .teachings.section::before,
160
+ .projects.section::before,
161
+ .education.section::before,
162
+ .volunteer.section::before,
163
+ .other.section::before,
164
+ .visits.section::before {
165
+ content: "";
166
+ position: absolute;
167
+ top: 32px;
168
+ bottom: 10px;
169
+ left: 5px;
170
+ width: 2px;
171
+ background-color: var(--timeline-line-color);
172
+ }
173
+
174
+ .main .item,
175
+ .main .visit {
176
+ margin-bottom: 20px;
177
+ position: relative;
178
+ }
179
+
180
+ /* Timeline Node Bullet Points */
181
+ .work-experiences .item::before,
182
+ .teachings .item::before,
183
+ .projects .item::before,
184
+ .education .education-item::before,
185
+ .volunteer .volunteer-item::before,
186
+ .other .item::before,
187
+ .visits .visit::before {
188
+ content: "";
189
+ position: absolute;
190
+ left: -20px;
191
+ top: 4px;
192
+ width: 10px;
193
+ height: 10px;
194
+ border-radius: 50%;
195
+ background-color: var(--shair-green-main);
196
+ border: 2px solid var(--white);
197
+ box-shadow: 0 0 0 2px var(--shair-green-main);
198
+ z-index: 2;
199
+ }
200
+
201
+ /* Timeline Period / Badge Elements */
202
+ .period,
203
+ .year,
204
+ .date {
205
+ display: inline-block;
206
+ font-weight: 700;
207
+ font-size: 11.5px;
208
+ color: var(--shair-green-dark);
209
+ background-color: var(--shair-green-light);
210
+ border: 1px solid rgba(34, 160, 107, 0.25);
211
+ padding: 1px 9px;
212
+ border-radius: 12px;
213
+ margin-bottom: 5px;
214
+ }
215
+
216
+ .position,
217
+ .degree,
218
+ .subject {
219
+ font-size: 14px;
220
+ font-weight: 700;
221
+ color: var(--shair-blue-dark);
222
+ }
223
+
224
+ .name,
225
+ .school,
226
+ .venue,
227
+ .publisher {
228
+ font-size: 13px;
229
+ font-weight: 600;
230
+ color: var(--shair-blue-medium);
231
+ }
232
+
233
+ .authors {
234
+ font-style: italic;
235
+ color: var(--text-muted);
236
+ }
237
+
238
+ .address {
239
+ font-size: 12px;
240
+ color: var(--text-muted);
241
+ }
242
+
243
+ .summary {
244
+ margin-top: 5px;
245
+ font-size: 12.5px;
246
+ color: var(--text-dark);
247
+ }
248
+
249
+ .summary p {
250
+ margin-bottom: 6px;
251
+ }
252
+
253
+ .summary p:last-child {
254
+ margin-bottom: 0;
255
+ }
256
+
257
+ /* Languages Section Styling */
258
+ .languages .item {
259
+ margin-bottom: 10px;
260
+ }
261
+
262
+ .mother-tongue,
263
+ .foreign-language {
264
+ display: flex;
265
+ align-items: center;
266
+ justify-content: space-between;
267
+ border-bottom: 1px dashed var(--shair-border);
268
+ padding: 4px 0;
269
+ }
270
+
271
+ .language {
272
+ font-weight: 600;
273
+ text-transform: capitalize;
274
+ }
275
+
276
+ .level {
277
+ font-size: 11px;
278
+ font-weight: 700;
279
+ text-transform: uppercase;
280
+ color: var(--shair-green-dark);
281
+ background-color: var(--shair-green-light);
282
+ border: 1px solid rgba(34, 160, 107, 0.25);
283
+ padding: 1px 8px;
284
+ border-radius: 10px;
285
+ }
286
+
287
+ .level:empty {
288
+ display: none;
289
+ }
290
+
291
+ /* Committees Section */
292
+ .committee.item {
293
+ display: flex;
294
+ justify-content: space-between;
295
+ align-items: center;
296
+ border-bottom: 1px dashed var(--shair-border);
297
+ padding-bottom: 4px;
298
+ }
299
+
300
+ .committee .editions {
301
+ font-size: 12px;
302
+ font-weight: 600;
303
+ color: var(--shair-green-dark);
304
+ }
305
+
306
+ /* Print Specific Rules with White Sidebar Background */
307
+ @media print {
308
+ @page {
309
+ size: A4;
310
+ margin: 12mm 15mm;
311
+ }
312
+
313
+ body {
314
+ background-color: var(--white);
315
+ font-size: 11px;
316
+ -webkit-print-color-adjust: exact;
317
+ print-color-adjust: exact;
318
+ }
319
+
320
+ .container {
321
+ max-width: 100%;
322
+ margin: 0;
323
+ box-shadow: none;
324
+ border: none;
325
+ border-radius: 0;
326
+ min-height: auto;
327
+ }
328
+
329
+ .container::after {
330
+ top: 0;
331
+ right: 0;
332
+ width: 140px;
333
+ height: 32px;
334
+ }
335
+
336
+ .contact-information {
337
+ width: 30%;
338
+ padding: 0 15px 0 0;
339
+ background-color: var(--white) !important;
340
+ border-right: 1px solid var(--shair-border);
341
+ }
342
+
343
+ .main {
344
+ width: 70%;
345
+ padding: 0 0 0 20px;
346
+ }
347
+
348
+ .main .fullname-title {
349
+ font-size: 20px;
350
+ padding-right: 140px;
351
+ margin-bottom: 15px;
352
+ }
353
+
354
+ .main .section {
355
+ margin-bottom: 14px;
356
+ page-break-inside: avoid;
357
+ }
358
+
359
+ .main .item,
360
+ .main .visit {
361
+ page-break-inside: avoid;
362
+ margin-bottom: 12px;
363
+ }
364
+
365
+ .period,
366
+ .year,
367
+ .date,
368
+ .level {
369
+ background-color: var(--shair-green-light) !important;
370
+ border: 1px solid rgba(34, 160, 107, 0.25) !important;
371
+ }
372
+ }
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: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adolfo Villafiorita
@@ -23,9 +23,9 @@ dependencies:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
25
  version: '0'
26
- description: 'This gem allows you to manage your resume in YAML, while providing different
27
- backends for publishings. Supported backends: Org Mode, Markdown, JSON resume,
28
- and Europass XML. Custom templates can be defined using ERB.'
26
+ description: Manage your resume in YAML and publish with Org Mode or JSON resume.Org
27
+ Mode provides HTML, TXT, LaTeX, Markdown exports.JSON Resume comes with many ready-made
28
+ templates.
29
29
  email:
30
30
  - adolfo@shair.tech
31
31
  executables:
@@ -38,7 +38,6 @@ files:
38
38
  - LICENSE.txt
39
39
  - README.org
40
40
  - Rakefile
41
- - TAGS
42
41
  - exe/resme
43
42
  - lib/resme.rb
44
43
  - lib/resme/cli.rb
@@ -49,8 +48,17 @@ files:
49
48
  - lib/resme/json_resume.rb
50
49
  - lib/resme/version.rb
51
50
  - sig/resme.rbs
51
+ - templates/html.erb
52
52
  - templates/json.erb
53
53
  - templates/org.erb
54
+ - templates/resume-bauhaus.css
55
+ - templates/resume-default.css
56
+ - templates/resume-futurism.css
57
+ - templates/resume-kyver.css
58
+ - templates/resume-modern-light.css
59
+ - templates/resume-modern.css
60
+ - templates/resume-shair.tech.css
61
+ - templates/resume-timeline.css
54
62
  - templates/resume.yml
55
63
  homepage: https://github.com/avillafiorita/resme
56
64
  licenses:
data/TAGS DELETED
@@ -1,83 +0,0 @@
1
-
2
- /home/adolfo/Sources/ruby/resme/lib/resme/document.rb,292
3
- module ResmeResme3,31
4
- class DocumentDocument7,88
5
- attr_reader :filename, :datafilename8,105
6
- attr_reader :filename, :datadata8,105
7
- def initialize(filename)initialize10,139
8
- def dig(*keys)dig16,292
9
- def fetch(*keys, default)fetch21,422
10
- def loadload27,502
11
-
12
- /home/adolfo/Sources/ruby/resme/test/test_helper.rb,0
13
-
14
- /home/adolfo/Sources/ruby/resme/test/test_resme.rb,200
15
- class TestResme < Minitest::TestTestResme5,54
16
- def test_that_it_has_a_version_numbertest_that_it_has_a_version_number6,87
17
- def test_it_does_something_usefultest_it_does_something_useful10,166
18
-
19
- /home/adolfo/Sources/ruby/resme/templates/org.erb,0
20
-
21
- /home/adolfo/Sources/ruby/resme/lib/resme.rb,0
22
-
23
- /home/adolfo/Sources/ruby/resme/templates/json.erb,0
24
-
25
- /home/adolfo/Sources/ruby/resme/lib/resme/document_validator.rb,421
26
- module ResmeResme3,31
27
- class DocumentValidatorDocumentValidator7,76
28
- def initialize(document)initialize8,102
29
- def validatevalidate12,167
30
- OPTIONAL_STRING = [:optional, String, NilClass]OPTIONAL_STRING32,626
31
- OPTIONAL_PARTIAL_DATE = [:optional, Date, String, Integer, NilClass]OPTIONAL_PARTIAL_DATE33,678
32
- PARTIAL_DATE = [Date, String, Integer]PARTIAL_DATE34,751
33
- SCHEMA = {SCHEMA40,891
34
-
35
- /home/adolfo/Sources/ruby/resme/lib/resme/helper.rb,990
36
- module ResmeResme3,31
37
- module HelperHelper7,87
38
- def clean(string)clean9,178
39
- def full_name(data)full_name13,250
40
- def reflow_a(string, line_break: 78)reflow_a33,855
41
- def blank?(char)blank?68,2023
42
- def reflow_s(string, line_break: 75, delimiter: "\n", indent: 3)reflow_s75,2256
43
- def period(entry, date: :date, from: :start_date, to: :end_date, separator: "--")period100,3229
44
- def itemize(entry, header: %i[role who address], summary_key: :summary)itemize125,3984
45
- def propertify(entry, except: %i[summary details], indent: 3)propertify136,4430
46
- def select(contacts, label: :email)select146,4731
47
- def format_date(date, format: "%Y-%m-%d")format_date162,5262
48
- def complete_date(incomplete_date, format: "%Y-%m-%d")complete_date166,5376
49
- def year(input)year181,5784
50
- def month(input)month186,5902
51
- def day(input)day191,6019
52
- def y?(input)y?196,6161
53
- def ym?(input)ym?201,6280
54
- def ymd?(input)ymd?206,6398
55
-
56
- /home/adolfo/Sources/ruby/resme/lib/resme/json_resume.rb,196
57
- module ResmeResme3,31
58
- class JsonResumeJsonResume7,78
59
- def initialize(document)initialize10,121
60
- def buildbuild15,214
61
- def split_highlights(highlights)split_highlights150,4552
62
-
63
- /home/adolfo/Sources/ruby/resme/lib/resme/version.rb,57
64
- module ResmeResme3,31
65
- VERSION = "2.0.0"VERSION4,44
66
-
67
- /home/adolfo/Sources/ruby/resme/lib/resme/cli.rb,218
68
- module ResmeResme3,31
69
- class CliCli7,75
70
- attr_reader :optionsoptions8,87
71
- def initialize(arguments)initialize10,113
72
- def parseparse15,257
73
- def commandcommand20,332
74
- def parserparser26,391
75
-
76
- /home/adolfo/Sources/ruby/resme/lib/resme/executor.rb,294
77
- module ResmeResme3,31
78
- class ExecutorExecutor4,44
79
- def initialize(input)initialize8,124
80
- def executeexecute14,234
81
- def output_filename(format)output_filename76,2176
82
- def backup(filename)backup80,2264
83
- def backup_and_write(filename, content)backup_and_write85,2405