Sprichwoerter 0.1 → 1.7

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.
@@ -0,0 +1,291 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+ <meta name="generator" content="vim - Vi Improved, a programmer's editor; HTML Tidy for Linux version 5.8.0
5
+ "/>
6
+ <meta charset="utf-8" />
7
+ <meta name="viewport" content=
8
+ "width=device-width, initial-scale=1" />
9
+ <title>Sprichwoerter</title>
10
+ <style type="text/css">
11
+ /*<![CDATA[*/
12
+
13
+ /*
14
+ :Author: Michael Uplawski
15
+ :Contact: michael.uplawski@uplawski.eu
16
+ :License: WTFPL 2.0, see http://www.wtfpl.net/about/
17
+
18
+ Stylesheet for use with Docutils.
19
+ */
20
+
21
+ body {
22
+ background-color:#e0f0c0;
23
+ font-family: Verdana,Helvetica,Univers;
24
+ }
25
+
26
+ p {width: 80%;}
27
+
28
+ h1.title {color:#800080;font-size:2em;}
29
+ h2 {color:darkblue;font-size:1.5em;}
30
+ h3 {color:#3030f0;font-size:1em;}
31
+
32
+ nav:before {
33
+ content:'Contents';
34
+ font-weight:bold;
35
+ color:darkblue;
36
+ font-size:1.5em;
37
+ }
38
+
39
+ p, ul.simple, ol.simple, dt {margin-left:2em;}
40
+ dd {margin-left:4em;}
41
+
42
+ /* correct left margin of nested block tags*/
43
+ dd p, li p {margin-left:0;}
44
+ dd * ul {margin-left:0 ! important; }
45
+ dd ul {margin-left:0 ! important; }
46
+ dd dl dt, dd dl dd {margin-left:0 ! important;}
47
+
48
+ em {color:#000080;
49
+ background-color:#ffffa0;
50
+ }
51
+
52
+ pre.literal-block {
53
+ margin-left:2em;
54
+ font-family:Verdana,Helvetica,Univers;
55
+ }8
56
+ blockquote {background-color:#ffc090;
57
+ padding:0.5em;
58
+ width:80%;
59
+ border-radius:0.5em;
60
+ }
61
+
62
+
63
+ /*]]>*/
64
+ </style>
65
+ </head>
66
+ <body>
67
+ <main id="sprichwoerter">
68
+ <h1 class="title">Sprichwoerter</h1>
69
+
70
+ <p class="subtitle" id=
71
+ "kombiniert-anfange-und-enden-von-sprichwortern-zu-neuen-meist-sinnlosen-sprichwortern">
72
+ Kombiniert Anfänge und Enden von Sprichwörtern zu neuen, meist
73
+ sinnlosen, Sprichwörtern.</p>
74
+
75
+ <p><em>Proverbs</em> - Der englische Name für das gleiche
76
+ Programm.</p>
77
+
78
+ <section id="programmaufruf">
79
+ <h2>Programmaufruf</h2>
80
+
81
+ <blockquote>
82
+ <p><strong>sprichwoerter</strong>
83
+ </p>
84
+
85
+ <p><strong>sprichwoerter -[wf &lt;FARBE&gt;] (--werten
86
+ --farbe=&lt;FARBE&gt;)</strong>
87
+ </p>
88
+
89
+ <p><strong>sprichwoerter -l (--liste)</strong>
90
+ </p>
91
+
92
+ <p><strong>sprichwoerter -n (--neu)</strong>
93
+ </p>
94
+
95
+ <p><strong>sprichwoerter -h (--help)</strong>
96
+ </p>
97
+
98
+ <p><strong>sprichwoerter -v (--version)</strong>
99
+ </p>
100
+ </blockquote>
101
+ </section>
102
+
103
+ <section id="beschreibung">
104
+ <h2>Beschreibung</h2>
105
+
106
+ <p>Das Programm kombiniert die Anfänge und Enden von zufällig
107
+ aus einer Liste ausgewählten Sprichwörtern. Das Ergebnis ist
108
+ ein Satz, der immer noch als eine Art „Sprichwort“ erkennbar
109
+ ist, allerdings ohne den Anspruch, eine wirkliche Information
110
+ zu vermitteln, geschweige denn „Weisheit“.</p>
111
+
112
+ <p>Ja. Eine lustige Zeitverschwendung. Sie können das
113
+ Programm „Sprichwörter“ zum Beispiel aus Ihrer
114
+ <em>.bashrc</em> Datei aufrufen.</p>
115
+
116
+ <p>Wenn <strong>Sprichwörter</strong> ohne Argumente von der
117
+ Kommandozeile gestartet wird, erzeugt es ein neues Sprichwort
118
+ und zeigt es an.</p>
119
+ </section>
120
+
121
+ <section id="optionen">
122
+ <h2>OPTIONEN</h2>
123
+
124
+ <dl class="simple">
125
+ <dt><strong>-n</strong> oder <strong>--neu</strong></dt>
126
+
127
+ <dd>
128
+ <p>Erlaubt es, neue aber echte Sprichwörter zur Liste der
129
+ originalen Sprichwörter hinzuzufügen. Sie werden zur
130
+ Eingabe jedes notwendigen Details einzeln aufgefordert:
131
+ Sprache (zur Zeit eines von <em>en</em> oder
132
+ <em>de</em>), Singular oder Plural (<em>s</em>,
133
+ <em>p</em>), Beginn und Ende des Sprichworts.</p>
134
+ </dd>
135
+
136
+ <dt><strong>-l</strong> oder <strong>--liste</strong></dt>
137
+
138
+ <dd>
139
+ <p>Gibt die Liste der bereits bewerteten, zufälligen
140
+ Sprichwörter auf dem Bildschirm aus.</p>
141
+ </dd>
142
+
143
+ <dt><strong>-w</strong> oder <strong>--werten</strong></dt>
144
+
145
+ <dd>
146
+ <p>Wenn ein neu erzeugtes Sprichwort angezeigt wird,
147
+ bleiben Ihnen einige Sekunden, um es eventuell zu
148
+ bewerten (durch drücken von '<em>+</em>') und damit in
149
+ die Liste der bewerteten Sprichwörter aufzunehmen.</p>
150
+ </dd>
151
+
152
+ <dt><strong>-f</strong> oder
153
+ <strong>--farbe=FARBE</strong></dt>
154
+
155
+ <dd>
156
+ <p>Bestimmt die Farbe des Rahmens, der ein neu
157
+ generiertes Sprichwort umgibt. Der Farbname muss einer
158
+ der folgenden sein: rot, grün, gelb, lila, cyan, blau,
159
+ weiß, schwarz.</p>
160
+ </dd>
161
+
162
+ <dt><strong>-h</strong> oder <strong>--hilfe</strong></dt>
163
+
164
+ <dd>
165
+ <p>Zeigt die Kurzhilfe zum Program.</p>
166
+ </dd>
167
+
168
+ <dt><strong>-v</strong> or <strong>--version</strong></dt>
169
+
170
+ <dd>
171
+ <p>Gibt Versions-Informationen aus.</p>
172
+ </dd>
173
+ </dl>
174
+
175
+ <section id="sprichworter-zur-liste-hinzufugen">
176
+ <h3>SPRICHWÖRTER ZUR LISTE HINZUFÜGEN</h3>
177
+
178
+ <p>Zur Zeit der Redaktion dieses Dokuments (Oktober 2019)
179
+ müssen Sprichwörter dem im Folgenden beschriebenen Muster
180
+ folgen:</p>
181
+
182
+ <p>"<em>Jemand oder etwas</em>" | "<strong>tut oder
183
+ ist</strong> <em>etwas</em>"</p>
184
+
185
+ <p>Führen Sie das Programm einfach ein paar Mal auf der
186
+ Kommandozeile aus, um diese Einschränkung zu verstehen.</p>
187
+
188
+ <p>Bis auf weiteres werden originale Sprichwörter in zwei
189
+ Gruppen eingeteilt: diejenigen, deren Subjekt unzählbar ist
190
+ oder im Singular steht (zum Beispiel „Der Zweck | heiligt
191
+ die Mittel“, „Hochmut | kommt vor dem Fall“) und die zweite
192
+ Gruppe von Sprichwörtern mit einem Subjekt im Plural (zum
193
+ Beispiel „Große Ereignisse | werfen ihre Schatten
194
+ voraus“)</p>
195
+ </section>
196
+ </section>
197
+
198
+ <section id="dateien">
199
+ <h2>DATEIEN</h2>
200
+
201
+ <p>Im versteckten Verzeichnis <em>.proverbs</em>, im
202
+ Benutzerverzeichnis, können drei Arten von Datei abgelegt
203
+ sein. Für die deutsche Version sind das:</p>
204
+
205
+ <dl class="simple">
206
+ <dt><em>liste_de.rb</em>
207
+ </dt>
208
+
209
+ <dd>
210
+ <p>Diese Datei enthält alle augenblicklich verfügbaren
211
+ originalen Sprichwörter. Sie existiert nur, wenn Sie
212
+ bereits ein solches Sprichwort zur Liste hinzugefügt
213
+ haben (mit Option <em>-n</em> oder <em>--neu</em>).</p>
214
+ </dd>
215
+
216
+ <dt><em>liste_de_bak.rb</em>
217
+ </dt>
218
+
219
+ <dd>
220
+ <p>Eine Sicherheitskopie der vorigen Version der Liste
221
+ originaler Sprichwörter.</p>
222
+ </dd>
223
+
224
+ <dt><em>qualifile_de</em>
225
+ </dt>
226
+
227
+ <dd>
228
+ <p>Diese Datei enthält die Liste der bereits bewerteten,
229
+ zufällig generierten Sprichwörter. Sie wird erzeugt, wenn
230
+ Sie zum ersten Mal eine Wertung vornehmen. Später wird
231
+ diese Liste angezeigt, wenn Sie das Programmargument -l
232
+ oder --liste verwenden.</p>
233
+ </dd>
234
+ </dl>
235
+ </section>
236
+
237
+ <section id="andere-informationen">
238
+ <h2>ANDERE INFORMATIONEN</h2>
239
+
240
+ <p>Das Gesellschaftsspiel "<em>Verrückte Sprichwörter</em>"
241
+ diente als Inspiration für die Entwicklung des Programms.</p>
242
+
243
+ <dl class="field-list simple">
244
+ <dt>Quellcode<span class="colon">:</span></dt>
245
+
246
+ <dd>
247
+ <p>"Sprichwörter" ist in <a class="reference external"
248
+ href="https://www.ruby-lang.org">Ruby</a> programmiert
249
+ und wird als <a class="reference external" href=
250
+ "https://rubygems.org/gems/Sprichwoerter">Ruby-Gem</a>
251
+ veröffentlicht. Wenn Sie das Programm aus der Gem-Datei
252
+ installiert haben, befinden sich alle Quellcode-Dateien
253
+ im Gem-Ordner für Ihre Ruby-Version. Anderenfalls können
254
+ sie auch die Gem-Datei entpacken (mit <em>tar</em>) und
255
+ dann das data-Archiv dekomprimieren. Der Quellcode
256
+ befindet sich danach in den Verzeichnissen
257
+ <strong>bin</strong> und <strong>lib</strong>.</p>
258
+ </dd>
259
+
260
+ <dt>Version<span class="colon">:</span></dt>
261
+
262
+ <dd>
263
+ <p>1.6 vom 15. Oktober 2019</p>
264
+ </dd>
265
+ </dl>
266
+
267
+ <dl class="field-list simple">
268
+ <dt>Lizenz<span class="colon">:</span></dt>
269
+
270
+ <dd>
271
+ <p>"Sprichwörter" ist freie Software gemäß den
272
+ Bestimmungen der <a class="reference external" href=
273
+ "https://www.wtfpl.net/about">WTFPL</a>, Version 2.0</p>
274
+ </dd>
275
+
276
+ <dt>Autor<span class="colon">:</span></dt>
277
+
278
+ <dd>
279
+ <p>"Sprichwörter" wurde von Michael Uplawski
280
+ &lt;<a class="reference external" href=
281
+ "mailto:michael.uplawski@uplawski.eu">michael.uplawski@uplawski.eu</a>&gt;
282
+ programmiert.</p>
283
+ </dd>
284
+ </dl>
285
+
286
+ <p><strong>Ω</strong>
287
+ </p>
288
+ </section>
289
+ </main>
290
+ </body>
291
+ </html>
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,124 @@
1
+ ==========
2
+ PROVERBS
3
+ ==========
4
+ ----------------------------------------------------------
5
+ Rearrange proverbs into new, mostly senseless, proverbs.
6
+ ----------------------------------------------------------
7
+
8
+ *Sprichwörter* is the German name for the same program.
9
+
10
+ Synopsis
11
+ ========
12
+
13
+ **proverbs**
14
+
15
+ **proverbs -[qc <COLOR>] (--qualify --color <COLOR>)**
16
+
17
+ **proverbs -f (--favorites)**
18
+
19
+ **proverbs -a (--add)**
20
+
21
+ **proverbs -h (--help)**
22
+
23
+ **proverbs -v (--version)**
24
+
25
+ DESCRIPTION
26
+ ============
27
+ The program combines the beginnings and the endings of proverbs randomly picked
28
+ from a list. The result is a phrase which is still recognizable as "kind of a
29
+ proverb" but without claiming to convey any real message, let alone "wisdom".
30
+
31
+ Yes. It is intended as a humorous waste of time. You can, for example, call
32
+ proverbs from your *.bashrc* file.
33
+
34
+ When called on the command-prompt as **proverbs** without any options, a newly
35
+ generated proverb will be printed out on screen.
36
+
37
+ OPTIONS
38
+ ============
39
+
40
+ **-a** or **--add**
41
+ Allows you to add a new, real proverb to the list of original proverbs. You
42
+ are prompted for each of the details: language (one of *en* or *de* at the
43
+ time of this writing), singular or plural (*s*, *p*), beginning and ending of
44
+ the proverb.
45
+
46
+ **-f** or **--favorites**
47
+ Will dump the list of "qualified", random proverbs, i.e. those that had been
48
+ found worth saving after a previous call to proverbs.
49
+
50
+ **-q** or **--qualify**
51
+ After a newly created proverb has been presented, you have a few seconds to
52
+ eventually qualify a proverb, i.e. add it to the list of favorites, by
53
+ pushing '+'.
54
+
55
+ **-c** or **--color=COLOR**
56
+ Sets the color the border which sourrounds a generated proverb. Must be one
57
+ of red, green, yellow, purple, cyan, blue, white or black.
58
+
59
+ **-h** or **--help**
60
+ Shows the short help-text for the program.
61
+
62
+ **-v** or **--version**
63
+ Shows version-information
64
+
65
+ ADDING PROVERBS to the default list (option -a or --add)
66
+ ------------------------------------------------------------
67
+ At the time of this writing (october 2019), original ('real') proverbs must
68
+ conform to the pattern
69
+
70
+ "*someone or something*" | "**does or is** *something*"
71
+
72
+ Just execute the program a few times on the command-line, without arguments, to
73
+ get the idea.
74
+
75
+ For the time, original proverbs are grouped with respect to their subject
76
+ (someone or something), which is uncountable or in singular for the first group
77
+ (like in “Fortune | favors the bold”), in plural for the second group (like
78
+ in “All Roads | lead to Rome”).
79
+
80
+ FILES
81
+ ==================
82
+
83
+ The hidden directory *.proverbs* in the user's home-directory can contain three
84
+ types of file. For the English version, these are:
85
+
86
+ *liste_en.rb*
87
+ This file contains all the currently available, original proverbs. It exists
88
+ only, if you have already added new original proverbs.
89
+
90
+ *liste_en_bak.rb*
91
+ A backup-copy of the previous version of the list of proverbs.
92
+
93
+ *qualifile_en*
94
+ This file contains the list of previously qualified, randomly generated
95
+ proverbs, i.e. the list of *favorites*. It is created when you qualify a
96
+ proverb for the very first time, and dumped to screen, when you use the
97
+ option -f or --favorites.
98
+
99
+ OTHER INFORMATION
100
+ ==================
101
+
102
+ .. _Ruby: https://www.ruby-lang.org
103
+ .. _ruby-gem: https://rubygems.org/gems/Sprichwoerter
104
+
105
+ :Source-code: "Proverbs" had been developed in `Ruby`_ and is distributed as a
106
+ ruby-gem_. If you installed the program from the gem-file (with
107
+ *gem install*), then you find all the source-files in the
108
+ gem-folder for your Ruby-version. Otherwise, you can also unpack
109
+ the gem-file (with *tar*), then uncompress the data-archive and
110
+ take a look at the files in the resulting, new folders *bin* and
111
+ *lib*.
112
+
113
+ .. _WTFPL: https://www.wtfpl.net/about/
114
+
115
+ :License: "Proverbs" is released under the conditions of the
116
+ `WTFPL`_, version 2.0.
117
+ :Version: 1.6 of 2019/10/15
118
+ :Author: "Proverbs" has been programmed by Michael Uplawski
119
+ <michael.uplawski@uplawski.eu>. The German parlor game
120
+ *"Verrückte Sprichwörter"* ("Crazy Proverbs") was the principal
121
+ inspiration for the project.
122
+
123
+ **Ω**
124
+
@@ -0,0 +1,128 @@
1
+ ===============
2
+ Sprichwoerter
3
+ ===============
4
+ ------------------------------------------------------------------------------------------
5
+ Kombiniert Anfänge und Enden von Sprichwörtern zu neuen, meist sinnlosen, Sprichwörtern.
6
+ ------------------------------------------------------------------------------------------
7
+ *Proverbs* - Der englische Name für das gleiche Programm.
8
+
9
+ Programmaufruf
10
+ ====================
11
+
12
+ **sprichwoerter**
13
+
14
+ **sprichwoerter -[wf <FARBE>] (--werten --farbe=<FARBE>)**
15
+
16
+ **sprichwoerter -l (--liste)**
17
+
18
+ **sprichwoerter -n (--neu)**
19
+
20
+ **sprichwoerter -h (--help)**
21
+
22
+ **sprichwoerter -v (--version)**
23
+
24
+
25
+ Beschreibung
26
+ ===================
27
+ Das Programm kombiniert die Anfänge und Enden von zufällig aus einer Liste
28
+ ausgewählten Sprichwörtern. Das Ergebnis ist ein Satz, der immer noch als eine
29
+ Art „Sprichwort“ erkennbar ist, allerdings ohne den Anspruch, eine wirkliche
30
+ Information zu vermitteln, geschweige denn „Weisheit“.
31
+
32
+ Ja. Eine lustige Zeitverschwendung. Sie können das Programm „Sprichwörter“ zum
33
+ Beispiel aus Ihrer *.bashrc* Datei aufrufen.
34
+
35
+ Wenn **Sprichwörter** ohne Argumente von der Kommandozeile gestartet wird,
36
+ erzeugt es ein neues Sprichwort und zeigt es an.
37
+
38
+ OPTIONEN
39
+ ===================
40
+
41
+ **-n** oder **--neu**
42
+ Erlaubt es, neue aber echte Sprichwörter zur Liste der originalen
43
+ Sprichwörter hinzuzufügen. Sie werden zur Eingabe jedes notwendigen Details
44
+ einzeln aufgefordert: Sprache (zur Zeit eines von *en* oder *de*), Singular
45
+ oder Plural (*s*, *p*), Beginn und Ende des Sprichworts.
46
+
47
+ **-l** oder **--liste**
48
+ Gibt die Liste der bereits bewerteten, zufälligen Sprichwörter auf dem
49
+ Bildschirm aus.
50
+
51
+ **-w** oder **--werten**
52
+ Wenn ein neu erzeugtes Sprichwort angezeigt wird, bleiben Ihnen einige
53
+ Sekunden, um es eventuell zu bewerten (durch drücken von '*+*') und damit in
54
+ die Liste der bewerteten Sprichwörter aufzunehmen.
55
+
56
+ **-f** oder **--farbe=FARBE**
57
+ Bestimmt die Farbe des Rahmens, der ein neu generiertes Sprichwort umgibt.
58
+ Der Farbname muss einer der folgenden sein: rot, grün, gelb, lila, cyan,
59
+ blau, weiß, schwarz.
60
+
61
+ **-h** oder **--hilfe**
62
+ Zeigt die Kurzhilfe zum Program.
63
+
64
+ **-v** or **--version**
65
+ Gibt Versions-Informationen aus.
66
+
67
+ SPRICHWÖRTER ZUR LISTE HINZUFÜGEN
68
+ --------------------------------------------
69
+ Zur Zeit der Redaktion dieses Dokuments (Oktober 2019) müssen Sprichwörter
70
+ dem im Folgenden beschriebenen Muster folgen:
71
+
72
+ "*Jemand oder etwas*" | "**tut oder ist** *etwas*"
73
+
74
+ Führen Sie das Programm einfach ein paar Mal auf der Kommandozeile aus, um
75
+ diese Einschränkung zu verstehen.
76
+
77
+ Bis auf weiteres werden originale Sprichwörter in zwei Gruppen eingeteilt:
78
+ diejenigen, deren Subjekt unzählbar ist oder im Singular steht (zum Beispiel
79
+ „Der Zweck | heiligt die Mittel“, „Hochmut | kommt vor dem Fall“) und die
80
+ zweite Gruppe von Sprichwörtern mit einem Subjekt im Plural (zum Beispiel
81
+ „Große Ereignisse | werfen ihre Schatten voraus“)
82
+
83
+ DATEIEN
84
+ ==================
85
+
86
+ Im versteckten Verzeichnis *.proverbs*, im Benutzerverzeichnis, können drei
87
+ Arten von Datei abgelegt sein. Für die deutsche Version sind das:
88
+
89
+ *liste_de.rb*
90
+ Diese Datei enthält alle augenblicklich verfügbaren originalen Sprichwörter.
91
+ Sie existiert nur, wenn Sie bereits ein solches Sprichwort zur Liste
92
+ hinzugefügt haben (mit Option *-n* oder *--neu*).
93
+
94
+ *liste_de_bak.rb*
95
+ Eine Sicherheitskopie der vorigen Version der Liste originaler Sprichwörter.
96
+
97
+ *qualifile_de*
98
+ Diese Datei enthält die Liste der bereits bewerteten, zufällig generierten
99
+ Sprichwörter. Sie wird erzeugt, wenn Sie zum ersten Mal eine Wertung
100
+ vornehmen. Später wird diese Liste angezeigt, wenn Sie das Programmargument
101
+ -l oder --liste verwenden.
102
+
103
+ ANDERE INFORMATIONEN
104
+ ====================
105
+ Das Gesellschaftsspiel "*Verrückte Sprichwörter*" diente als Inspiration für
106
+ die Entwicklung des Programms.
107
+
108
+ .. _Ruby: https://www.ruby-lang.org
109
+ .. _ruby-gem: https://rubygems.org/gems/Sprichwoerter
110
+
111
+ :Quellcode: "Sprichwörter" ist in Ruby_ programmiert und wird als Ruby-Gem_
112
+ veröffentlicht. Wenn Sie das Programm aus der Gem-Datei installiert
113
+ haben, befinden sich alle Quellcode-Dateien im Gem-Ordner für Ihre
114
+ Ruby-Version. Anderenfalls können sie auch die Gem-Datei entpacken
115
+ (mit *tar*) und dann das data-Archiv dekomprimieren. Der Quellcode
116
+ befindet sich danach in den Verzeichnissen **bin** und **lib**.
117
+
118
+ :Version: 1.6 vom 15. Oktober 2019
119
+
120
+ .. _WTFPL: https://www.wtfpl.net/about
121
+
122
+ :Lizenz: "Sprichwörter" ist freie Software gemäß den Bestimmungen der WTFPL_,
123
+ Version 2.0
124
+
125
+ :Autor: "Sprichwörter" wurde von Michael Uplawski
126
+ <michael.uplawski@uplawski.eu> programmiert.
127
+
128
+ **Ω**
data/lib/adder.rb ADDED
@@ -0,0 +1,79 @@
1
+ #encoding: UTF-8
2
+ =begin
3
+ * ©2016-2025, Michael Uplawski <michael.uplawski@uplawski.eu> *
4
+ * *
5
+ * This program is free software; you can redistribute it and/or modify *
6
+ * it under the terms of the WTFPL, either version 2 of the License, or *
7
+ * (at your option) any later version. *
8
+ * See http://www.wtfpl.net/about/ for details. *
9
+ =end
10
+
11
+ require_relative 'color_output'
12
+ require_relative 'translating'
13
+ require_relative 'logging'
14
+ require 'readline'
15
+
16
+ class Adder
17
+ self.extend(Logging)
18
+ @@log = self.init_logger(STDOUT)
19
+ include Translating
20
+
21
+ # Initialize with a language code and specify singular or plural.
22
+ # Devide the proverb into "beginning" and "ending", mind the quotes!
23
+ def initialize(lang = 'de', sipl = 'singular', beginning, ending)
24
+ @log = @@log
25
+
26
+ details = ask_details
27
+ @log.debug('lang ' << @language)
28
+ @log.debug('sipl ' << @sipl)
29
+ @log.debug('beginning ' << @beginning)
30
+ @log.debug('ending ' << @ending)
31
+ listfile = trl('list') << '_' << @language
32
+ @log.debug('listfile is ' << listfile)
33
+ confdir = ENV['HOME'].dup << File::Separator << ".proverbs"
34
+ user_list = confdir.dup << File::Separator << listfile
35
+ listrb = user_list.dup << '.rb'
36
+ if File::exist?(listrb) && File.readable?(listrb)
37
+ require user_list
38
+ else
39
+ require_relative listfile
40
+ end
41
+ new_proverb = [@beginning, @ending]
42
+
43
+ case @sipl.downcase
44
+ when trl('s')
45
+ $proverbs1.push new_proverb
46
+
47
+ when trl('p')
48
+ $proverbs0.push new_proverb
49
+ else
50
+ puts red(trl("Cannot add the proverb, invalid argument") << ' ' << bold("#{sipl}") )
51
+ exit false
52
+ end
53
+
54
+ if !File.exist?(confdir)
55
+ Dir.mkdir(confdir)
56
+ end
57
+ File.rename(listrb, user_list.dup << '_bak.rb') if(File.exist?(listrb) )
58
+ File.open( listrb,'w') do |lfile|
59
+ lfile.puts "$proverbs0=" << $proverbs0.uniq.to_s
60
+ lfile.puts
61
+ lfile.puts "$proverbs1=" << $proverbs1.uniq.to_s
62
+ end
63
+ puts green(trl("List %s has been updated") %listrb )
64
+ end
65
+
66
+ private
67
+
68
+ def ask_details
69
+ @language = Readline.readline( trl("Language") << " (de, en): ")
70
+ @sipl = Readline.readline("\n" << trl("Singular or plural (s, p)") << (": ") )
71
+ @beginning = Readline.readline( "\n" << trl("Beginning of the proverb") << ": " )
72
+ @ending = Readline.readline( "\n" << trl("Ending of the proverb") << ": " )
73
+ end
74
+ end
75
+
76
+ # -- test
77
+ if __FILE__ == $0
78
+ Adder.new('en', 'singular', "no man", "is an island")
79
+ end