latex_curriculum_vitae 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.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +10 -8
  3. data/Gemfile.lock +53 -52
  4. data/History.rdoc +15 -0
  5. data/LICENSE.rdoc +619 -24
  6. data/Manifest.txt +7 -12
  7. data/NEWS +69 -0
  8. data/README.rdoc +103 -43
  9. data/Rakefile +31 -42
  10. data/STATUS.rdoc +23 -0
  11. data/bin/latexcv.rb +13 -8
  12. data/data/latex_curriculum_vitae/Cover/Cover.tex +12 -4
  13. data/data/latex_curriculum_vitae/Motivational_Letter/bwanschreiben.tex +23 -6
  14. data/data/latex_curriculum_vitae/Pictures/codealike.png +0 -0
  15. data/data/latex_curriculum_vitae/Pictures/codestats.png +0 -0
  16. data/data/latex_curriculum_vitae/Pictures/openhub.png +0 -0
  17. data/data/latex_curriculum_vitae/Pictures/signatur1.png +0 -0
  18. data/data/latex_curriculum_vitae/Pictures/wakatime.jpg +0 -0
  19. data/data/latex_curriculum_vitae/Resume/cv_10.tex +28 -10
  20. data/etc/latex_curriculum_vitae.cfg +2 -1
  21. data/etc/personal_data.tex +2 -1
  22. data/lib/latex_curriculum_vitae.rb +60 -51
  23. data/lib/latex_curriculum_vitae/cover.rb +17 -9
  24. data/lib/latex_curriculum_vitae/cv.rb +41 -27
  25. data/lib/latex_curriculum_vitae/email.rb +168 -94
  26. data/lib/latex_curriculum_vitae/entityfile.rb +99 -68
  27. data/lib/latex_curriculum_vitae/get-config.rb +28 -18
  28. data/lib/latex_curriculum_vitae/letter.rb +19 -12
  29. data/lib/latex_curriculum_vitae/notifier.rb +20 -13
  30. data/lib/latex_curriculum_vitae/outfile.rb +30 -19
  31. metadata +89 -56
  32. data/.autotest +0 -25
  33. data/.codeclimate.yml +0 -8
  34. data/.coveralls.yml +0 -2
  35. data/.gemnasium.yml +0 -5
  36. data/.rspec +0 -2
  37. data/.rubocop.yml +0 -38
  38. data/.scrutinizer.yml +0 -21
  39. data/.travis.yml +0 -29
  40. data/CODE_OF_CONDUCT.md +0 -17
  41. data/CONTRIBUTING.md +0 -25
  42. data/config.reek +0 -111
  43. data/data/latex_curriculum_vitae/Appendix/Employers_Reference/wtg.pdf +0 -0
@@ -1,10 +1,17 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
- # @author Sascha Manns
4
- # @abstract module for creating the entity file for latex
5
- #
6
1
  # Copyright (C) 2015-2017 Sascha Manns <Sascha.Manns@mailbox.org>
7
- # License: MIT
2
+ #
3
+ # This program is free software: you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation, either version 3 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
8
15
 
9
16
  # Dependencies
10
17
  require 'fileutils'
@@ -15,11 +22,12 @@ require 'url_shortener'
15
22
  module LatexCurriculumVitae
16
23
  # Module for creating the entityfile
17
24
  module Entityfile
25
+ # TODO: Try to fix this in future
18
26
  # rubocop:disable Metrics/LineLength
19
27
  # Method for getting information
20
- # @param [String] entitytex Path to the entity.tex
21
- # @return [Array] contact, emailaddress, jobtitle, contact_sex, company, proactive, job_url
22
- def self.get_information(entitytex)
28
+ # @param [String] entity_tex Path to the entity.tex
29
+ # @return [Array] contact, email_address, job_title, contact_sex, company, proactive, job_url
30
+ def self.get_information(entity_tex)
23
31
  resume = `yad --title="Create application" --center --on-top --form --item-separator=, --separator="|" \
24
32
  --field="What is the jobtitle of your application? Escape amp with backslash:TEXT" \
25
33
  --field="Is it a proactive application?:CBE" \
@@ -33,123 +41,146 @@ module LatexCurriculumVitae
33
41
  --field="What kind of target:CBE" \
34
42
  --field="Tell me the URL of the job offer:TEXT" \
35
43
  --button="Go!" "" "no,yes" "yes,no" "" "" "" "male,female,unknown" "" "" "doku,support,kaufm"`
