rresume 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README +34 -0
- data/lib/README +14 -0
- data/lib/hula.html +62 -0
- data/lib/pdf-test.rb +8 -0
- data/lib/pdf-test2.rb +19 -0
- data/lib/rresume/duration.rb +19 -0
- data/lib/rresume/person.rb +12 -0
- data/lib/rresume/project.rb +121 -0
- data/lib/rresume/projectlist.rb +371 -0
- data/lib/rresume/tool.rb +14 -0
- data/lib/rresume.rb +6 -0
- data/lib/tables.rb +2 -0
- data/lib/thomas.rb +516 -0
- data/lib/thomas.template +7 -0
- data/lib/ttt.rb +9 -0
- data/test/tc_person.rb +122 -0
- data/test/tc_project.rb +16 -0
- data/test/tc_resume.rb +149 -0
- data/test/tc_tool.rb +20 -0
- data/test/ts_rresume.rb +5 -0
- metadata +66 -0
data/README
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
Hi.
|
2
|
+
|
3
|
+
Ich arbeite gerade daran, mir ein Tool zu erstellen, das mir ein pers�nliches Profil erstellen kann, �ber durchgef�hrt Projekte als Freiberufler (kann aber nat�rlich auch f�r andere Personen oder Zwecke verwendet werden).
|
4
|
+
|
5
|
+
Grob gesagt, soll man angeben k�nnen, es dieses und jenes Projekt mit Branche, Beschreibung, Start, Ende, verwendet Programmiersprachen, Datenbanken, Betriebsssteme, sonstige Tools.
|
6
|
+
|
7
|
+
Als Ergebnis werden zum einen die Projekt in chronologischer Reihenfolge (sp�ter wahlweise auf- oder absteigend sortiert) ausgegeben.
|
8
|
+
|
9
|
+
Die Hauptmotivation f�r mich war aber das Summieren der Zeiten �ber alle Projekte je Sprache, DB, oder Betriebssystem weil ich das immer m�hsam zu Fu� erledigen mu�te.
|
10
|
+
|
11
|
+
Ein Ausgabe kann dann z.B. so aussehen:
|
12
|
+
|
13
|
+
[color=orange]
|
14
|
+
Branche: Milit�r
|
15
|
+
Beschreibung: umfangreiche Datenbankroutinen zu Flugprogrammen fuer Fernlenkraketen �ber und unter Wasser erstellt
|
16
|
+
Von/Bis: 1/1999 - 3/2000
|
17
|
+
Monate: 15
|
18
|
+
Tools: C PHP Oracle Windows
|
19
|
+
--------------------------------------------------------------------------------
|
20
|
+
Branche: Naturschutz
|
21
|
+
Beschreibung: Statistische Analyse von Walbeobachtungsdaten
|
22
|
+
Von/Bis: 4/2000 - 6/2000
|
23
|
+
Monate: 3
|
24
|
+
Tools: Perl
|
25
|
+
--------------------------------------------------------------------------------.
|
26
|
+
ingesamt C-Programmierung: 15
|
27
|
+
ingesamt PHP-Programmierung: 15
|
28
|
+
ingesamt Oracle-Programmierung: 15
|
29
|
+
ingesamt Windows-Programmierung: 15
|
30
|
+
ingesamt Perl-Programmierung: 3
|
31
|
+
[/color]
|
32
|
+
|
33
|
+
Dies ist nat�rlich nur ein erster Entwurf, um das Funktionieren zu testen. Sp�ter soll man noch angeben k�nnen, ob man z.B. Ausgabe als einfachen Text, HTML, XML oder PDF m�chte.
|
34
|
+
|
data/lib/README
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
Rresume is a tool for creating resumes, especially for freelancer in the IT-sector.
|
2
|
+
|
3
|
+
You can define projects which you have done (with description, start date, end date, and tools/skills you have used).
|
4
|
+
|
5
|
+
With this, the tool generates a nice resume and summarizes the time of experienc
|
6
|
+
for each 'tool' like programming languages, operating systems, databases and so on. You can freely decide, what tools you use and to which category a tool belongs.
|
7
|
+
|
8
|
+
It is also not limited to peope in IT, you can organize your skills and categories as you like.
|
9
|
+
|
10
|
+
The output can be ASCII-Text, HTML, .doc, PDF.
|
11
|
+
|
12
|
+
Sorry, currently the language is only german.
|
13
|
+
|
14
|
+
|
data/lib/hula.html
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
|
2
|
+
<h1>sonstige Tools</h1>
|
3
|
+
<table border="1">
|
4
|
+
<tr>
|
5
|
+
<th>Name</th>
|
6
|
+
<th>Dauer</th>
|
7
|
+
<th>zuletzt</th>
|
8
|
+
</tr>
|
9
|
+
<tr>
|
10
|
+
<td>AWK</td>
|
11
|
+
<td>19</td>
|
12
|
+
<td>1/2000</td>
|
13
|
+
</tr>
|
14
|
+
<tr>
|
15
|
+
<td>SQL-Loader</td>
|
16
|
+
<td>22</td>
|
17
|
+
<td>6/2000</td>
|
18
|
+
</tr>
|
19
|
+
<tr>
|
20
|
+
<td>PL/SQL</td>
|
21
|
+
<td>34</td>
|
22
|
+
<td>6/2000</td>
|
23
|
+
</tr>
|
24
|
+
<tr>
|
25
|
+
<td>CSS</td>
|
26
|
+
<td>5</td>
|
27
|
+
<td>8/2006</td>
|
28
|
+
</tr>
|
29
|
+
<tr>
|
30
|
+
<td>C-ISAM</td>
|
31
|
+
<td>50</td>
|
32
|
+
<td>6/1991</td>
|
33
|
+
</tr>
|
34
|
+
<tr>
|
35
|
+
<td>Oracle-Reports</td>
|
36
|
+
<td>12</td>
|
37
|
+
<td>9/1998</td>
|
38
|
+
</tr>
|
39
|
+
<tr>
|
40
|
+
<td>Oracle-Designer</td>
|
41
|
+
<td>12</td>
|
42
|
+
<td>9/1998</td>
|
43
|
+
</tr>
|
44
|
+
<tr>
|
45
|
+
<td>TOAD</td>
|
46
|
+
<td>29</td>
|
47
|
+
<td>1/2000</td>
|
48
|
+
</tr>
|
49
|
+
<tr>
|
50
|
+
<td>Shell-Script</td>
|
51
|
+
<td>75</td>
|
52
|
+
<td>1/2000</td>
|
53
|
+
</tr>
|
54
|
+
</table>
|
55
|
+
d>8/2006</td>
|
56
|
+
</tr>
|
57
|
+
<tr>
|
58
|
+
<td>Perl</td>
|
59
|
+
<td>3</td>
|
60
|
+
<td>6/1996</td>
|
61
|
+
</tr>
|
62
|
+
</table>
|
data/lib/pdf-test.rb
ADDED
data/lib/pdf-test2.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'pdf/writer'
|
5
|
+
rescue LoadError => le
|
6
|
+
if le.message =~ %r{pdf/writer$}
|
7
|
+
$LOAD_PATH.unshift("../lib")
|
8
|
+
require 'pdf/writer'
|
9
|
+
else
|
10
|
+
raise
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
pdf = PDF::Writer.new
|
15
|
+
pdf.select_font "Times-Roman"
|
16
|
+
pdf.text "Hello, Ruby.", :font_size => 72, :justification => :center
|
17
|
+
|
18
|
+
pdf.save_as("hello.pdf")
|
19
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Duration
|
2
|
+
|
3
|
+
def human_months(months)
|
4
|
+
if months > 12
|
5
|
+
mehrzahl=""
|
6
|
+
mehrzahl="e" if months > 24-1
|
7
|
+
"> "+jahre(months).to_s+" Jahr"+mehrzahl
|
8
|
+
else
|
9
|
+
mehrzahl=""
|
10
|
+
mehrzahl="e" if months > 1
|
11
|
+
months.to_s+" Monat"+mehrzahl
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def jahre(monate)
|
16
|
+
monate/12.0.round
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class Person
|
2
|
+
|
3
|
+
attr_reader :firstname, :lastname
|
4
|
+
attr_accessor :adresse, :plz, :ort, :telefon, :mobil, :email, :education_list,
|
5
|
+
:weiterbildungen, :fremdsprachen
|
6
|
+
|
7
|
+
def initialize(firstname="",lastname="")
|
8
|
+
@firstname = firstname
|
9
|
+
@lastname = lastname
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
require 'date'
|
2
|
+
require 'rresume/duration'
|
3
|
+
require 'rresume.rb'
|
4
|
+
|
5
|
+
class Project
|
6
|
+
include Duration
|
7
|
+
|
8
|
+
attr_reader :titel, :von_monat, :von_jahr, :bis_monat, :bis_jahr
|
9
|
+
attr_accessor :beschreibung, :branche
|
10
|
+
|
11
|
+
def initialize(titel)
|
12
|
+
@titel = titel
|
13
|
+
@beschreibung = ""
|
14
|
+
@branche = ""
|
15
|
+
@tools = []
|
16
|
+
end
|
17
|
+
|
18
|
+
def <=> (other)
|
19
|
+
if self.von_jahr < other.von_jahr
|
20
|
+
-1
|
21
|
+
elsif self.von_jahr > other.von_jahr
|
22
|
+
1
|
23
|
+
else # gleich
|
24
|
+
if self.von_monat < other.von_monat
|
25
|
+
-1
|
26
|
+
elsif self.von_monat > other.von_monat
|
27
|
+
1
|
28
|
+
else
|
29
|
+
0
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_s
|
35
|
+
"#{@titel}\n"+
|
36
|
+
"#{@branche}\n"+
|
37
|
+
"#{@beschreibung}\n"+
|
38
|
+
"#{monatsbezeichnung(@von_jahr,@von_monat)}\n"+
|
39
|
+
"#{monatsbezeichnung(@bis_jahr,@bis_monat)}\n"
|
40
|
+
end
|
41
|
+
|
42
|
+
def output(mode=nil)
|
43
|
+
if mode == :html
|
44
|
+
puts "<td valign=\"top\">"+html(@branche)+"</td>"
|
45
|
+
puts "<td valign=\"top\">"+html(@beschreibung)+"<br>"
|
46
|
+
@tools.each {|tool|
|
47
|
+
print html(tool.name)+" "
|
48
|
+
}
|
49
|
+
puts "</td>"
|
50
|
+
#puts "<td valign=\"top\">#{monatsbezeichnung(@von_jahr,@von_monat)} - "+
|
51
|
+
# "#{monatsbezeichnung(@bis_jahr,@bis_monat)}"+"</td>"
|
52
|
+
puts "<td valign=\"top\">#{human_months(self.monate)}"+"</td>"
|
53
|
+
print "<td valign=\"top\">"
|
54
|
+
puts "#{monatsbezeichnung(@bis_jahr,@bis_monat)}"
|
55
|
+
puts "</td>"
|
56
|
+
else
|
57
|
+
#-- als einfache Liste ausgeben
|
58
|
+
puts "Branche:\t"+@branche
|
59
|
+
puts "Beschreibung:\t"+@beschreibung
|
60
|
+
puts "Von/Bis:\t#{monatsbezeichnung(@von_jahr,@von_monat)} - "+
|
61
|
+
"#{monatsbezeichnung(@bis_jahr,@bis_monat)}"
|
62
|
+
puts "Monate:\t\t#{human_months(self.monate)}"
|
63
|
+
print "Tools:\t\t"
|
64
|
+
@tools.each {|tool|
|
65
|
+
print tool.name+" "
|
66
|
+
}
|
67
|
+
print "\n"
|
68
|
+
puts "-"*80
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def von(monat,jahr)
|
73
|
+
@von_monat = monat
|
74
|
+
@von_jahr = jahr
|
75
|
+
end
|
76
|
+
|
77
|
+
def bis(monat,jahr)
|
78
|
+
@bis_monat = monat
|
79
|
+
@bis_jahr = jahr
|
80
|
+
end
|
81
|
+
|
82
|
+
# gibt Dauer in Monaten zur�ck
|
83
|
+
def monate
|
84
|
+
von = Date.new(@von_jahr,@von_monat,1)
|
85
|
+
bis = Date.new(@bis_jahr,@bis_monat,1)
|
86
|
+
bis = bis >> 1
|
87
|
+
((bis-von).to_f/30).round
|
88
|
+
end
|
89
|
+
|
90
|
+
def dauer
|
91
|
+
"#{monate} Monate"
|
92
|
+
end
|
93
|
+
|
94
|
+
def used_tool(tool)
|
95
|
+
@tools << tool
|
96
|
+
end
|
97
|
+
|
98
|
+
def tools
|
99
|
+
@tools
|
100
|
+
end
|
101
|
+
|
102
|
+
private
|
103
|
+
# Sonderzeichen > html
|
104
|
+
def html(str)
|
105
|
+
str.gsub!(/�/,"ä")
|
106
|
+
str.gsub!(/�/,"ö")
|
107
|
+
str.gsub!(/�/,"ü")
|
108
|
+
str.gsub!(/�/,"Ä")
|
109
|
+
str.gsub!(/�/,"Ö")
|
110
|
+
str.gsub!(/�/,"Ü")
|
111
|
+
str.gsub!(/�/,"ß")
|
112
|
+
str.gsub!(/</,"<")
|
113
|
+
str.gsub!(/>/,">")
|
114
|
+
str
|
115
|
+
end
|
116
|
+
|
117
|
+
# liefert Datum in Form 4/2000 als Monatsangabe
|
118
|
+
def monatsbezeichnung(jahr,monat)
|
119
|
+
"#{monat}/#{jahr}"
|
120
|
+
end
|
121
|
+
end
|
@@ -0,0 +1,371 @@
|
|
1
|
+
#require 'project'
|
2
|
+
#require 'duration'
|
3
|
+
class String
|
4
|
+
def to_html
|
5
|
+
self.gsub!(/�/,"ä")
|
6
|
+
gsub!(/�/,"ö")
|
7
|
+
gsub!(/�/,"ü")
|
8
|
+
gsub!(/�/,"Ä")
|
9
|
+
gsub!(/�/,"Ö")
|
10
|
+
gsub!(/�/,"Ü")
|
11
|
+
gsub!(/�/,"ß")
|
12
|
+
gsub!(/</,"<")
|
13
|
+
gsub!(/>/,">")
|
14
|
+
self
|
15
|
+
end
|
16
|
+
end # String
|
17
|
+
|
18
|
+
class ProjectList
|
19
|
+
include Duration
|
20
|
+
|
21
|
+
def initialize(person)
|
22
|
+
@person = person
|
23
|
+
@projects = []
|
24
|
+
end
|
25
|
+
|
26
|
+
def << (project)
|
27
|
+
@projects << project
|
28
|
+
end
|
29
|
+
|
30
|
+
def list
|
31
|
+
@projects.each {|p|
|
32
|
+
puts p
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
# output personal data like schools, universities, diplomas, etc.
|
37
|
+
def output_personal(*args)
|
38
|
+
tmpl = TemplateText.new <<END
|
39
|
+
|
40
|
+
<HTML>
|
41
|
+
|
42
|
+
<HEAD>
|
43
|
+
<TITLE>Profil #{@person.firstname} #{@person.lastname}</TITLE>
|
44
|
+
</HEAD>
|
45
|
+
|
46
|
+
<BODY BACKGROUND="" BGCOLOR="#ffffff" TEXT="#000000" LINK="#0000ff" VLINK="#800080" ALINK="#ff0000">
|
47
|
+
|
48
|
+
Dokument: <code>
|
49
|
+
<a href="http://www.thopre.de/profil.html">
|
50
|
+
http://www.thopre.de/profil.html
|
51
|
+
</a>
|
52
|
+
</code>
|
53
|
+
|
54
|
+
<p>
|
55
|
+
<TABLE BORDER="1" WIDTH="100%" cellpadding="5">
|
56
|
+
<TR>
|
57
|
+
<TD valign="top">
|
58
|
+
<B>Profil</B> von<BR>
|
59
|
+
#{@person.firstname} #{@person.lastname}<br>
|
60
|
+
Stand: #{DateTime.now.to_s[0,10]}<br>
|
61
|
+
</TD>
|
62
|
+
<TD>
|
63
|
+
#{@person.adresse}<br>
|
64
|
+
#{@person.plz} #{@person.ort}<br>
|
65
|
+
Tel.: #{@person.telefon}<BR>
|
66
|
+
</TD>
|
67
|
+
<TD valign="top">
|
68
|
+
mobile: #{@person.mobil}<BR>
|
69
|
+
email: <a href="mailto:#{@person.email}">#{@person.email}</a><BR>
|
70
|
+
|
71
|
+
</TD>
|
72
|
+
</TR>
|
73
|
+
</TABLE>
|
74
|
+
|
75
|
+
|
76
|
+
<ol>
|
77
|
+
<li><a href="#hw">Hardware</a>
|
78
|
+
<li><a href="#bs">Betriebssysteme</a>
|
79
|
+
<li><a href="#db">Datenbanken</a>
|
80
|
+
<li><a href="#to">Tools / Sonstiges</a>
|
81
|
+
<li><a href="#la">Programmiersprachen</a>
|
82
|
+
<li><a href="#pr">Projekte</a>
|
83
|
+
</ol>
|
84
|
+
<hr>
|
85
|
+
|
86
|
+
<H1>Aktuelles</H1>
|
87
|
+
|
88
|
+
Verfügbarkeit: In den als frei gekennzeichneten Monaten bin ich aktuell
|
89
|
+
noch verfügbar. In den anderen bin ich ganz oder teilweise
|
90
|
+
gebucht. Ggf. gibt es aber auch da Möglichkeiten einer Zusammenarbeit,
|
91
|
+
falls es sich um kleinere Aufgaben handelt.
|
92
|
+
<p>
|
93
|
+
<table border="1" width="100%">
|
94
|
+
<tr>
|
95
|
+
<td><b>Verfügbarkeit</b> </td>
|
96
|
+
<td>01 </td>
|
97
|
+
<td>02 </td>
|
98
|
+
<td>03 </td>
|
99
|
+
<td>04 </td>
|
100
|
+
<td>05 </td>
|
101
|
+
<td>06 </td>
|
102
|
+
<td>07 </td>
|
103
|
+
<td>08 </td>
|
104
|
+
<td>09 </td>
|
105
|
+
<td>10 </td>
|
106
|
+
<td>11 </td>
|
107
|
+
<td>12 </td>
|
108
|
+
</tr>
|
109
|
+
<tr>
|
110
|
+
<td>2006</td>
|
111
|
+
<!-- 01 --> <td bgcolor="lightgreen">frei </td>
|
112
|
+
<!-- 02 --> <td bgcolor="lightgreen">frei </td>
|
113
|
+
<!-- 03 --> <td bgcolor="lightgreen">frei </td>
|
114
|
+
<!-- 04 --> <td bgcolor="lightgreen">frei </td>
|
115
|
+
<!-- 05 --> <td bgcolor="lightgreen">frei </td>
|
116
|
+
<!-- 06 --> <td bgcolor="black"><font color="white">gebucht</font></td>
|
117
|
+
<!-- 07 --> <td bgcolor="black"><font color="white">gebucht</font></td>
|
118
|
+
<!-- 08 --> <td bgcolor="black"><font color="white">gebucht</font></td>
|
119
|
+
<!-- 09 --> <td bgcolor="lightgreen">frei </td>
|
120
|
+
<!-- 10 --> <td bgcolor="lightgreen">frei </td>
|
121
|
+
<!-- 11 --> <td bgcolor="lightgreen">frei </td>
|
122
|
+
<!-- 12 --> <td bgcolor="lightgreen">frei </td>
|
123
|
+
</tr>
|
124
|
+
<tr>
|
125
|
+
<td>2007</td>
|
126
|
+
<!-- 01 --> <td bgcolor="lightgreen">frei </td>
|
127
|
+
<!-- 02 --> <td bgcolor="lightgreen">frei </td>
|
128
|
+
<!-- 03 --> <td bgcolor="lightgreen">frei </td>
|
129
|
+
<!-- 04 --> <td bgcolor="lightgreen">frei </td>
|
130
|
+
<!-- 05 --> <td bgcolor="lightgreen">frei </td>
|
131
|
+
<!-- 06 --> <td bgcolor="lightgreen">frei </td>
|
132
|
+
<!-- 07 --> <td bgcolor="lightgreen">frei </td>
|
133
|
+
<!-- 08 --> <td bgcolor="lightgreen">frei </td>
|
134
|
+
<!-- 09 --> <td bgcolor="lightgreen">frei </td>
|
135
|
+
<!-- 10 --> <td bgcolor="lightgreen">frei </td>
|
136
|
+
<!-- 11 --> <td bgcolor="lightgreen">frei </td>
|
137
|
+
<!-- 12 --> <td bgcolor="lightgreen">frei </td>
|
138
|
+
</tr>
|
139
|
+
</table>
|
140
|
+
|
141
|
+
<p>
|
142
|
+
|
143
|
+
<TABLE border="1" cellspacing="0" cellpadding="4">
|
144
|
+
<!--
|
145
|
+
<TR>
|
146
|
+
<TD >
|
147
|
+
<B>
|
148
|
+
Verfügbarkeit:
|
149
|
+
</B>
|
150
|
+
</TD>
|
151
|
+
<TD >
|
152
|
+
ab 03/2003
|
153
|
+
</TD>
|
154
|
+
</TR>
|
155
|
+
-->
|
156
|
+
<TR>
|
157
|
+
<TD >
|
158
|
+
<B>
|
159
|
+
bevorzugter Einsatzort:
|
160
|
+
</B>
|
161
|
+
</TD>
|
162
|
+
<TD >
|
163
|
+
Raum Berlin.
|
164
|
+
</TD>
|
165
|
+
</TR>
|
166
|
+
<TR>
|
167
|
+
<TD >
|
168
|
+
<B>
|
169
|
+
<!-- ich möchte mich in Zukunft auf folgenden Gebieten weiter entwickeln:
|
170
|
+
--> </B>
|
171
|
+
</TD>
|
172
|
+
<TD >
|
173
|
+
<!-- e-Commerce, Internet-Anwendungen
|
174
|
+
--> </TD>
|
175
|
+
|
176
|
+
</TR>
|
177
|
+
<TR>
|
178
|
+
<TD >
|
179
|
+
<B>
|
180
|
+
Stundensatz:
|
181
|
+
</B>
|
182
|
+
</TD>
|
183
|
+
<TD >
|
184
|
+
<!-- 70 €/h zuzügl. MwSt.
|
185
|
+
-->
|
186
|
+
nach Vereinbarung
|
187
|
+
</TD>
|
188
|
+
|
189
|
+
</TR>
|
190
|
+
</TABLE>
|
191
|
+
|
192
|
+
<A NAME="link"><H1>Persönliche Daten</H1></A>
|
193
|
+
<TABLE width="95%" border="0" cellspacing="0" cellpadding="4">
|
194
|
+
<TR>
|
195
|
+
<!-- Row 1 Column 1 -->
|
196
|
+
<TD >
|
197
|
+
<B>
|
198
|
+
Geburtsdatum:
|
199
|
+
</B>
|
200
|
+
</TD>
|
201
|
+
<!-- Row 1 Column 2 -->
|
202
|
+
<TD >
|
203
|
+
1961-11-21
|
204
|
+
</TD>
|
205
|
+
</TR>
|
206
|
+
<TR>
|
207
|
+
<!-- Row 2 Column 1 -->
|
208
|
+
<TD valign="top">
|
209
|
+
<B>
|
210
|
+
Ausbildung:
|
211
|
+
</B>
|
212
|
+
</TD>
|
213
|
+
<!-- Row 2 Column 2 -->
|
214
|
+
<TD >
|
215
|
+
<div id="educations"></div>
|
216
|
+
</TD>
|
217
|
+
</TR>
|
218
|
+
<TR>
|
219
|
+
<TD >
|
220
|
+
<B>
|
221
|
+
Fortbildung:
|
222
|
+
</B>
|
223
|
+
</TD>
|
224
|
+
<TD >
|
225
|
+
<div id="weiterbildungen"></div>
|
226
|
+
</TD>
|
227
|
+
</TR>
|
228
|
+
<TR>
|
229
|
+
<TD valign="top">
|
230
|
+
<B>
|
231
|
+
Fremdsprachen:
|
232
|
+
</B>
|
233
|
+
</TD>
|
234
|
+
<TD >
|
235
|
+
<div id="fremdsprachen"></div>
|
236
|
+
</TD>
|
237
|
+
</TR>
|
238
|
+
</TABLE>
|
239
|
+
|
240
|
+
END
|
241
|
+
puts "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">"
|
242
|
+
array1 = @person.education_list
|
243
|
+
array2 = @person.weiterbildungen
|
244
|
+
array3 = @person.fremdsprachen
|
245
|
+
data = {
|
246
|
+
:educations => array1,
|
247
|
+
:weiterbildungen => array2,
|
248
|
+
:fremdsprachen => array3,
|
249
|
+
}
|
250
|
+
|
251
|
+
tmpl.prettyprint = true
|
252
|
+
tmpl.expand(STDOUT, data)
|
253
|
+
end
|
254
|
+
|
255
|
+
def output (newest_first = true, mode=nil)
|
256
|
+
puts "<h1>" if mode == :html
|
257
|
+
puts "Projekte"
|
258
|
+
puts "</h1>" if mode == :html
|
259
|
+
puts "<table border=\"1\" width=\"100%\" cellpadding=\"5\">" if mode == :html
|
260
|
+
if mode == :html
|
261
|
+
puts "<td width=\"10%\"><b>Branche</b></td>"
|
262
|
+
puts "<td width=\"70%\"><b>Beschreibung</b></td>"
|
263
|
+
puts "<td width=\"10%\"><b>Dauer</b></td>"
|
264
|
+
puts "<td width=\"10%\"><b>zuletzt</b></td>"
|
265
|
+
end
|
266
|
+
if newest_first
|
267
|
+
@projects.sort.reverse.each {|project|
|
268
|
+
puts "<tr>" if mode == :html
|
269
|
+
project.output(mode)
|
270
|
+
puts "</tr>" if mode == :html
|
271
|
+
}
|
272
|
+
else
|
273
|
+
@projects.sort.each {|project|
|
274
|
+
puts "<tr>" if mode == :html
|
275
|
+
project.output(mode)
|
276
|
+
puts "</tr>" if mode == :html
|
277
|
+
}
|
278
|
+
end
|
279
|
+
puts "</table>" if mode == :html
|
280
|
+
end
|
281
|
+
|
282
|
+
def output_category (category, mode=:text)
|
283
|
+
array1 = []
|
284
|
+
category[1].sort.each {|tool|
|
285
|
+
monate = total_for(tool)
|
286
|
+
#print "ingesamt #{tool.name}: "+monate.to_s+" Monate"
|
287
|
+
#if monate > 12
|
288
|
+
#print "\t(> "+jahre(monate).to_s+" Jahre)"
|
289
|
+
#end
|
290
|
+
#puts " zuletzt "+projectlist.last_used(tool)
|
291
|
+
array1 << { :name=>tool.name, :dauer=>human_months(monate), :zuletzt=>last_used(tool) }
|
292
|
+
}
|
293
|
+
#######################################
|
294
|
+
tmpl = TemplateText.new <<END
|
295
|
+
<h1>#{category[0]}</h1>
|
296
|
+
<table border="1" width="100%" cellpadding="5">
|
297
|
+
<tr>
|
298
|
+
<th>Name</th>
|
299
|
+
<th>Dauer</th>
|
300
|
+
<th>zuletzt</th>
|
301
|
+
</tr>
|
302
|
+
<tr id=table1>
|
303
|
+
<td id="name">
|
304
|
+
<td id="dauer">
|
305
|
+
<td id="zuletzt" align="right">
|
306
|
+
</tr>
|
307
|
+
</table>
|
308
|
+
END
|
309
|
+
|
310
|
+
data = {
|
311
|
+
:table1=>array1
|
312
|
+
}
|
313
|
+
tmpl.prettyprint = true
|
314
|
+
tmpl.expand(STDOUT, data)
|
315
|
+
#f = File.open("hula#{cate[0]}.html","w")
|
316
|
+
end
|
317
|
+
|
318
|
+
def output_werbung(mode=:text)
|
319
|
+
puts "<br>generated with Ruby <a href=\"http://www.thopre.de/rresume.html\">rresume</a>" if mode == :html
|
320
|
+
end
|
321
|
+
|
322
|
+
def total_for(wanted)
|
323
|
+
months = 0
|
324
|
+
@projects.each {|project|
|
325
|
+
project.tools.each {|tool|
|
326
|
+
if wanted.kind_of?(String)
|
327
|
+
if tool.name == wanted
|
328
|
+
months += project.monate
|
329
|
+
end
|
330
|
+
end
|
331
|
+
if wanted.kind_of?(Tool)
|
332
|
+
if tool.name == wanted.name
|
333
|
+
months += project.monate
|
334
|
+
end
|
335
|
+
end
|
336
|
+
}
|
337
|
+
}
|
338
|
+
months
|
339
|
+
end
|
340
|
+
|
341
|
+
def last_used(wanted)
|
342
|
+
last_year = last_month = 0
|
343
|
+
@projects.each {|project|
|
344
|
+
project.tools.each {|tool|
|
345
|
+
if tool.name == wanted.name
|
346
|
+
if project.bis_jahr > last_year ||
|
347
|
+
project.bis_jahr == last_year && project.bis_monat > last_month
|
348
|
+
last_year = project.bis_jahr
|
349
|
+
last_month = project.bis_monat
|
350
|
+
end
|
351
|
+
end
|
352
|
+
}
|
353
|
+
}
|
354
|
+
"#{last_month.to_s}/#{last_year.to_s}"
|
355
|
+
end
|
356
|
+
|
357
|
+
private
|
358
|
+
|
359
|
+
#def human_months(months)
|
360
|
+
#if months > 12
|
361
|
+
#"> "+jahre(months).to_s+" Jahre"
|
362
|
+
#else
|
363
|
+
#months.to_s+" Monate"
|
364
|
+
#end
|
365
|
+
#end
|
366
|
+
|
367
|
+
#def jahre(monate)
|
368
|
+
#monate/12.0.round
|
369
|
+
#end
|
370
|
+
|
371
|
+
end
|
data/lib/rresume/tool.rb
ADDED
data/lib/rresume.rb
ADDED
data/lib/tables.rb
ADDED