yaml-cv 0.1.1 → 0.1.8
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/README.md +79 -49
- data/bin/yaml-cv +1 -0
- data/lib/assets/cv.mustache +35 -11
- data/lib/assets/pdf.css +19 -0
- data/lib/assets/style.css +40 -10
- data/lib/yaml-cv.rb +194 -149
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a85bcc96ea67d1ff8541cfddfcec80270740f1c3479c89f4920dc9ff2b1f18a2
|
4
|
+
data.tar.gz: b5ff82d0fb6abb8491ee7a0781452c42808437091a9a4272e2230fa47cbafc3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 383ab7062038b3e9143877ec58753fa984da4d9bf8a551eed9db356a68e0998e8e4e2eb5c7e11cb7a3522b5f35c59adeb26fd82f2d0c8a052bcdf5c867352dd3
|
7
|
+
data.tar.gz: 41793cfb5b978842c6d625b0e746f350fb52b23123cdd7e100c7d2dc336fc22d52a618aaac53e65c59899ba9e21590e1c3e7cffe1c5c116ee40c79317d7937fc
|
data/README.md
CHANGED
@@ -1,49 +1,79 @@
|
|
1
|
-
yaml-cv
|
2
|
-
[ ](https://travis-ci.com/gmantaos/yaml-cv)
|
3
|
-
[ ](https://travis-ci.com/gmantaos/yaml-cv)
|
3
|
+
[](https://rubygems.org/gems/yaml-cv)
|
4
|
+
[](https://rubygems.org/gems/yaml-cv)
|
5
|
+
[](LICENSE)
|
6
|
+
=====================
|
7
|
+
|
8
|
+
Static CV generator from a YAML file, in HTML or PDF format.
|
9
|
+
|
10
|
+
[Demo](https://gmantaos.github.io/yaml-cv/)
|
11
|
+
|
12
|
+
<h1 align="center">
|
13
|
+
<img src="examples/demo.png">
|
14
|
+
</h1>
|
15
|
+
|
16
|
+
## Installation
|
17
|
+
|
18
|
+
```shell
|
19
|
+
$ gem install yaml-cv
|
20
|
+
```
|
21
|
+
|
22
|
+
**Disclaimer:** On versions `0.1` PDF generation will be a little rough, since I implemented the release system before getting around to that.
|
23
|
+
|
24
|
+
## Usage
|
25
|
+
|
26
|
+
The CV can be drawn-out in a yaml file, similar to the one shown below.
|
27
|
+
|
28
|
+
```yml
|
29
|
+
details:
|
30
|
+
first_name: John
|
31
|
+
last_name: Doe
|
32
|
+
|
33
|
+
title: Placeholder Engineer
|
34
|
+
|
35
|
+
profile: Personal description.
|
36
|
+
|
37
|
+
contact:
|
38
|
+
- text: johndoe@example.com
|
39
|
+
url: mailto:johndoe@example.com
|
40
|
+
icon: email
|
41
|
+
|
42
|
+
technical:
|
43
|
+
- category: Languages
|
44
|
+
items: C, C++, C#, HTML
|
45
|
+
- category: Frameworks
|
46
|
+
items: Node.js, React.js, Bootstrap
|
47
|
+
```
|
48
|
+
|
49
|
+
For more, there is the [examples folder](examples).
|
50
|
+
|
51
|
+
By default, the output will be printed to stdout in HTML format.
|
52
|
+
|
53
|
+
```shell
|
54
|
+
$ yaml-cv my_cv.yml
|
55
|
+
<html>
|
56
|
+
<head>
|
57
|
+
<title> Doe John - Public Figure </title>
|
58
|
+
|
59
|
+
<style>
|
60
|
+
...
|
61
|
+
```
|
62
|
+
|
63
|
+
To save to a file, use one or both of the `--html` and `--pdf` arguments, while specifying the output file to write to.
|
64
|
+
|
65
|
+
```shell
|
66
|
+
$ yaml-cv my_cv.yml --html my_cv.html
|
67
|
+
```
|
68
|
+
|
69
|
+
```shell
|
70
|
+
$ yaml-cv my_cv.yml --pdf my_cv.pdf
|
71
|
+
```
|
72
|
+
|
73
|
+
For PDF generation on Windows, [wkhtmltopdf.exe](https://wkhtmltopdf.org/downloads.html) needs to be in the PATH.
|
74
|
+
|
75
|
+
The `--watch` option can also be used to watch the input file for changes and automatically regenerate the output.
|
76
|
+
|
77
|
+
```shell
|
78
|
+
$ yaml-cv my_cv.yml --html my_cv.html --watch
|
79
|
+
```
|
data/bin/yaml-cv
CHANGED
data/lib/assets/cv.mustache
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
<!DOCTYPE html>
|
1
2
|
<html>
|
2
3
|
<head>
|
3
4
|
<meta charset="UTF-8">
|
@@ -5,6 +6,10 @@
|
|
5
6
|
|
6
7
|
<style>
|
7
8
|
{{ css }}
|
9
|
+
|
10
|
+
{{# is_pdf}}
|
11
|
+
{{ pdf_css }}
|
12
|
+
{{/ is_pdf}}
|
8
13
|
</style>
|
9
14
|
</head>
|
10
15
|
<body>
|
@@ -48,7 +53,8 @@ ____________ ___________ _____ _ _____
|
|
48
53
|
| | | |\ \\ \_/ / | _| |_| |____| |___
|
49
54
|
\_| \_| \_|\___/\_| \___/\_____/\____/
|
50
55
|
-->
|
51
|
-
|
56
|
+
{{# has_profile}}
|
57
|
+
<tr class="section section-profile">
|
52
58
|
<td class="title-wrapper">
|
53
59
|
<p class="title cyan">Profile</p>
|
54
60
|
</td>
|
@@ -56,6 +62,7 @@ ____________ ___________ _____ _ _____
|
|
56
62
|
<p class="content">{{{ profile }}}</p>
|
57
63
|
</td>
|
58
64
|
</tr>
|
65
|
+
{{/ has_profile}}
|
59
66
|
|
60
67
|
<!--
|
61
68
|
_____ _ _______ _ _ _____
|
@@ -65,6 +72,7 @@ ____________ ___________ _____ _ _____
|
|
65
72
|
/\__/ / |\ \_| |_| |____| |____/\__/ /
|
66
73
|
\____/\_| \_/\___/\_____/\_____/\____/
|
67
74
|
-->
|
75
|
+
{{# has_skills}}
|
68
76
|
<tr class="section">
|
69
77
|
<td class="title-wrapper">
|
70
78
|
<p class="title cyan">Skills</p>
|
@@ -83,6 +91,7 @@ ____________ ___________ _____ _ _____
|
|
83
91
|
</div>
|
84
92
|
</td>
|
85
93
|
</tr>
|
94
|
+
{{/ has_skills}}
|
86
95
|
|
87
96
|
<!--
|
88
97
|
_____ _____ _____ _ _ _ _ _____ _____ ___ _
|
@@ -92,21 +101,23 @@ ____________ ___________ _____ _ _____
|
|
92
101
|
| | | |___| \__/\| | | || |\ |_| |_| \__/\| | | || |____
|
93
102
|
\_/ \____/ \____/\_| |_/\_| \_/\___/ \____/\_| |_/\_____/
|
94
103
|
-->
|
104
|
+
{{# has_technical}}
|
95
105
|
<tr class="section">
|
96
106
|
<td class="title-wrapper">
|
97
107
|
<p class="title cyan">Technical</p>
|
98
108
|
</td>
|
99
109
|
<td class="content-wrapper">
|
100
|
-
<
|
110
|
+
<table class="technical-list">
|
101
111
|
{{# technical}}
|
102
|
-
<
|
103
|
-
<
|
104
|
-
<
|
105
|
-
</
|
112
|
+
<tr>
|
113
|
+
<td class="skill-title">{{ category }}</td>
|
114
|
+
<td width="100%" class="content"><p>{{{ items }}}</p></td>
|
115
|
+
</tr>
|
106
116
|
{{/ technical}}
|
107
|
-
</
|
117
|
+
</table>
|
108
118
|
</td>
|
109
119
|
</tr>
|
120
|
+
{{/ has_technical}}
|
110
121
|
|
111
122
|
<!--
|
112
123
|
_____ _____ _____ _____ _____ _____ _ _ _____
|
@@ -128,7 +139,7 @@ ____________ ___________ _____ _ _____
|
|
128
139
|
<td>
|
129
140
|
<p class="title">
|
130
141
|
{{# logo}}
|
131
|
-
<img class="logo" src="data:image/png;base64,{{
|
142
|
+
<img class="logo" src="data:image/png;base64,{{ logo_img }}">
|
132
143
|
{{/ logo}}
|
133
144
|
{{ title }}
|
134
145
|
</p>
|
@@ -136,22 +147,33 @@ ____________ ___________ _____ _ _____
|
|
136
147
|
<td class="period-wrapper">
|
137
148
|
<p>
|
138
149
|
{{# from}}
|
139
|
-
{{ from.
|
140
|
-
{{# to}}
|
141
|
-
|
150
|
+
{{ from.month_name }} <b>{{ from.year }}</b>
|
151
|
+
{{# to}}
|
152
|
+
-
|
153
|
+
{{# to.year}}
|
154
|
+
{{ to.month_name }} <b>{{ to.year }}</b>
|
155
|
+
{{/ to.year}}
|
156
|
+
{{^ to.year}}
|
157
|
+
{{ to }}
|
158
|
+
{{/ to.year}}
|
159
|
+
{{/ to}}
|
142
160
|
{{/ from}}
|
143
161
|
</p>
|
144
162
|
</td>
|
145
163
|
</tr>
|
146
164
|
<tr>
|
165
|
+
{{# subtitle}}
|
147
166
|
<td>
|
148
167
|
<p class="subtitle">
|
149
168
|
{{ subtitle }}
|
150
169
|
</p>
|
151
170
|
</td>
|
171
|
+
{{/ subtitle}}
|
172
|
+
{{# location}}
|
152
173
|
<td class="location-wrapper">
|
153
174
|
<p class="cyan">{{ location }}</p>
|
154
175
|
</td>
|
176
|
+
{{/ location}}
|
155
177
|
</tr>
|
156
178
|
<tr>
|
157
179
|
<td colspan="2">
|
@@ -167,5 +189,7 @@ ____________ ___________ _____ _ _____
|
|
167
189
|
</td>
|
168
190
|
</tr>
|
169
191
|
{{/ sections}}
|
192
|
+
</table>
|
193
|
+
</div>
|
170
194
|
</body>
|
171
195
|
</html>
|
data/lib/assets/pdf.css
ADDED
data/lib/assets/style.css
CHANGED
@@ -4,11 +4,20 @@ body {
|
|
4
4
|
background-color: rgb(218, 218, 218);
|
5
5
|
}
|
6
6
|
|
7
|
-
p, li {
|
7
|
+
p, li, td {
|
8
8
|
font-family: Century Gothic, arial, sans-serif;
|
9
9
|
color: #989898;
|
10
10
|
}
|
11
11
|
|
12
|
+
tbody {
|
13
|
+
padding: 0;
|
14
|
+
margin: 0;
|
15
|
+
}
|
16
|
+
|
17
|
+
table {
|
18
|
+
padding: 0;
|
19
|
+
}
|
20
|
+
|
12
21
|
.cyan {
|
13
22
|
color: #7dafd0;
|
14
23
|
}
|
@@ -56,10 +65,12 @@ p, li {
|
|
56
65
|
list-style-type: none;
|
57
66
|
padding: 0;
|
58
67
|
margin: 0;
|
59
|
-
height: 3.
|
68
|
+
height: 3.6em;
|
60
69
|
|
70
|
+
-webkit-column-count: 2;
|
71
|
+
-moz-column-count: 2;
|
61
72
|
column-count: 2;
|
62
|
-
column-gap:
|
73
|
+
column-gap: 0em;
|
63
74
|
column-fill: auto;
|
64
75
|
}
|
65
76
|
|
@@ -83,15 +94,15 @@ p, li {
|
|
83
94
|
margin-right: .6em;
|
84
95
|
}
|
85
96
|
|
86
|
-
.section .content-wrapper {
|
87
|
-
padding: 0 .5em .75em .5em;
|
88
|
-
}
|
89
|
-
|
90
97
|
.section .title-wrapper {
|
91
98
|
width: 16%;
|
92
99
|
vertical-align: top;
|
93
100
|
}
|
94
101
|
|
102
|
+
.section-profile {
|
103
|
+
padding-bottom: 1em;
|
104
|
+
}
|
105
|
+
|
95
106
|
.section .title {
|
96
107
|
font-weight: 600;
|
97
108
|
text-transform: uppercase;
|
@@ -101,6 +112,10 @@ p, li {
|
|
101
112
|
font-size: .8em;
|
102
113
|
}
|
103
114
|
|
115
|
+
p {
|
116
|
+
margin: 0 0 0 0;
|
117
|
+
}
|
118
|
+
|
104
119
|
.subsection {
|
105
120
|
width: 100%;
|
106
121
|
}
|
@@ -111,7 +126,7 @@ p, li {
|
|
111
126
|
|
112
127
|
.subsection .title {
|
113
128
|
color: #696969;
|
114
|
-
font-size:
|
129
|
+
font-size: 1em;
|
115
130
|
text-transform: none;
|
116
131
|
}
|
117
132
|
|
@@ -135,12 +150,13 @@ p, li {
|
|
135
150
|
page-break-inside: avoid;
|
136
151
|
}
|
137
152
|
|
138
|
-
.skill-
|
153
|
+
.skill-title {
|
139
154
|
color: #696969;
|
140
155
|
font-size: .86em;
|
141
156
|
font-weight: 600;
|
157
|
+
vertical-align: top;
|
158
|
+
text-align: left;
|
142
159
|
}
|
143
|
-
|
144
160
|
.skills-section {
|
145
161
|
padding-bottom: .25em !important;
|
146
162
|
}
|
@@ -155,3 +171,17 @@ p, li {
|
|
155
171
|
top: -.2em;
|
156
172
|
position: relative;
|
157
173
|
}
|
174
|
+
|
175
|
+
.technical-list .content {
|
176
|
+
width: 100%;
|
177
|
+
display: block;
|
178
|
+
}
|
179
|
+
|
180
|
+
.technical-list .content p {
|
181
|
+
width: 100%;
|
182
|
+
display: inline-block;
|
183
|
+
}
|
184
|
+
|
185
|
+
.section td.title-wrapper {
|
186
|
+
padding-bottom: .6em;
|
187
|
+
}
|
data/lib/yaml-cv.rb
CHANGED
@@ -1,150 +1,195 @@
|
|
1
|
-
require "mustache"
|
2
|
-
require "yaml"
|
3
|
-
require "tempfile"
|
4
|
-
require "uri"
|
5
|
-
require "open3"
|
6
|
-
require "base64"
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
file_path = File.join(
|
11
|
-
File.
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
period["month"]
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
}
|
123
|
-
end
|
124
|
-
|
125
|
-
def
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
1
|
+
require "mustache"
|
2
|
+
require "yaml"
|
3
|
+
require "tempfile"
|
4
|
+
require "uri"
|
5
|
+
require "open3"
|
6
|
+
require "base64"
|
7
|
+
require "rbconfig"
|
8
|
+
|
9
|
+
def load_asset(asset_file)
|
10
|
+
file_path = File.join(File.dirname(__FILE__), "assets")
|
11
|
+
file_path = File.join(file_path, asset_file)
|
12
|
+
File.read(file_path)
|
13
|
+
end
|
14
|
+
|
15
|
+
def format_period(period)
|
16
|
+
month_names = {
|
17
|
+
1 => "Jun",
|
18
|
+
2 => "Feb",
|
19
|
+
3 => "Mar",
|
20
|
+
4 => "Apr",
|
21
|
+
5 => "May",
|
22
|
+
6 => "Jun",
|
23
|
+
7 => "Jul",
|
24
|
+
8 => "Aug",
|
25
|
+
9 => "Sep",
|
26
|
+
10 => "Oct",
|
27
|
+
11 => "Nov",
|
28
|
+
12 => "Dec"
|
29
|
+
}
|
30
|
+
if period["month"]
|
31
|
+
index = period["month"]
|
32
|
+
period["month_name"] = month_names[ index ]
|
33
|
+
end
|
34
|
+
period
|
35
|
+
end
|
36
|
+
|
37
|
+
class CV < Mustache
|
38
|
+
|
39
|
+
self.template_file = File.join(File.dirname(__FILE__), "assets/cv.mustache")
|
40
|
+
|
41
|
+
attr_accessor :is_pdf
|
42
|
+
|
43
|
+
def initialize(file_path)
|
44
|
+
@file_path = file_path
|
45
|
+
@cv = YAML.load_file(file_path)
|
46
|
+
|
47
|
+
if @cv["contact"]
|
48
|
+
@cv["contact"] = @cv["contact"].map { |c|
|
49
|
+
c["icon"] = icon(c["icon"])
|
50
|
+
c
|
51
|
+
}
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def details
|
56
|
+
@cv["details"]
|
57
|
+
end
|
58
|
+
|
59
|
+
def profile
|
60
|
+
@cv["profile"]
|
61
|
+
end
|
62
|
+
|
63
|
+
def has_profile
|
64
|
+
@cv.key?("profile")
|
65
|
+
end
|
66
|
+
|
67
|
+
def skills
|
68
|
+
@cv["skills"]
|
69
|
+
end
|
70
|
+
|
71
|
+
def has_skills
|
72
|
+
@cv.key?("skills")
|
73
|
+
end
|
74
|
+
|
75
|
+
def technical
|
76
|
+
@cv["technical"]
|
77
|
+
end
|
78
|
+
|
79
|
+
def has_technical
|
80
|
+
@cv.key?("technical")
|
81
|
+
end
|
82
|
+
|
83
|
+
def sections
|
84
|
+
if !@cv["sections"]
|
85
|
+
return
|
86
|
+
end
|
87
|
+
|
88
|
+
@cv["sections"].map { |s|
|
89
|
+
s["items"] = format_subsections s["items"]
|
90
|
+
s
|
91
|
+
}
|
92
|
+
end
|
93
|
+
|
94
|
+
def full_name
|
95
|
+
details["last_name"] + " " + details["first_name"]
|
96
|
+
end
|
97
|
+
|
98
|
+
def css
|
99
|
+
load_asset("style.css")
|
100
|
+
end
|
101
|
+
|
102
|
+
def pdf_css
|
103
|
+
load_asset("pdf.css")
|
104
|
+
end
|
105
|
+
|
106
|
+
def enable_pdf(enable = true)
|
107
|
+
@is_pdf = true
|
108
|
+
end
|
109
|
+
|
110
|
+
def contact
|
111
|
+
@cv["contact"]
|
112
|
+
end
|
113
|
+
|
114
|
+
def contact_padding
|
115
|
+
if !contact
|
116
|
+
return 0
|
117
|
+
end
|
118
|
+
|
119
|
+
columns = (contact.length / 3.0).ceil
|
120
|
+
padding = (1 - columns) * 3
|
121
|
+
|
122
|
+
Array.new(padding) { |i| 0 }
|
123
|
+
end
|
124
|
+
|
125
|
+
def icon(name)
|
126
|
+
load_asset("icons/#{name.strip}.svg")
|
127
|
+
end
|
128
|
+
|
129
|
+
def format_subsections(subsections)
|
130
|
+
if !subsections
|
131
|
+
return
|
132
|
+
end
|
133
|
+
|
134
|
+
subsections.map { |e|
|
135
|
+
if e["from"]
|
136
|
+
e["from"] = format_period e["from"]
|
137
|
+
end
|
138
|
+
if e["to"]
|
139
|
+
e["to"] = format_period e["to"]
|
140
|
+
end
|
141
|
+
|
142
|
+
if e["logo"]
|
143
|
+
e["logo_img"] = read_image e["logo"]
|
144
|
+
end
|
145
|
+
|
146
|
+
e
|
147
|
+
}
|
148
|
+
end
|
149
|
+
|
150
|
+
def read_image(img_path)
|
151
|
+
file_path = File.join(File.dirname(@file_path), img_path)
|
152
|
+
file = File.open(file_path, "rb")
|
153
|
+
data = file.read
|
154
|
+
Base64.strict_encode64(data)
|
155
|
+
end
|
156
|
+
|
157
|
+
def render
|
158
|
+
template = load_asset("cv.mustache")
|
159
|
+
super(template)
|
160
|
+
end
|
161
|
+
|
162
|
+
def write_html(file_path)
|
163
|
+
html = render
|
164
|
+
File.open(file_path, 'w') { |file| file.write(html) }
|
165
|
+
end
|
166
|
+
|
167
|
+
def write_pdf(file_path)
|
168
|
+
|
169
|
+
if is_windows
|
170
|
+
temp_file_name = file_path + ".html"
|
171
|
+
|
172
|
+
temp_file = File.open(temp_file_name, "w")
|
173
|
+
temp_file << render
|
174
|
+
temp_file.flush
|
175
|
+
temp_file.close
|
176
|
+
|
177
|
+
system("wkhtmltopdf.exe #{temp_file.path} #{file_path}")
|
178
|
+
|
179
|
+
File.delete(temp_file_name)
|
180
|
+
else
|
181
|
+
temp_file = Tempfile.new(["cv", ".html"])
|
182
|
+
temp_file << render
|
183
|
+
temp_file.flush
|
184
|
+
|
185
|
+
system("wkhtmltopdf #{temp_file.path} #{file_path}")
|
186
|
+
|
187
|
+
temp_file.close
|
188
|
+
end
|
189
|
+
|
190
|
+
end
|
191
|
+
|
192
|
+
def is_windows
|
193
|
+
RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
|
194
|
+
end
|
150
195
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yaml-cv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Greg Mantaos
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mustache
|
@@ -73,9 +73,10 @@ files:
|
|
73
73
|
- lib/assets/icons/phone.svg
|
74
74
|
- lib/assets/icons/skype.svg
|
75
75
|
- lib/assets/icons/website.svg
|
76
|
+
- lib/assets/pdf.css
|
76
77
|
- lib/assets/style.css
|
77
78
|
- lib/yaml-cv.rb
|
78
|
-
homepage: https://github.
|
79
|
+
homepage: https://gmantaos.github.io/yaml-cv/
|
79
80
|
licenses:
|
80
81
|
- MIT
|
81
82
|
metadata:
|
@@ -95,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
96
|
- !ruby/object:Gem::Version
|
96
97
|
version: '0'
|
97
98
|
requirements: []
|
98
|
-
rubygems_version: 3.0.
|
99
|
+
rubygems_version: 3.0.8
|
99
100
|
signing_key:
|
100
101
|
specification_version: 4
|
101
102
|
summary: Static CV generator from a YAML file, in HTML or PDF format.
|