36
- jobtitle, proactive, letter, company, street, city, contact_sex, contact, emailaddress, target, job_url = resume.chomp.split('|')
37
- [jobtitle, proactive, letter, company, street, city, contact_sex, contact, emailaddress, target, job_url].each do |s|
38
- puts s
39
- end
44
+ job_title, proactive, letter, company, street, city, contact_sex, contact, email_address,
45
+ target, job_url = resume.chomp.split('|')
40
46
 
41
- create_file(jobtitle, company, street, city, contact, entitytex, contact_sex, proactive, target)
42
- [contact, emailaddress, jobtitle, contact_sex, company, letter, proactive, job_url]
47
+ create_file(job_title, company, street, city, contact, entity_tex, contact_sex, proactive, target)
48
+ [contact, email_address, job_title, contact_sex, company, letter, proactive, job_url, target]
43
49
  end
44
50
 
45
51
  # Method for shorten the URL
46
52
  # @param [String] job_url The Url to the job offer
47
- # @param [String] bitly_user The Username in Bit.ly
48
- # @param [String] bitly_apikey The Apikey from your Bit.ly User
49
- # @return [String] joburl Returns the shortened Bit.ly URL
50
- def self.shorten_url(job_url, bitly_user, bitly_apikey)
51
- authorize = UrlShortener::Authorize.new "#{bitly_user}", "#{bitly_apikey}"
53
+ # @param [String] bit_ly_user The Username in Bit.ly
54
+ # @param [String] bit_ly_apikey The Apikey from your Bit.ly User
55
+ # @return [String] job_url_checked Returns the shortened Bit.ly URL
56
+ def self.shorten_url(job_url, bit_ly_user, bit_ly_apikey)
57
+ # TODO: Try to fix this in future
58
+ # rubocop:disable Style/UnneededInterpolation
59
+ authorize = UrlShortener::Authorize.new "#{bit_ly_user}", "#{bit_ly_apikey}"
52
60
  client = UrlShortener::Client.new authorize
53
61
 
54
62
  shorten = client.shorten("#{job_url}") # => UrlShortener::Response::Shorten object
55
63
  shorten.result # => returns a hash of all data returned from bitly
56
64
  shorten.urls # => Only returns the short urls look for more convenience methods in the UrlShortener::Response::Shorten class
57
65
  puts shorten.urls
58
- joburl = shorten.urls
59
- return joburl
66
+ job_url_checked = shorten.urls
67
+ return job_url_checked
60
68
  end
61
69
 
62
70
  # Method for creating the entity.tex
63
- # @param [String] jobtitle Title of the target job
71
+ # @param [String] job_title Title of the target job
64
72
  # @param [String] company Comanys name
65
73
  # @param [String] street Companies street
66
74
  # @param [String] city City of the company
67
75
  # @param [String] contact Name of the contact
68
76
  # @param [String] contact_sex Sex of the contact
69
- # @param [String] entitytex Path to the entity.tex
70
- def self.create_file(jobtitle, company, street, city, contact, entitytex, contact_sex, proactive, target)
77
+ # @param [String] entity_tex Path to the entity.tex
78
+ # TODO: Try to fix this in future
79
+ # This method smells of :reek:LongParameterList
80
+ def self.create_file(job_title, company, street, city, contact, entity_tex, contact_sex, proactive, target)
71
81
  introduction = LatexCurriculumVitae::Entityfile.get_introduction(contact, contact_sex)
72
- subject, intro = LatexCurriculumVitae::Entityfile.get_subject_intro(proactive, jobtitle)
73
- addressstring = LatexCurriculumVitae::Entityfile.get_addressstring(company, contact, street, city)
74
- targetblock = LatexCurriculumVitae::Entityfile.get_target_block(target)
82
+ subject, intro = LatexCurriculumVitae::Entityfile.get_subject_intro(proactive, job_title)
83
+ address_string = LatexCurriculumVitae::Entityfile.get_address_string(company, contact, contact_sex, street, city)
84
+ target_block = LatexCurriculumVitae::Entityfile.get_target_block(target)
75
85
 
