kamisaku 0.3.2 → 0.3.4

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.
@@ -2,419 +2,524 @@
2
2
  <head>
3
3
  <meta content="text/html; charset=UTF-8" http-equiv="content-type">
4
4
  <style>
5
- /* latin */
6
- @font-face {
7
- font-family: 'Cambria';
8
- font-style: normal;
9
- font-weight: 400;
10
- src: url(https://fonts.gstatic.com/l/font?kit=GFDqWAB9jnWLT-HIK7ILrphaOAw&skey=d4699178559bc4b0&v=v18) format('woff2');
11
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
12
- }
13
5
 
14
- /* latin */
15
- @font-face {
16
- font-family: 'Cambria';
17
- font-style: normal;
18
- font-weight: 700;
19
- src: url(https://fonts.gstatic.com/l/font?kit=GFDvWAB9jnWLT-HIIwkuu7V4NSY7WWA&skey=5202a3b6f5388b49&v=v18) format('woff2');
20
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
6
+ /*
7
+ print and print-preview styles.
8
+ To use:
9
+ <body>
10
+ <div class="paper">
11
+ All the template content should go here...
12
+ </div>
13
+ </body>
14
+ */
15
+ @page {
16
+ margin: 0 auto;
17
+ padding: 0.5in;
18
+ size: A4;
19
+ }
20
+ @media screen {
21
+ body {
22
+ background: #e0e0e0;
21
23
  }
22
24
 
23
- /* cyrillic */
24
- @font-face {
25
- font-family: 'Garamond';
26
- font-style: normal;
27
- font-weight: 400;
28
- src: url(https://fonts.gstatic.com/l/font?kit=XoHl2Y_-T6Oo88RDZSQOn9IDlDLo&skey=a3a4b3361b12223a&v=v18) format('woff2');
29
- unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
25
+ .paper {
26
+ padding: 0.5in;
30
27
  }
31
-
32
- /* greek */
33
- @font-face {
34
- font-family: 'Garamond';
35
- font-style: normal;
36
- font-weight: 400;
37
- src: url(https://fonts.gstatic.com/l/font?kit=XoHl2Y_-T6Oo88RDZSQJn9IDlDLo&skey=a3a4b3361b12223a&v=v18) format('woff2');
38
- unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
28
+ }
29
+ @media screen, print {
30
+ .paper {
31
+ background: white;
32
+ margin: 0 auto;
33
+ width: 210mm;
34
+ height: 100%;
39
35
  }
40
-
41
- /* latin-ext */
42
- @font-face {
43
- font-family: 'Garamond';
44
- font-style: normal;
45
- font-weight: 400;
46
- src: url(https://fonts.gstatic.com/l/font?kit=XoHl2Y_-T6Oo88RDZSQEn9IDlDLo&skey=a3a4b3361b12223a&v=v18) format('woff2');
47
- unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
36
+ }
37
+
38
+ body {
39
+ font-family: "Cambria", serif;
40
+ color: #000;
41
+ font-size: 12pt;
42
+ }
43
+
44
+ /* latin */
45
+ @font-face {
46
+ font-family: 'Cambria';
47
+ font-style: normal;
48
+ font-weight: 400;
49
+ src: url(https://fonts.gstatic.com/l/font?kit=GFDqWAB9jnWLT-HIK7ILrphaOAw&skey=d4699178559bc4b0&v=v18) format('woff2');
50
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
51
+ }
52
+
53
+ /* latin */
54
+ @font-face {
55
+ font-family: 'Cambria';
56
+ font-style: normal;
57
+ font-weight: 700;
58
+ src: url(https://fonts.gstatic.com/l/font?kit=GFDvWAB9jnWLT-HIIwkuu7V4NSY7WWA&skey=5202a3b6f5388b49&v=v18) format('woff2');
59
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
60
+ }
61
+
62
+ /* cyrillic */
63
+ @font-face {
64
+ font-family: 'Garamond';
65
+ font-style: normal;
66
+ font-weight: 400;
67
+ src: url(https://fonts.gstatic.com/l/font?kit=XoHl2Y_-T6Oo88RDZSQOn9IDlDLo&skey=a3a4b3361b12223a&v=v18) format('woff2');
68
+ unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
69
+ }
70
+
71
+ /* greek */
72
+ @font-face {
73
+ font-family: 'Garamond';
74
+ font-style: normal;
75
+ font-weight: 400;
76
+ src: url(https://fonts.gstatic.com/l/font?kit=XoHl2Y_-T6Oo88RDZSQJn9IDlDLo&skey=a3a4b3361b12223a&v=v18) format('woff2');
77
+ unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
78
+ }
79
+
80
+ /* latin-ext */
81
+ @font-face {
82
+ font-family: 'Garamond';
83
+ font-style: normal;
84
+ font-weight: 400;
85
+ src: url(https://fonts.gstatic.com/l/font?kit=XoHl2Y_-T6Oo88RDZSQEn9IDlDLo&skey=a3a4b3361b12223a&v=v18) format('woff2');
86
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
87
+ }
88
+
89
+ /* latin */
90
+ @font-face {
91
+ font-family: 'Garamond';
92
+ font-style: normal;
93
+ font-weight: 400;
94
+ src: url(https://fonts.gstatic.com/l/font?kit=XoHl2Y_-T6Oo88RDZSQKn9IDlDLo&skey=a3a4b3361b12223a&v=v18) format('woff2');
95
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
96
+ }
97
+
98
+ /* cyrillic */
99
+ @font-face {
100
+ font-family: 'Garamond';
101
+ font-style: normal;
102
+ font-weight: 700;
103
+ src: url(https://fonts.gstatic.com/l/font?kit=XoHi2Y_-T6Oo88RDZSyxuscqtj_C8ibe&skey=66cb3cbedfd2039d&v=v18) format('woff2');
104
+ unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
105
+ }
106
+
107
+ /* greek */
108
+ @font-face {
109
+ font-family: 'Garamond';
110
+ font-style: normal;
111
+ font-weight: 700;
112
+ src: url(https://fonts.gstatic.com/l/font?kit=XoHi2Y_-T6Oo88RDZSyxuscttj_C8ibe&skey=66cb3cbedfd2039d&v=v18) format('woff2');
113
+ unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
114
+ }
115
+
116
+ /* latin-ext */
117
+ @font-face {
118
+ font-family: 'Garamond';
119
+ font-style: normal;
120
+ font-weight: 700;
121
+ src: url(https://fonts.gstatic.com/l/font?kit=XoHi2Y_-T6Oo88RDZSyxuscgtj_C8ibe&skey=66cb3cbedfd2039d&v=v18) format('woff2');
122
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
123
+ }
124
+
125
+ /* latin */
126
+ @font-face {
127
+ font-family: 'Garamond';
128
+ font-style: normal;
129
+ font-weight: 700;
130
+ src: url(https://fonts.gstatic.com/l/font?kit=XoHi2Y_-T6Oo88RDZSyxuscutj_C8ibe&skey=66cb3cbedfd2039d&v=v18) format('woff2');
131
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
132
+ }
133
+
134
+ a {
135
+ color: #000000;
136
+ }
137
+
138
+ a:link {
139
+ text-decoration: none;
140
+ }
141
+
142
+ a:visited {
143
+ text-decoration: none;
144
+ }
145
+
146
+ a:hover {
147
+ text-decoration: none;
148
+ }
149
+
150
+ a:active {
151
+ text-decoration: none;
152
+ }
153
+
154
+ .bottom-ruler {
155
+ border-bottom-color: #000000;
156
+ border-bottom-width: 0.8pt;
157
+ padding-bottom: 2pt;
158
+ border-bottom-style: solid;
159
+ }
160
+
161
+ .upcase {
162
+ text-transform: uppercase;
163
+ }
164
+
165
+ .flex {
166
+ display: flex;
167
+ }
168
+
169
+ .flex-grow {
170
+ flex-grow: 1;
171
+ }
172
+
173
+ .flex-col {
174
+ flex-direction: column;
175
+ }
176
+
177
+ .sb {
178
+ justify-content: space-between;
179
+ }
180
+
181
+ .nowrap {
182
+ white-space: nowrap;
183
+ }
184
+
185
+ .contact-section {
186
+ .name {
187
+ font-size: 24pt;
188
+ font-weight: 700;
189
+ font-family: "Garamond";
48
190
  }
49
191
 
50
- /* latin */
51
- @font-face {
52
- font-family: 'Garamond';
53
- font-style: normal;
54
- font-weight: 400;
55
- src: url(https://fonts.gstatic.com/l/font?kit=XoHl2Y_-T6Oo88RDZSQKn9IDlDLo&skey=a3a4b3361b12223a&v=v18) format('woff2');
56
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
192
+ .contact {
193
+ font-size: 14pt;
194
+ font-weight: 400;
195
+ font-family: "Garamond";
196
+ text-align: center;
197
+ padding-top: 6pt;
198
+ padding-bottom: 6pt;
57
199
  }
58
200
 
59
- /* cyrillic */
60
- @font-face {
61
- font-family: 'Garamond';
62
- font-style: normal;
63
- font-weight: 700;
64
- src: url(https://fonts.gstatic.com/l/font?kit=XoHi2Y_-T6Oo88RDZSyxuscqtj_C8ibe&skey=66cb3cbedfd2039d&v=v18) format('woff2');
65
- unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
201
+ span {
202
+ white-space: nowrap;
66
203
  }
204
+ }
67
205
 
68
- /* greek */
69
- @font-face {
70
- font-family: 'Garamond';
71
- font-style: normal;
72
- font-weight: 700;
73
- src: url(https://fonts.gstatic.com/l/font?kit=XoHi2Y_-T6Oo88RDZSyxuscttj_C8ibe&skey=66cb3cbedfd2039d&v=v18) format('woff2');
74
- unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
75
- }
206
+ .summary {
207
+ margin-top: 12pt;
76
208
 
77
- /* latin-ext */
78
- @font-face {
79
- font-family: 'Garamond';
80
- font-style: normal;
81
- font-weight: 700;
82
- src: url(https://fonts.gstatic.com/l/font?kit=XoHi2Y_-T6Oo88RDZSyxuscgtj_C8ibe&skey=66cb3cbedfd2039d&v=v18) format('woff2');
83
- unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
209
+ .section-title {
210
+ font-weight: bold;
211
+ margin-bottom: 12pt;
84
212
  }
85
213
 
86
- /* latin */
87
- @font-face {
88
- font-family: 'Garamond';
89
- font-style: normal;
90
- font-weight: 700;
91
- src: url(https://fonts.gstatic.com/l/font?kit=XoHi2Y_-T6Oo88RDZSyxuscutj_C8ibe&skey=66cb3cbedfd2039d&v=v18) format('woff2');
92
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
214
+ .about {
215
+ color: #000000;
216
+ font-weight: 400;
217
+ text-decoration: none;
218
+ vertical-align: baseline;
219
+ font-size: 12pt;
220
+ font-family: "Garamond";
221
+ font-style: normal;
222
+ text-align: justify;
93
223
  }
94
224
 
95
- @page {
96
- margin: 0;
97
- padding: 0.5in;
98
- size: 8.3in 11.7in;
99
- }
225
+ }
100
226
 
101
- body {
102
- font-family: "Cambria", serif;
103
- color: #000;
104
- font-size: 12pt;
105
- }
227
+ .work-experience {
228
+ margin-top: 12pt;
106
229
 
107
- ul {
108
- padding-left: 20px;
109
- margin-top: 2pt;
230
+ .section-title {
231
+ font-weight: bold;
110
232
  }
111
233
 
112
- li {
113
-
114
- }
115
-
116
- a {
117
- color: #000000;
118
- }
119
-
120
- a:link {
121
- text-decoration: none;
122
- }
123
-
124
- a:visited {
125
- text-decoration: none;
126
- }
127
-
128
- a:hover {
129
- text-decoration: none;
130
- }
234
+ .experience {
235
+ margin-top: 12pt;
131
236
 
132
- a:active {
133
- text-decoration: none;
134
- }
237
+ .organisation-name, .time-period {
238
+ font-weight: 700;
239
+ font-family: "Garamond";
240
+ }
241
+
242
+ .achievements {
243
+ .achievement-item {
244
+ color: #000000;
245
+ font-weight: 400;
246
+ text-decoration: none;
247
+ vertical-align: baseline;
248
+ font-size: 12pt;
249
+ font-family: "Garamond";
250
+ font-style: normal;
251
+ text-align: justify;
252
+ }
253
+ }
135
254
 
136
- .bottom-ruler {
137
- border-bottom-color: #000000;
138
- border-bottom-width: 0.8pt;
139
- padding-bottom: 2pt;
140
- border-bottom-style: solid;
141
- }
255
+ .job-title {
256
+ font-style: italic;
257
+ }
142
258
 
143
- .upcase {
144
- text-transform: uppercase;
259
+ .job-title, .job-location {
260
+ font-weight: 400;
261
+ font-family: "Garamond";
262
+ }
145
263
  }
264
+ }
146
265
 
147
- .flex {
148
- display: flex;
149
- }
266
+ .education {
267
+ margin-top: 12pt;
150
268
 
151
- .flex-grow {
152
- flex-grow: 1;
269
+ .section-title {
270
+ font-weight: bold;
153
271
  }
154
272
 
155
- .sb {
156
- justify-content: space-between;
157
- }
273
+ .education-item {
274
+ margin-top: 12pt;
158
275
 
159
- .contact-section {
160
- .name {
161
- font-size: 24pt;
162
- font-weight: 700;
163
- font-family: "Garamond";
164
- }
276
+ .institute-name, .time-period {
277
+ font-weight: 700;
278
+ font-family: "Garamond";
279
+ }
165
280
 
166
- .contact {
167
- font-size: 16pt;
168
- font-weight: 400;
169
- font-family: "Garamond";
281
+ .qualification {
282
+ font-style: italic;
283
+ }
170
284
 
171
- a:not(:last-child)::after {
172
- content: " |";
173
- }
285
+ .qualification, .education-location {
286
+ font-weight: 400;
287
+ font-family: "Garamond";
288
+ }
289
+
290
+ .achievements {
291
+ .achievement-item {
292
+ color: #000000;
293
+ font-weight: 400;
294
+ text-decoration: none;
295
+ vertical-align: baseline;
296
+ font-size: 12pt;
297
+ font-family: "Garamond";
298
+ font-style: normal;
299
+ text-align: justify;
174
300
  }
301
+ }
302
+ }
303
+ }
304
+
305
+ .projects {
306
+ margin-top: 12pt;
307
+ color: #000000;
308
+ font-weight: 400;
309
+ text-decoration: none;
310
+ vertical-align: baseline;
311
+ font-size: 12pt;
312
+ font-family: "Garamond";
313
+
314
+ .section-title {
315
+ font-weight: bold;
175
316
  }
176
317
 
177
- .summary {
178
- margin-top: 12pt;
318
+ .project {
319
+ margin-top: 12pt;
179
320
 
180
- .section-title {
181
- font-weight: bold;
182
- }
321
+ .project-name {
322
+ font-weight: 700;
323
+ font-family: "Garamond";
324
+ }
183
325
 
184
- .about {
185
- color: #000000;
186
- font-weight: 400;
187
- text-decoration: none;
188
- vertical-align: baseline;
189
- font-size: 12pt;
190
- font-family: "Garamond";
191
- font-style: normal;
192
- text-align: justify;
193
- }
326
+ .project-description, .technologies {
327
+ font-style: normal;
328
+ padding-top: 2pt;
329
+ }
194
330
 
331
+ .link {
332
+ padding-top: 6pt;
333
+ }
195
334
  }
335
+ }
196
336
 
197
- .work-experience {
198
- margin-top: 12pt;
199
-
200
- .section-title {
201
- font-weight: bold;
202
- }
337
+ .generic-section {
338
+ margin-top: 12pt;
203
339
 
204
- .experience {
205
- margin-top: 12pt;
206
-
207
- .organisation-name, .time-period {
208
- font-weight: 700;
209
- font-family: "Garamond";
210
- }
211
-
212
- .achievements {
213
- .achievement-item {
214
- color: #000000;
215
- font-weight: 400;
216
- text-decoration: none;
217
- vertical-align: baseline;
218
- font-size: 12pt;
219
- font-family: "Garamond";
220
- font-style: normal;
221
- text-align: justify;
222
- }
223
- }
224
-
225
- .job-title, .job-location {
226
- font-style: italic;
227
- font-weight: 400;
228
- font-family: "Garamond";
229
- }
230
- }
340
+ .section-title {
341
+ font-weight: bold;
342
+ margin-bottom: 12pt;
231
343
  }
232
344
 
233
- .education {
234
- margin-top: 12pt;
235
-
236
- .section-title {
237
- font-weight: bold;
238
- }
239
-
240
- .education-item {
241
- margin-top: 12pt;
242
-
243
- .institute-name, .time-period {
244
- font-weight: 700;
245
- font-family: "Garamond";
246
- }
247
-
248
- .qualification, .education-location {
249
- font-style: italic;
250
- font-weight: 400;
251
- font-family: "Garamond";
252
- }
253
-
254
- .achievements {
255
- .achievement-item {
256
- color: #000000;
257
- font-weight: 400;
258
- text-decoration: none;
259
- vertical-align: baseline;
260
- font-size: 12pt;
261
- font-family: "Garamond";
262
- font-style: normal;
263
- text-align: justify;
264
- }
265
- }
266
- }
345
+ ul {
346
+ padding-left: 0;
347
+ list-style-type: none;
267
348
  }
268
349
 
269
- .generic-section {
270
- margin-top: 12pt;
271
-
272
- .section-title {
273
- font-weight: bold;
274
- margin-bottom: 12pt;
275
- }
276
-
277
- .item {
278
- color: #000000;
279
- font-weight: 400;
280
- text-decoration: none;
281
- vertical-align: baseline;
282
- font-size: 12pt;
283
- font-family: "Garamond";
284
- }
350
+ .item {
351
+ margin-top: 2pt;
352
+ color: #000000;
353
+ font-weight: 400;
354
+ text-decoration: none;
355
+ vertical-align: baseline;
356
+ font-size: 12pt;
357
+ font-family: "Garamond";
285
358
  }
359
+ }
286
360
  </style>
287
361
  </head>
288
- <body>
289
- <% if (profile = data[:profile]) %>
290
- <div class="bottom-ruler contact-section">
291
- <div class="name bottom-ruler"><%= profile.dig(:name) %></div>
292
- <% if (contact = data[:contact]) %>
293
- <div class="contact">
294
- <% if (email = contact[:email]) %>
295
- <a href="mailto:<%= email %>"><%= email %></a>
296
- <% end %>
362
+ <div class="paper">
363
+ <% if (profile = data[:profile]) %>
364
+ <div class="bottom-ruler contact-section">
365
+ <div class="name bottom-ruler"><%= profile.dig(:name) %></div>
366
+ <% if (contact = data[:contact]) %>
367
+ <div class="contact">
368
+ <% if (email = contact[:email]) %>
369
+ <span> • <a href="mailto:<%= email %>"><%= email %></a></span>
370
+ <% end %>
297
371
 
298
- <% if (mobile = contact[:mobile]) %>
299
- <a href="tel:<%= mobile %>"><%= mobile %></a>
300
- <% end %>
372
+ <% if (mobile = contact[:mobile]) %>
373
+ <span> • <a href="tel:<%= mobile %>"><%= mobile %></a></span>
374
+ <% end %>
301
375
 
302
- <% if (city = contact.dig(:location, :city)) || (country = contact.dig(:location, :country)) %>
303
- <%= "#{city}, #{country}".strip %>
304
- <% end %>
376
+ <% city = contact.dig(:location, :city); country = contact.dig(:location, :country) %>
377
+ <% if city || country %>
378
+ <span class="location"> • <%= city ? "#{city}, " : nil %><%= country ? country : nil %></span>
379
+ <% end %>
305
380
 
306
- <% if (website = contact[:website]) %>
307
- <a href="<%= website %>"><%= website %></a>
308
- <% end %>
381
+ <% if (website = contact[:website]) %>
382
+ <span> • <a href="<%= website %>"><%= website %></a></span>
383
+ <% end %>
309
384
 
310
- <% if (github = contact[:github]) %>
311
- <a href="https://github.com/<%= github %>">github.com/<%= github %></a>
312
- <% end %>
385
+ <% if (github = contact[:github]) %>
386
+ <span> • <a href="https://github.com/<%= github %>">github.com/<%= github %></a></span>
387
+ <% end %>
313
388
 
314
- <% if (linkedin = contact[:linkedin]) %>
315
- <a href="https://linkedin.com/in/<%= linkedin %>">linkedin.com/in/<%= linkedin %></a>
316
- <% end %>
317
- </div>
318
- <% end %>
319
- </div>
320
- <div class="summary">
321
- <div class="upcase bottom-ruler section-title">Summary</div>
322
- <div class="about"><%= profile[:about] %></div>
323
- </div>
324
- <% end %>
325
-
326
- <% if (experiences = data[:experiences]) %>
327
- <div class="work-experience">
328
- <div class="upcase bottom-ruler section-title">Work Experience</div>
329
- <% experiences.each do |experience| %>
330
- <div class="experience">
331
- <div class="flex flex-grow sb">
332
- <div class="organisation-name"><%= experience[:organisation] %></div>
333
- <div class="time-period">
334
- <%= "#{month_name experience.dig(:from, :month)} #{experience.dig(:from, :year)}" %> -
335
- <%= experience[:to] ? "#{month_name experience.dig(:to, :month)} #{experience.dig(:to, :year)}" : "Present" %>
336
- </div>
389
+ <% if (linkedin = contact[:linkedin]) %>
390
+ <span> • <a href="https://linkedin.com/in/<%= linkedin %>">linkedin.com/in/<%= linkedin %></a></span>
391
+ <% end %>
337
392
  </div>
338
-
339
- <div class="flex flex-grow sb">
340
- <div class="job-title"><%= experience[:title] %></div>
341
- <div class="job-location">
342
- <%= "#{experience.dig(:location, :city)}, #{experience.dig(:location, :country)}" %>
393
+ <% end %>
394
+ </div>
395
+ <div class="summary">
396
+ <div class="upcase bottom-ruler section-title">Summary</div>
397
+ <div class="about"><%= profile[:about] %></div>
398
+ </div>
399
+ <% end %>
400
+
401
+ <% if (experiences = data[:experiences]) %>
402
+ <div class="work-experience">
403
+ <div class="upcase bottom-ruler section-title">Work Experience</div>
404
+ <% experiences.each do |experience| %>
405
+ <div class="experience">
406
+ <div class="flex flex-grow sb">
407
+ <div class="organisation-name"><%= experience[:organisation] %></div>
408
+ <div class="time-period">
409
+ <%= "#{month_name experience.dig(:from, :month)} #{experience.dig(:from, :year)}" %> -
410
+ <%= experience[:to] ? "#{month_name experience.dig(:to, :month)} #{experience.dig(:to, :year)}" : "Present" %>
411
+ </div>
343
412
  </div>
344
- </div>
345
413
 
346
- <% if (achievements = experience[:achievements]) %>
347
- <ul class="achievements">
348
- <% achievements.each do |achievement| %>
349
- <li class="achievement-item"><%= achievement %></li>
350
- <% end %>
351
- </ul>
352
- <% end %>
353
- </div>
354
- <% end %>
355
- </div>
356
- <% end %>
357
-
358
- <% if (education_list = data[:education]) %>
359
- <div class="education">
360
- <div class="upcase bottom-ruler section-title">Education</div>
361
- <% education_list.each do |education| %>
362
- <div class="education-item">
363
- <div class="flex flex-grow sb">
364
- <div class="institute-name">
365
- <%= education[:institute] %>
366
- </div>
367
- <div class="time-period">
368
- <%= education.dig(:from) ? "#{month_name education.dig(:from, :month)} #{education.dig(:from, :year)} - " : "" %>
369
- <%= education.dig(:to) ? "#{month_name education.dig(:to, :month)} #{education.dig(:to, :year)}" : "Present" %>
414
+ <div class="flex flex-grow sb">
415
+ <div class="job-title"><%= experience[:title] %></div>
416
+ <div class="job-location">
417
+ <%= "#{experience.dig(:location, :city)}, #{experience.dig(:location, :country)}" %>
418
+ </div>
370
419
  </div>
420
+
421
+ <% if (achievements = experience[:achievements]) %>
422
+ <ul class="achievements">
423
+ <% achievements.each do |achievement| %>
424
+ <li class="achievement-item"><%= achievement %></li>
425
+ <% end %>
426
+ </ul>
427
+ <% end %>
371
428
  </div>
429
+ <% end %>
430
+ </div>
431
+ <% end %>
432
+
433
+ <% if (education_list = data[:education]) %>
434
+ <div class="education">
435
+ <div class="upcase bottom-ruler section-title">Education</div>
436
+ <% education_list.each do |education| %>
437
+ <div class="education-item">
438
+ <div class="flex flex-grow sb">
439
+ <div class="institute-name">
440
+ <%= education[:institute] %>
441
+ </div>
442
+ <div class="time-period">
443
+ <%= education.dig(:from) ? "#{month_name education.dig(:from, :month)} #{education.dig(:from, :year)} - " : "" %>
444
+ <%= education.dig(:to) ? "#{month_name education.dig(:to, :month)} #{education.dig(:to, :year)}" : "Present" %>
445
+ </div>
446
+ </div>
372
447
 
373
- <div class="flex flex-grow sb">
374
- <div class="qualification"><%= education[:qualification] %></div>
375
- <div class="education-location">
376
- <%= "#{education.dig(:location, :city)}, #{education.dig(:location, :country)}".strip %>
448
+ <div class="flex flex-grow sb">
449
+ <div class="qualification"><%= education[:qualification] %></div>
450
+ <div class="education-location">
451
+ <%= "#{education.dig(:location, :city)}, #{education.dig(:location, :country)}".strip %>
452
+ </div>
377
453
  </div>
378
- </div>
379
454
 
380
- <% if (achievements = education[:achievements]) %>
381
- <ul class="achievements">
382
- <% achievements.each do |achievement| %>
383
- <li class="achievement-item"><%= achievement %></li>
384
- <% end %>
385
- </ul>
386
- <% end %>
387
- </div>
388
- <% end %>
389
- </div>
390
- <% end %>
391
-
392
-
393
- <% if (generic_sections = data.slice(:skills, :interests).compact) %>
394
- <% show_subtitle = generic_sections.keys.size > 1 %>
395
- <div class="generic-section">
396
- <div class="upcase bottom-ruler section-title"><%= generic_sections.keys.map(&:capitalize).join(', ') %></div>
397
- <ul>
398
- <% if (skills = generic_sections[:skills]) %>
399
- <li class="item">
400
- <% if show_subtitle %>
401
- <b>Skills: </b>
455
+ <% if (achievements = education[:achievements]) %>
456
+ <ul class="achievements">
457
+ <% achievements.each do |achievement| %>
458
+ <li class="achievement-item"><%= achievement %></li>
459
+ <% end %>
460
+ </ul>
402
461
  <% end %>
403
- <%= skills.flat_map { |skill| skill[:items] }.join('; ') %>
404
- </li>
462
+ </div>
405
463
  <% end %>
406
-
407
- <% if (interests = generic_sections[:interests]) %>
408
- <li class="item">
409
- <% if show_subtitle %>
410
- <b>Interests: </b>
464
+ </div>
465
+ <% end %>
466
+
467
+ <% if (projects = (data[:projects])) %>
468
+ <div class="projects">
469
+ <div class="upcase bottom-ruler section-title">Projects</div>
470
+ <% projects.each do |project| %>
471
+ <div class="project">
472
+ <div class="project-name"><%= project[:name] %></div>
473
+
474
+ <% if project[:description] %>
475
+ <div class="project-description"><%= project[:description] %></div>
411
476
  <% end %>
412
- <%= interests.join('; ') %>
413
- </li>
477
+
478
+ <div>
479
+ <% if (technologies = project[:technologies]) %>
480
+ <div class="technologies"><b>Technologies: </b><%= technologies.join(', ') %></div>
481
+ <% end %>
482
+
483
+ <% if (project_link = project[:link]) %>
484
+ <div class="link">
485
+ <a src="<%= project_link %>"><%= project_link %></a>
486
+ </div>
487
+ <% end %>
488
+ </div>
414
489
  <% end %>
415
- </ul>
416
- </div>
417
- <% end %>
490
+ </div>
491
+ </div>
492
+ <% end %>
493
+
494
+ <% if (generic_sections = data.slice(:skills, :interests).compact) %>
495
+ <% show_subtitle = generic_sections.keys.size > 1 %>
496
+ <div class="generic-section">
497
+ <div class="upcase bottom-ruler section-title"><%= generic_sections.keys.map(&:capitalize).join(', ') %></div>
498
+ <ul>
499
+ <% if (skills = generic_sections[:skills]) %>
500
+ <li class="item">
501
+ <% if show_subtitle %>
502
+ <b>Skills: </b>
503
+ <% end %>
504
+ <% skills.map { it[:name] }.each do |skill| %>
505
+ <span class="nowrap"> • <%= skill%></span>
506
+ <% end %>
507
+ </li>
508
+ <% end %>
418
509
 
510
+ <% if (interests = generic_sections[:interests]) %>
511
+ <li class="item">
512
+ <% if show_subtitle %>
513
+ <b>Interests: </b>
514
+ <% end %>
515
+ <% interests.map { it[:name] }.each do |interest| %>
516
+ <span class="nowrap"> • <%= interest%></span>
517
+ <% end %>
518
+ </li>
519
+ <% end %>
520
+ </ul>
521
+ </div>
522
+ <% end %>
523
+ </div>
419
524
  </body>
420
525
  </html>