Sprichwoerter 0.1 → 1.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 80f837ad47153be05dea980ae26c1fd24dfe9cf6
4
- data.tar.gz: 93abff22aaac0f9232b93bd846099c98f8f8296f
2
+ SHA256:
3
+ metadata.gz: 8f5761df30602e53c43f4e3d258a7ef4a6ba26b3afc1fb1d40e8eca29b356054
4
+ data.tar.gz: 31590ef8d17779a0097e884e16ad92b560fe32a6734dbcc372116d45b9384e49
5
5
  SHA512:
6
- metadata.gz: c638f6865975268ed30b33962d17f7b2cda89703145f41c1f43386a5b2d2ad48c403b0977bef9bd537df154c22d173f02faaa271c19fcc4bd63f7abccb6e99ec
7
- data.tar.gz: ba43ea04d0630ccc11cc0b382e18eac42b3815f8ad9514c7974c72edad1b12c49118b0fb9f04aab3f9108ccd5537bdce5dd16827fef41a31b96f83bf28316957
6
+ metadata.gz: a4e6311ce32fec4b6c5fc6e07b8a10d7e8a11272c43c5dda029c704b25c0a75d87ca048a8155aee1c47afb15acde8af35cda7931c036009a1f0df65d39a40726
7
+ data.tar.gz: 5cb81fd55b9b1d4b6af6ba3003e30b089652da5dc8641bc4b60192235ed68ea1bb7c2fe9bc0f8a2ff7368842e86150399d91d8f56c441a16ad6839ce3f093aed
@@ -0,0 +1,17 @@
1
+ require_relative "lib/version"
2
+ require 'date'
3
+
4
+ Gem::Specification.new do |s|
5
+ s.version = VERSION
6
+ s.name = File.basename(__FILE__, '.gemspec')
7
+ s.date = Date.today.strftime('%F')
8
+ s.summary = SUMMARY
9
+ s.description = "Generates random, senseless proverbs by combining beginnings and endings of existing proverbs."
10
+ s.authors = ["Michael Uplawski"]
11
+ s.email = 'michael.uplawski@uplawski.eu'
12
+ s.files = %w~sprichwoerter proverbs~.collect{|f| 'bin/' << f} + %w~adder.rb color_output.rb argparser.rb rearranging.rb translating.rb translations logging.rb log.conf liste_de.rb sprichwörter.rb liste_en.rb version.rb user_input.rb~.collect{|f| 'lib/' << f} + %w~Sprichwoerter.gemspec~.collect{|f|f} + %w~html/proverbs.html html/sprichwoerter.html man/proverbs.6.gz man/sprichwoerter.6.gz pdf/proverbs.pdf pdf/sprichwoerter.pdf rst/proverbs.rst rst/sprichwoerter.rst~.collect{|f| 'doc/' << f}
13
+ s.homepage = 'http://rubygems.org'
14
+ s.executables = "sprichwoerter", "proverbs"
15
+ s.license = 'GPL-3.0'
16
+ s.required_ruby_version = '>= 2.5'
17
+ end
@@ -2,7 +2,7 @@
2
2
  #encoding: UTF-8
3
3
  =begin