76
- FileUtils.rm(entitytex) if File.exist?(entitytex)
77
- FileUtils.touch(entitytex)
78
- File.write "#{entitytex}", <<EOF
79
- \\def\\jobtitle{#{jobtitle}}
86
+ FileUtils.rm(entity_tex) if File.exist?(entity_tex)
87
+ FileUtils.touch(entity_tex)
88
+ # TODO: Try to fix this in future
89
+ # rubocop:disable Layout/IndentHeredoc
90
+ File.write "#{entity_tex}", <<TEXFILE
91
+ \\def\\jobtitle{#{job_title}}
80
92
  \\def\\company{#{company}}
81
93
  \\def\\contact{#{contact}}
82
94
  \\def\\street{#{street}}
83
95
  \\def\\city{#{city}}
84
96
  \\def\\introduction{#{introduction}}
85
97
  \\def\\subject{#{subject}}
86
- \\def\\addressstring{#{addressstring}}
98
+ \\def\\addressstring{#{address_string}}
87
99
  \\def\\intro{#{intro}}
88
- \\def\\targetblock{#{targetblock}}
89
- EOF
100
+ \\def\\targetblock{#{target_block}}
101
+ TEXFILE
90
102
  end
91
103
 
92
104
  # Method for preparing the introduction variable
93
105
  # @param [String] contact Name of the contact
94
106
  # @param [String] contact_sex Sex of the contact
95
107
  # @return [String] introduction
108
+ # TODO: Try to fix this in future
109
+ # rubocop:disable Style/IfInsideElse
110
+ # This method smells of :reek:ControlParameter
96
111
  def self.get_introduction(contact, contact_sex)
97
- if contact == ''
98
- introduction = 'Sehr geehrte Damen und Herren,'
99
- else
100
- if contact_sex == 'male'
101
- introduction = "Sehr geehrter Herr #{contact},"
102
- else
103
- introduction = "Sehr geehrte Frau #{contact},"
104
- end
105
- end
112
+ introduction = if contact == ''
113
+ 'Sehr geehrte Damen und Herren,'
114
+ else
115
+ if contact_sex == 'male'
116
+ "Sehr geehrter Herr #{contact},"
117
+ else
118
+ "Sehr geehrte Frau #{contact},"
119
+ end
120
+ end
106
121
  return introduction
107
122
  end
108
123
 
109
124
  # Method for preparing the subject and intro variables
110
125
  # @param [String] proactive Can be yes or no
111
- # @param [String] jobtitle Title of the target job
126
+ # @param [String] job_title Title of the target job
112
127
  # @return [Array] subject intro
113
- def self.get_subject_intro(proactive, jobtitle)
128
+ # TODO: Try to fix this in future
129
+ # This method smells of :reek:ControlParameter
130
+ def self.get_subject_intro(proactive, job_title)
114
131
  if proactive == 'yes'
115
- subject = "Initiativbewerbung um einen Arbeitsplatz als #{jobtitle}"
116
- intro = "gerne möchte ich mich bei Ihnen um die Stelle als #{jobtitle} oder einer ähnlichen Position bewerben."
132
+ subject = "Initiativbewerbung um einen Arbeitsplatz als #{job_title}"
133
+ intro = "gerne möchte ich mich bei Ihnen um die Stelle als #{job_title} oder einer ähnlichen Position bewerben."
117
134
  else
118
- subject = "Bewerbung um einen Arbeitsplatz als #{jobtitle}"
119
- intro = "mit großem Interesse bin ich auf die ausgeschriebene Position aufmerksam geworden. Aus diesem Grund bewerbe ich mich bei Ihnen als #{jobtitle}."
135
+ subject = "Bewerbung um einen Arbeitsplatz als #{job_title}"
136
+ intro = "mit großem Interesse bin ich auf die ausgeschriebene Position aufmerksam geworden. Aus diesem Grund bewerbe ich mich bei Ihnen als #{job_title}."
120
137
  end
121
138
  [subject, intro]
122
139
  end
123
140
 
124
- # Method for preparing the addressstring
141
+ # Method for preparing the address_string
125
142
  # @param [String] company Comanys name
126
143
  # @param [String] street Companies street
127
144
  # @param [String] city City of the company
128
145
  # @param [String] contact Name of the contact
129
- # @return [String] addressstring
130
- def self.get_addressstring(company, contact, street, city)
131
- addressstring = "#{company} \\\\"
132
- if contact == ''
133
- addressstring << 'z.Hd. Personalabteilung \\\\'
134
- else
135
- addressstring << "z.Hd. #{contact} \\\\"
136
- end
137
- addressstring << "#{street} \\\\" if street != ''
138
- addressstring << "#{city}" if city != ''
139
- return addressstring
146
+ # @return [String] address_string
147
+ # TODO: Try to fix this in future
148
+ # This method smells of :reek:LongParameterList
149
+ # This method smells of :reek:ControlParameter
150
+ def self.get_address_string(company, contact, contact_sex, street, city)
151
+ address_string = "#{company} \\\\"
152
+ address_string << if contact == ''
153
+ 'z.Hd. Personalabteilung \\\\'
154
+ else
155
+ if contact_sex == 'male'
156
+ "z.Hd. Herrn #{contact} \\\\"
157
+ else
158
+ "z.Hd. Frau #{contact} \\\\"
159
+ end
160
+ end
161
+ address_string << "#{street} \\\\" if street != ''
162
+ address_string << "#{city}" if city != ''
163
+ return address_string
140
164
  end
141
165
 
142
166
  # Method for getting the target code block
143
- # @param [String] target The choosed target
144
- # @returns [String] targetblock Returns a Block with the choosed Information
167
+ # @param [String] target The chosen target
168
+ # @returns [String] target_block Returns a Block with the chosen Information
169
+ # TODO: Try to fix this in future
170
+ # This method smells of :reek:ControlParameter
145
171
  def self.get_target_block(target)
146
172
  if target == 'doku'
147
- targetblock = 'Neben der Beschreibungssprache DocBook samt XSL-FO lernte ich die Satzsprache \\LaTeX. \\\\ Selbstständig erarbeitete ich mir Kenntnisse in der Programmiersprache Ruby, sowie der Web-App-Entwicklung (Technische Hochschule Mittelrhein).\\\\'
173
+ target_block = 'Neben der Beschreibungssprache DocBook samt XSL-FO lernte ich die Satzsprache \\LaTeX. \\\\
174
+ Selbstständig erarbeitete ich mir Kenntnisse in der Programmiersprache Ruby, Python, sowie der Web-App-Entwicklung
175
+ (TH Mittelrhein).\\\\'
148
176
  elsif target == 'support'
149
- targetblock = 'Im IT-Support hatte ich bereits erste Führungserfahrung als Dispatcher \\&Controller. Selbstständig erarbeitete ich mir Kenntnisse in der Programmiersprache Ruby, sowie der Web-App-Entwicklung (Technische Hochschule Mittelrhein).\\\\'
177
+ target_block = 'Im IT-Support hatte ich bereits erste Führungserfahrung als Dispatcher \\&Controller.
178
+ Selbstständig erarbeitete ich mir Kenntnisse in den Programmiersprachen Bash, Ruby und Python, sowie der Web-App-Entwicklung (TH Mittelrhein).\\\\'
150
179
  else
151
- targetblock = 'Im kaufmännischen Bereich habe ich bereits vielfältige Erfahrungen im Einkauf, Verkauf, Öffentlichkeitsarbeit und Vertrieb gemacht und bin stets bereit neues zu lernen.\\\\'
180
+ target_block = 'Im kaufmännischen Bereich habe ich bereits vielfältige Erfahrungen im Einkauf, Verkauf,
181
+ Öffentlichkeitsarbeit und Vertrieb gemacht und bin stets bereit neues zu lernen.\\\\'
152
182
  end
183
+ return target_block
153
184
  end
154
185
  end
155
- end
186
+ end
@@ -1,10 +1,17 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
- # @author Sascha Manns
4
- # @abstract module for getting information from a config file
5
- #
6
1
  # Copyright (C) 2015-2017 Sascha Manns <Sascha.Manns@mailbox.org>
7
- # License: MIT
2
+ #
3
+ # This program is free software: you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation, either version 3 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
8
15
 
9
16
  # Dependencies
10
17
  require 'parseconfig'
@@ -14,35 +21,38 @@ module LatexCurriculumVitae
14
21
  # Module for creating the GetConfig
15
22
  module GetConfig
16
23
  # This method gets the configs from the config file
17
- # @return [Array] name_of_pdf, name_of_cover, name_of_resume, name_of_letter, pdf_reader, shorten_url, bitly_user, bitly_apikey
18
- def self.get(sysconfdir)
19
- config = ParseConfig.new("#{sysconfdir}/latex_curriculum_vitae.cfg")
24
+ # @param [String] sysconf_dir
25
+ # @return [Array] name_of_pdf, name_of_cover, name_of_resume, name_of_letter, pdf_reader, shorten_url,
26
+ # bit_ly_user, bit_ly_apikey
27
+ def self.get(sysconf_dir)
28
+ config = ParseConfig.new("#{sysconf_dir}/latex_curriculum_vitae.cfg")
20
29
  name_of_pdf = config['name_of_pdf']
21
30
  name_of_cover = config['name_of_cover']
22
31
  name_of_resume = config['name_of_resume']
23
32
  name_of_letter = config['name_of_letter']
24
33
  pdf_reader = config['pdf_reader']
25
34
  shorten_url = config['shorten_url']
26
- bitly_user = config['bitly_user']
27
- bitly_apikey = config['bitly_apikey']
35
+ bit_ly_user = config['bitly_user']
36
+ bit_ly_apikey = config['bitly_apikey']
37
+ mail_backend = config['mail_backend']
28
38
 
29
- [name_of_pdf, name_of_cover, name_of_resume, name_of_letter, pdf_reader, shorten_url, bitly_user, bitly_apikey]
39
+ [name_of_pdf, name_of_cover, name_of_resume, name_of_letter, pdf_reader, shorten_url, bit_ly_user, bit_ly_apikey,
40
+ mail_backend]
30
41
  end
31
42
 
32
43
  # Method for getting smtp configuration
33
- # @return [Array] own_name, own_email_address, own_smtp, own_username, own_password, own_port, own_domain, own_tls
34
- def self.get_smtp(sysconfdir)
35
- config = ParseConfig.new("#{sysconfdir}/latex_curriculum_vitae.cfg")
44
+ # @param [String] sysconf_dir
45
+ # @return [Array] own_name, own_email_address, own_smtp, own_username, own_password, own_port, own_domain
46
+ def self.get_smtp(sysconf_dir)
47
+ config = ParseConfig.new("#{sysconf_dir}/latex_curriculum_vitae.cfg")
36
48
  # own_name = config['own_name']
37
49
  own_email_address = config['own_email_address']
38
50
  own_smtp = config['own_smtp']
39
51
  own_username = config['own_username']
40
52
  own_password = config['own_password']
41
53
  own_port = config['own_port'].to_i
42
- own_tls = config['own_tls']
43
54
 
44
- [own_email_address, own_smtp, own_username, own_password, own_port, own_tls]
55
+ [own_email_address, own_smtp, own_username, own_password, own_port]
45
56
  end
46
-
47
57
  end
48
58
  end
@@ -1,10 +1,17 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
- # @author Sascha Manns
4
- # @abstract module for creating a motivational letter
5
- #
6
1
  # Copyright (C) 2015-2017 Sascha Manns <Sascha.Manns@mailbox.org>
7
- # License: MIT
2
+ #
3
+ # This program is free software: you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation, either version 3 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
8
15
 
9
16
  # Dependencies
10
17
  require 'fileutils'
@@ -15,14 +22,14 @@ module LatexCurriculumVitae
15
22
  # Module for creating the motivational letter
16
23
  module Letter
17
24
  # Method for creating a pdf from tex
18
- # @param [String] tmpdir Name of the Tempdir
25
+ # @param [String] tmp_dir Name of the Tempdir
19
26
  # @param [String] name_of_letter Filename of the Letter
20
- def self.create_letter(tmpdir, name_of_letter)
21
- puts 'Compiling motivational letter'.colour(:yellow)
27
+ def self.create_letter(tmp_dir, name_of_letter)
28
+ puts 'Compiling motivational letter'.color(:yellow)
22
29
  system("pdflatex #{name_of_letter}.tex")
23
- puts 'Done compiling motivational letter'.colour(:green)
24
- system("cp #{name_of_letter}.pdf #{tmpdir}")
25
- puts 'Copied motivational letter to tmpdir'.colour(:green)
30
+ puts 'Done compiling motivational letter'.color(:green)
31
+ system("cp #{name_of_letter}.pdf #{tmp_dir}")
32
+ puts 'Copied motivational letter to tmpdir'.color(:green)
26
33
  end
27
34
  end
28
35
  end
@@ -1,11 +1,17 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
- # @author Sascha Manns
4
- # @abstract module for notify the user about finishing the email send
5
- # process
6
- #
7
1
  # Copyright (C) 2015-2017 Sascha Manns <Sascha.Manns@mailbox.org>
8
- # License: MIT
2
+ #
3
+ # This program is free software: you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation, either version 3 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
9
15
 
10
16
  # Dependencies
11
17
 
@@ -16,13 +22,14 @@ require 'notifier'
16
22
  module LatexCurriculumVitae
17
23
  # Method for notifying the user
18
24
  module Notify
19
- # @param [String] jobtitle The Title of your job application
20
- def self.run(jobtitle, datadir)
21
- img = "#{datadir}/share/icons/arbeitsagentur.png"
25
+ # @param [String] job_title The Title of your job application
26
+ # @param [String] data_dir Path to data dir
27
+ def self.run(job_title, data_dir)
28
+ img = "#{data_dir}/share/icons/arbeitsagentur.png"
22
29
  Notifier.notify(
23
- :image => "#{img}",
24
- :title => "Your Job Application",
25
- :message => "Your Job Application #{jobtitle} was created now."
30
+ image: img.to_s,
31
+ title: 'Your Job Application',
32
+ message: "Your Job Application #{job_title} was created now."
26
33
  )
27
34
  end
28
35
  end
@@ -1,10 +1,17 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
- # @author Sascha Manns
4
- # @abstract module for adding new applications on the csv table
5
- #
6
1
  # Copyright (C) 2015-2017 Sascha Manns <Sascha.Manns@mailbox.org>
7
- # License: MIT
2
+ #
3
+ # This program is free software: you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation, either version 3 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
8
15
 
9
16
  # Dependencies
10
17
  require 'csv'
@@ -14,29 +21,33 @@ module LatexCurriculumVitae
14
21
  # Module for creating and appending the outfile
15
22
  module CVOutfile
16
23
  # Method to adding the data into the csv file
17
- # @param [String] jobtitle Title of the job application
24
+ # @param [String] job_title Title of the job application
18
25
  # @param [String] company Companyname for the application
19
26
  # @param [String] contact Name of the Contact in the Company
20
- # @param [String] emailaddress Emailaddress of the Contact
21
- # @param [String] csvout Name of the CSV-Outfile
22
- # @param [String] joburl The shortened URL
23
- def self.add_to_outfile(jobtitle, company, contact, emailaddress, csvout, joburl)
27
+ # @param [String] email_address Emailaddress of the Contact
28
+ # @param [String] csv_out Name of the CSV-Outfile
29
+ # @param [String] job_url_checked The shortened URL
30
+ # TODO: Try to fix this in future
31
+ # rubocop:disable Metrics/AbcSize
32
+ # This method smells of :reek:LongParameterList
33
+ def self.add_to_outfile(job_title, company, contact, email_address, csv_out, job_url_checked)
24
34
  time = Time.new
25
35
  date = time.strftime('%Y-%m-%d')
26
36
  contact.gsub!('%20', ' ')
27
- jobtitle.gsub!('%20', ' ')
28
- jobtitle.gsub!('%26', '&')
29
- if File.exist?(csvout)
37
+ job_title.gsub!('%20', ' ')
38
+ job_title.gsub!('%26', '&')
39
+ if File.exist?(csv_out)
30
40
  puts 'do nothing'
31
41
  else
32
- FileUtils.touch(csvout)
33
- File.write "#{csvout}", <<EOF
42
+ FileUtils.touch(csv_out)
43
+ # rubocop:disable IndentHeredoc
44
+ File.write csv_out.to_s, <<CSV
34
45
  date,company,job,contact,email,status, joburl
35
- EOF
46
+ CSV
36
47
  end
37
- CSV.open("#{csvout}", 'a+') do |csv|
48
+ CSV.open(csv_out.to_s, 'a+') do |csv|
38
49
  # datum,firma,stelle,kontakt,email,status,joburl
39
- csv << ["#{date}", "#{company}", "#{jobtitle}", "#{contact}", "#{emailaddress}", 'Open', "#{joburl}"]
50
+ csv << [date.to_s, company.to_s, job_title.to_s, contact.to_s, email_address.to_s, 'Open', job_url_checked.to_s]
40
51
  end
41
52
  end
42
53
  end