rresume 0.0.2
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.
- 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