4
4
  /***************************************************************************
5
- * ©2016-2016, Michael Uplawski <michael.uplawski@uplawski.eu> *
5
+ * ©2016-2019, Michael Uplawski <michael.uplawski@uplawski.eu> *
6
6
  * *
7
7
  * This program is free software; you can redistribute it and/or modify *
8
8
  * it under the terms of the GNU General Public License as published by *
@@ -22,4 +22,45 @@
22
22
  =end
23
23
 
24
24
  require_relative '../lib/sprichwörter'
25
- SprichWoerter.new('en')
25
+ require_relative '../lib/adder'
26
+ require_relative '../lib/color_output'
27
+
28
+ SprichWoerter.new('en', ARGV)
29
+ =begin
30
+ if(ARGV.include?("-h") || ARGV.include?("--help"))
31
+ usage = %q~
32
+ Usage: proverbs
33
+ or proverbs list
34
+ or proverbs add singular "A watched pot" "never boils"
35
+ or proverbs add plural "cheaters" "never prosper"
36
+
37
+ The argument 'add' will add a new, original proverb to the list and write
38
+ all available English proverbs to
39
+ /home/user/.proverbs/liste_en.rb.
40
+
41
+ A backup-copy of the previous version is also created.
42
+
43
+ Proverbs, which are identical in all details will be recognized and
44
+ duplicates are avoided.
45
+ ~
46
+
47
+ puts usage
48
+ exit 0
49
+ end
50
+
51
+
52
+ if(ARGV.include?("add") && ARGV.length > 3 )
53
+ ARGV.delete('add')
54
+ Adder.new('en', *ARGV)
55
+ elsif ARGV.include?("list")
56
+ SprichWoerter.new('en', :list)
57
+ exit true
58
+ elsif !ARGV.empty?
59
+ puts red("\nUnsuitable or insufficient arguments '" << bold(ARGV.join(', ') ) << "'.")
60
+ puts "Run with '-h' or '--help' to see the usage message."
61
+ puts
62
+ exit 0
63
+ else
64
+ SprichWoerter.new('en')
65
+ end
66
+ =end
@@ -2,7 +2,7 @@
2
2
  #encoding: UTF-8
3
3
  =begin
4
4
  /***************************************************************************
5
- * ©2016-2016, Michael Uplawski <michael.uplawski@uplawski.eu> *
5
+ * ©2016-2019, Michael Uplawski <michael.uplawski@uplawski.eu> *
6
6
  * *
7
7
  * This program is free software; you can redistribute it and/or modify *
8
8
  * it under the terms of the GNU General Public License as published by *
@@ -22,4 +22,50 @@
22
22
  =end
23
23
 
24
24
  require_relative '../lib/sprichwörter'
25
- SprichWoerter.new('de')
25
+ require_relative '../lib/adder'
26
+ require_relative '../lib/color_output'
27
+
28
+ SprichWoerter.new('de', ARGV)
29
+
30
+ =begin
31
+ if(ARGV.include?("-h") || ARGV.include?("--hilfe"))
32
+ usage = %q~
33
+ Aufrufsyntax: sprichwoerter
34
+ oder sprichwoerter liste
35
+ oder sprichwoerter neu singular "Ein König mit Krone" "ist besser als ohne"
36
+ oder sprichwoerter neu plural "Hunde, die bellen" "beißen nicht"
37
+
38
+ Der Parameter 'neu' fügt ein neues, ursprüngliches Sprichwort in die Liste
39
+ hinzu und schreibt alle verfügbaren, deutschen Sprichwörter in die Datei
40
+ /home/user/.proverbs/liste_de.rb,
41
+
42
+ Außerdem wird bei jedem Schreiben in diese Datei eine Kopie der vorigen Version
43
+ erzeugt.
44
+
45
+ Buchstäblich identische Sprichwörter werden erkannt und Duplikate vermieden.
46
+ ~
47
+
48
+ puts usage
49
+ exit 0
50
+ end
51
+ =end
52
+
53
+ =begin
54
+ if(ARGV.include?("neu") && ARGV.length > 3)
55
+ ARGV.delete('neu')
56
+ Adder.new('de', *ARGV)
57
+ elsif ARGV.include?("liste")
58
+ SprichWoerter.new('de', :list)
59
+ exit true
60
+ elsif !ARGV.empty?
61
+ puts red("\nUnbrauchbare oder zu wenig Programmargumente '" << bold(ARGV.join(', ') ) << "'.")
62
+ puts "Starten Sie das Programm mit '-h' oder '--hilfe', um die Kurzhilfe zu sehen."
63
+ puts
64
+ exit 0
65
+ else
66
+ #SprichWoerter.new('de', :create)
67
+ SprichWoerter.new(ARGV)
68
+ end
69
+ =end
70
+ #
71
+ #---test
@@ -0,0 +1,472 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <meta name="generator" content="Docutils 0.14: http://docutils.sourceforge.net/" />
7
+ <title>Proverbs</title>
8
+ <style type="text/css">
9
+
10
+ /*
11
+ :Author: David Goodger (goodger@python.org)
12
+ :Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
13
+ :Copyright: This stylesheet has been placed in the public domain.
14
+
15
+ Default cascading style sheet for the HTML output of Docutils.
16
+
17
+ See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
18
+ customize this style sheet.
19
+ */
20
+
21
+ /* used to remove borders from tables and images */
22
+ .borderless, table.borderless td, table.borderless th {
23
+ border: 0 }
24
+
25
+ table.borderless td, table.borderless th {
26
+ /* Override padding for "table.docutils td" with "! important".
27
+ The right padding separates the table cells. */
28
+ padding: 0 0.5em 0 0 ! important }
29
+
30
+ .first {
31
+ /* Override more specific margin styles with "! important". */
32
+ margin-top: 0 ! important }
33
+
34
+ .last, .with-subtitle {
35
+ margin-bottom: 0 ! important }
36
+
37
+ .hidden {
38
+ display: none }
39
+
40
+ .subscript {
41
+ vertical-align: sub;
42
+ font-size: smaller }
43
+
44
+ .superscript {
45
+ vertical-align: super;
46
+ font-size: smaller }
47
+
48
+ a.toc-backref {
49
+ text-decoration: none ;
50
+ color: black }
51
+
52
+ blockquote.epigraph {
53
+ margin: 2em 5em ; }
54
+
55
+ dl.docutils dd {
56
+ margin-bottom: 0.5em }
57
+
58
+ object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
59
+ overflow: hidden;
60
+ }
61
+
62
+ /* Uncomment (and remove this text!) to get bold-faced definition list terms
63
+ dl.docutils dt {
64
+ font-weight: bold }
65
+ */
66
+
67
+ div.abstract {
68
+ margin: 2em 5em }
69
+
70
+ div.abstract p.topic-title {
71
+ font-weight: bold ;
72
+ text-align: center }
73
+
74
+ div.admonition, div.attention, div.caution, div.danger, div.error,
75
+ div.hint, div.important, div.note, div.tip, div.warning {
76
+ margin: 2em ;
77
+ border: medium outset ;
78
+ padding: 1em }
79
+
80
+ div.admonition p.admonition-title, div.hint p.admonition-title,
81
+ div.important p.admonition-title, div.note p.admonition-title,
82
+ div.tip p.admonition-title {
83
+ font-weight: bold ;
84
+ font-family: sans-serif }
85
+
86
+ div.attention p.admonition-title, div.caution p.admonition-title,
87
+ div.danger p.admonition-title, div.error p.admonition-title,
88
+ div.warning p.admonition-title, .code .error {
89
+ color: red ;
90
+ font-weight: bold ;
91
+ font-family: sans-serif }
92
+
93
+ /* Uncomment (and remove this text!) to get reduced vertical space in
94
+ compound paragraphs.
95
+ div.compound .compound-first, div.compound .compound-middle {
96
+ margin-bottom: 0.5em }
97
+
98
+ div.compound .compound-last, div.compound .compound-middle {
99
+ margin-top: 0.5em }
100
+ */
101
+
102
+ div.dedication {
103
+ margin: 2em 5em ;
104
+ text-align: center ;
105
+ font-style: italic }
106
+
107
+ div.dedication p.topic-title {
108
+ font-weight: bold ;
109
+ font-style: normal }
110
+
111
+ div.figure {
112
+ margin-left: 2em ;
113
+ margin-right: 2em }
114
+
115
+ div.footer, div.header {
116
+ clear: both;
117
+ font-size: smaller }
118
+
119
+ div.line-block {
120
+ display: block ;
121
+ margin-top: 1em ;
122
+ margin-bottom: 1em }
123
+
124
+ div.line-block div.line-block {
125
+ margin-top: 0 ;
126
+ margin-bottom: 0 ;
127
+ margin-left: 1.5em }
128
+
129
+ div.sidebar {
130
+ margin: 0 0 0.5em 1em ;
131
+ border: medium outset ;
132
+ padding: 1em ;
133
+ background-color: #ffffee ;
134
+ width: 40% ;
135
+ float: right ;
136
+ clear: right }
137
+
138
+ div.sidebar p.rubric {
139
+ font-family: sans-serif ;
140
+ font-size: medium }
141
+
142
+ div.system-messages {
143
+ margin: 5em }
144
+
145
+ div.system-messages h1 {
146
+ color: red }
147
+
148
+ div.system-message {
149
+ border: medium outset ;
150
+ padding: 1em }
151
+
152
+ div.system-message p.system-message-title {
153
+ color: red ;
154
+ font-weight: bold }
155
+
156
+ div.topic {
157
+ margin: 2em }
158
+
159
+ h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
160
+ h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
161
+ margin-top: 0.4em }
162
+
163
+ h1.title {
164
+ text-align: center }
165
+
166
+ h2.subtitle {
167
+ text-align: center }
168
+
169
+ hr.docutils {
170
+ width: 75% }
171
+
172
+ img.align-left, .figure.align-left, object.align-left, table.align-left {
173
+ clear: left ;
174
+ float: left ;
175
+ margin-right: 1em }
176
+
177
+ img.align-right, .figure.align-right, object.align-right, table.align-right {
178
+ clear: right ;
179
+ float: right ;
180
+ margin-left: 1em }
181
+
182
+ img.align-center, .figure.align-center, object.align-center {
183
+ display: block;
184
+ margin-left: auto;
185
+ margin-right: auto;
186
+ }
187
+
188
+ table.align-center {
189
+ margin-left: auto;
190
+ margin-right: auto;
191
+ }
192
+
193
+ .align-left {
194
+ text-align: left }
195
+
196
+ .align-center {
197
+ clear: both ;
198
+ text-align: center }
199
+
200
+ .align-right {
201
+ text-align: right }
202
+
203
+ /* reset inner alignment in figures */
204
+ div.align-right {
205
+ text-align: inherit }
206
+
207
+ /* div.align-center * { */
208
+ /* text-align: left } */
209
+
210
+ .align-top {
211
+ vertical-align: top }
212
+
213
+ .align-middle {
214
+ vertical-align: middle }
215
+
216
+ .align-bottom {
217
+ vertical-align: bottom }
218
+
219
+ ol.simple, ul.simple {
220
+ margin-bottom: 1em }
221
+
222
+ ol.arabic {
223
+ list-style: decimal }
224
+
225
+ ol.loweralpha {
226
+ list-style: lower-alpha }
227
+
228
+ ol.upperalpha {
229
+ list-style: upper-alpha }
230
+
231
+ ol.lowerroman {
232
+ list-style: lower-roman }
233
+
234
+ ol.upperroman {
235
+ list-style: upper-roman }
236
+
237
+ p.attribution {
238
+ text-align: right ;
239
+ margin-left: 50% }
240
+
241
+ p.caption {
242
+ font-style: italic }
243
+
244
+ p.credits {
245
+ font-style: italic ;
246
+ font-size: smaller }
247
+
248
+ p.label {
249
+ white-space: nowrap }
250
+
251
+ p.rubric {
252
+ font-weight: bold ;
253
+ font-size: larger ;
254
+ color: maroon ;
255
+ text-align: center }
256
+
257
+ p.sidebar-title {
258
+ font-family: sans-serif ;
259
+ font-weight: bold ;
260
+ font-size: larger }
261
+
262
+ p.sidebar-subtitle {
263
+ font-family: sans-serif ;
264
+ font-weight: bold }
265
+
266
+ p.topic-title {
267
+ font-weight: bold }
268
+
269
+ pre.address {
270
+ margin-bottom: 0 ;
271
+ margin-top: 0 ;
272
+ font: inherit }
273
+
274
+ pre.literal-block, pre.doctest-block, pre.math, pre.code {
275
+ margin-left: 2em ;
276
+ margin-right: 2em }
277
+
278
+ pre.code .ln { color: grey; } /* line numbers */
279
+ pre.code, code { background-color: #eeeeee }
280
+ pre.code .comment, code .comment { color: #5C6576 }
281
+ pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
282
+ pre.code .literal.string, code .literal.string { color: #0C5404 }
283
+ pre.code .name.builtin, code .name.builtin { color: #352B84 }
284
+ pre.code .deleted, code .deleted { background-color: #DEB0A1}
285
+ pre.code .inserted, code .inserted { background-color: #A3D289}
286
+
287
+ span.classifier {
288
+ font-family: sans-serif ;
289
+ font-style: oblique }
290
+
291
+ span.classifier-delimiter {
292
+ font-family: sans-serif ;
293
+ font-weight: bold }
294
+
295
+ span.interpreted {
296
+ font-family: sans-serif }
297
+
298
+ span.option {
299
+ white-space: nowrap }
300
+
301
+ span.pre {
302
+ white-space: pre }
303
+
304
+ span.problematic {
305
+ color: red }
306
+
307
+ span.section-subtitle {
308
+ /* font-size relative to parent (h1..h6 element) */
309
+ font-size: 80% }
310
+
311
+ table.citation {
312
+ border-left: solid 1px gray;
313
+ margin-left: 1px }
314
+
315
+ table.docinfo {
316
+ margin: 2em 4em }
317
+
318
+ table.docutils {
319
+ margin-top: 0.5em ;
320
+ margin-bottom: 0.5em }
321
+
322
+ table.footnote {
323
+ border-left: solid 1px black;
324
+ margin-left: 1px }
325
+
326
+ table.docutils td, table.docutils th,
327
+ table.docinfo td, table.docinfo th {
328
+ padding-left: 0.5em ;
329
+ padding-right: 0.5em ;
330
+ vertical-align: top }
331
+
332
+ table.docutils th.field-name, table.docinfo th.docinfo-name {
333
+ font-weight: bold ;
334
+ text-align: left ;
335
+ white-space: nowrap ;
336
+ padding-left: 0 }
337
+
338
+ /* "booktabs" style (no vertical lines) */
339
+ table.docutils.booktabs {
340
+ border: 0px;
341
+ border-top: 2px solid;
342
+ border-bottom: 2px solid;
343
+ border-collapse: collapse;
344
+ }
345
+ table.docutils.booktabs * {
346
+ border: 0px;
347
+ }
348
+ table.docutils.booktabs th {
349
+ border-bottom: thin solid;
350
+ text-align: left;
351
+ }
352
+
353
+ h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
354
+ h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
355
+ font-size: 100% }
356
+
357
+ ul.auto-toc {
358
+ list-style-type: none }
359
+
360
+ </style>
361
+ </head>
362
+ <body>
363
+ <div class="document" id="proverbs">
364
+ <h1 class="title">PROVERBS</h1>
365
+ <h2 class="subtitle" id="rearrange-proverbs-into-new-mostly-senseless-proverbs">Rearrange proverbs into new, mostly senseless, proverbs.</h2>
366
+
367
+ <p><em>Sprichwörter</em> is the German name for the same program.</p>
368
+ <div class="section" id="synopsis">
369
+ <h1>Synopsis</h1>
370
+ <blockquote>
371
+ <p><strong>proverbs</strong></p>
372
+ <p><strong>proverbs -[qc &lt;COLOR&gt;] (--qualify --color &lt;COLOR&gt;)</strong></p>
373
+ <p><strong>proverbs -f (--favorites)</strong></p>
374
+ <p><strong>proverbs -a (--add)</strong></p>
375
+ <p><strong>proverbs -h (--help)</strong></p>
376
+ <p><strong>proverbs -v (--version)</strong></p>
377
+ </blockquote>
378
+ </div>
379
+ <div class="section" id="description">
380
+ <h1>DESCRIPTION</h1>
381
+ <p>The program combines the beginnings and the endings of proverbs randomly picked
382
+ from a list. The result is a phrase which is still recognizable as &quot;kind of a
383
+ proverb&quot; but without claiming to convey any real message, let alone &quot;wisdom&quot;.</p>
384
+ <p>Yes. It is intended as a humorous waste of time. You can, for example, call
385
+ proverbs from your <em>.bashrc</em> file.</p>
386
+ <p>When called on the command-prompt as <strong>proverbs</strong> without any options, a newly
387
+ generated proverb will be printed out on screen.</p>
388
+ </div>
389
+ <div class="section" id="options">
390
+ <h1>OPTIONS</h1>
391
+ <dl class="docutils">
392
+ <dt><strong>-a</strong> or <strong>--add</strong></dt>
393
+ <dd>Allows you to add a new, real proverb to the list of original proverbs. You
394
+ are prompted for each of the details: language (one of <em>en</em> or <em>de</em> at the
395
+ time of this writing), singular or plural (<em>s</em>, <em>p</em>), beginning and ending of
396
+ the proverb.</dd>
397
+ <dt><strong>-f</strong> or <strong>--favorites</strong></dt>
398
+ <dd>Will dump the list of &quot;qualified&quot;, random proverbs, i.e. those that had been
399
+ found worth saving after a previous call to proverbs.</dd>
400
+ <dt><strong>-q</strong> or <strong>--qualify</strong></dt>
401
+ <dd>After a newly created proverb has been presented, you have a few seconds to
402
+ eventually qualify a proverb, i.e. add it to the list of favorites, by
403
+ pushing '+'.</dd>
404
+ <dt><strong>-c</strong> or <strong>--color=COLOR</strong></dt>
405
+ <dd>Sets the color the border which sourrounds a generated proverb. Must be one
406
+ of red, green, yellow, purple, cyan, blue, white or black.</dd>
407
+ <dt><strong>-h</strong> or <strong>--help</strong></dt>
408
+ <dd>Shows the short help-text for the program.</dd>
409
+ <dt><strong>-v</strong> or <strong>--version</strong></dt>
410
+ <dd>Shows version-information</dd>
411
+ </dl>
412
+ <div class="section" id="adding-proverbs-to-the-default-list-option-a-or-add">
413
+ <h2>ADDING PROVERBS to the default list (option -a or --add)</h2>
414
+ <p>At the time of this writing (october 2019), original ('real') proverbs must
415
+ conform to the pattern</p>
416
+ <p>&quot;<em>someone or something</em>&quot; | &quot;<strong>does or is</strong> <em>something</em>&quot;</p>
417
+ <p>Just execute the program a few times on the command-line, without arguments, to
418
+ get the idea.</p>
419
+ <p>For the time, original proverbs are grouped with respect to their subject
420
+ (someone or something), which is uncountable or in singular for the first group
421
+ (like in “Fortune | favors the bold”), in plural for the second group (like
422
+ in “All Roads | lead to Rome”).</p>
423
+ </div>
424
+ </div>
425
+ <div class="section" id="files">
426
+ <h1>FILES</h1>
427
+ <p>The hidden directory <em>.proverbs</em> in the user's home-directory can contain three
428
+ types of file. For the English version, these are:</p>
429
+ <dl class="docutils">
430
+ <dt><em>liste_en.rb</em></dt>
431
+ <dd>This file contains all the currently available, original proverbs. It exists
432
+ only, if you have already added new original proverbs.</dd>
433
+ <dt><em>liste_en_bak.rb</em></dt>
434
+ <dd>A backup-copy of the previous version of the list of proverbs.</dd>
435
+ <dt><em>qualifile_en</em></dt>
436
+ <dd>This file contains the list of previously qualified, randomly generated
437
+ proverbs, i.e. the list of <em>favorites</em>. It is created when you qualify a
438
+ proverb for the very first time, and dumped to screen, when you use the
439
+ option -f or --favorites.</dd>
440
+ </dl>
441
+ </div>
442
+ <div class="section" id="other-information">
443
+ <h1>OTHER INFORMATION</h1>
444
+ <table class="docutils field-list" frame="void" rules="none">
445
+ <col class="field-name" />
446
+ <col class="field-body" />
447
+ <tbody valign="top">
448
+ <tr class="field"><th class="field-name">Source-code:</th><td class="field-body">&quot;Proverbs&quot; had been developed in Ruby and is distributed as a
449
+ ruby-gem. If you installed the program from the gem-file (with
450
+ <em>gem install</em>), then you find all the source-files in the
451
+ gem-folder for your Ruby-version. Otherwise, you can also unpack
452
+ the gem-file (with <em>tar</em>), then uncompress the data-archive and
453
+ take a look at the files in the resulting, new folders <em>bin</em> and
454
+ <em>lib</em>.</td>
455
+ </tr>
456
+ <tr class="field"><th class="field-name">License:</th><td class="field-body">&quot;Proverbs&quot; is released under the conditions of the
457
+ GNU General Public License, version 3.0.</td>
458
+ </tr>
459
+ <tr class="field"><th class="field-name">Version:</th><td class="field-body">1.6 of 2019/10/15</td>
460
+ </tr>
461
+ <tr class="field"><th class="field-name">Author:</th><td class="field-body">&quot;Proverbs&quot; has been programmed by Michael Uplawski
462
+ &lt;<a class="reference external" href="mailto:michael.uplawski&#64;uplawski.eu">michael.uplawski&#64;uplawski.eu</a>&gt;. The German parlor game
463
+ <em>&quot;Verrückte Sprichwörter&quot;</em> (&quot;Crazy Proverbs&quot;) was the principal
464
+ inspiration for the project.</td>
465
+ </tr>
466
+ </tbody>
467
+ </table>
468
+ <p><strong>Ω</strong></p>
469
+ </div>
470
+ </div>
471
+ </body>
472
+ </html>