program_information 1.2.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of program_information might be problematic. Click here for more details.

Files changed (29) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +77 -0
  3. data/bin/program_information +14 -0
  4. data/doc/CONVENTIONS.md +22 -0
  5. data/doc/README.gen +37 -0
  6. data/lib/program_information/constants/array_test_with_this_as_input.rb +121 -0
  7. data/lib/program_information/constants/colours.rb +42 -0
  8. data/lib/program_information/constants/constants.rb +55 -0
  9. data/lib/program_information/constants/regex.rb +87 -0
  10. data/lib/program_information/initialize.rb +43 -0
  11. data/lib/program_information/menu.rb +29 -0
  12. data/lib/program_information/program_information.rb +569 -0
  13. data/lib/program_information/project/project.rb +22 -0
  14. data/lib/program_information/report.rb +48 -0
  15. data/lib/program_information/requires/require_the_program_information_project.rb +9 -0
  16. data/lib/program_information/reset.rb +46 -0
  17. data/lib/program_information/run.rb +18 -0
  18. data/lib/program_information/toplevel_methods/e.rb +14 -0
  19. data/lib/program_information/toplevel_methods/opnn.rb +27 -0
  20. data/lib/program_information/toplevel_methods/remove_archive_type.rb +32 -0
  21. data/lib/program_information/toplevel_methods/return_proper_pipe_token_to_this_input.rb +169 -0
  22. data/lib/program_information/toplevel_methods/return_short_name.rb +38 -0
  23. data/lib/program_information/toplevel_methods.rb +162 -0
  24. data/lib/program_information/version/version.rb +22 -0
  25. data/lib/program_information/www/embeddable_interface.rb +61 -0
  26. data/lib/program_information.rb +5 -0
  27. data/program_information.gemspec +52 -0
  28. data/test/testing_program_information.rb +49 -0
  29. metadata +107 -0
@@ -0,0 +1,569 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === ProgramInformation::ProgramInformation
6
+ #
7
+ # The main class will reside here.
8
+ #
9
+ # This class can provide us with the proper name, and the proper version
10
+ # for any given program.
11
+ #
12
+ # We simply take the given input and use three components for it:
13
+ #
14
+ # (1) real_short_name
15
+ # (2) short_name
16
+ # (3) program_version
17
+ #
18
+ # Note that real_short_name depends on short_name. It simply is short_name
19
+ # with all instances of the '_' character removed. It is thus a dependent
20
+ # variable.
21
+ #
22
+ # The three numbers above also correspond to respective @instance_variables,
23
+ # so in other words we have @real_short_name, @short_name and
24
+ # @program_version.
25
+ #
26
+ # The input can be a bit "unclean". The class will try to get the "best"
27
+ # result out of any given input, no matter how unclean it is.
28
+ #
29
+ # It is recommended to use this class when wanting to determine the
30
+ # short_name and the program version of any given program.
31
+ # =========================================================================== #
32
+ # require 'program_information/program_information.rb'
33
+ # =========================================================================== #
34
+ module ProgramInformation
35
+
36
+ class ProgramInformation # === ProgramInformation::ProgramInformation
37
+
38
+ require 'remove_file_suffix'
39
+
40
+ require 'program_information/project/project.rb'
41
+ require 'program_information/toplevel_methods/e.rb'
42
+ require 'program_information/toplevel_methods/return_proper_pipe_token_to_this_input.rb'
43
+ require 'program_information/toplevel_methods/remove_archive_type.rb'
44
+ require 'program_information/constants/constants.rb'
45
+ require 'program_information/version/version.rb'
46
+ require 'program_information/initialize.rb'
47
+ require 'program_information/menu.rb'
48
+ require 'program_information/reset.rb'
49
+ require 'program_information/report.rb'
50
+ require 'program_information/run.rb'
51
+
52
+ # ========================================================================= #
53
+ # === return_proper_pipe_token_to_this_input
54
+ # ========================================================================= #
55
+ def return_proper_pipe_token_to_this_input(i)
56
+ ::ProgramInformation.return_proper_pipe_token_to_this_input(i)
57
+ end
58
+
59
+ # ========================================================================= #
60
+ # === remove_file_suffix
61
+ #
62
+ # Delegate towards class RemoveFileSuffix. This is easier to handle
63
+ # Archive.
64
+ # ========================================================================= #
65
+ def remove_file_suffix(i)
66
+ RemoveFileSuffix[i.to_s]
67
+ end
68
+
69
+ # ========================================================================= #
70
+ # === do_not_replace_plus
71
+ # ========================================================================= #
72
+ def do_not_replace_plus
73
+ @replace_plus_with_long_name = false
74
+ end; alias do_not_replace_anything do_not_replace_plus # === do_not_replace_anything
75
+
76
+ # ========================================================================= #
77
+ # === set_program_version
78
+ #
79
+ # Use this method whenever you wish to assign to the @program_version
80
+ # variable.
81
+ #
82
+ # The input to this method may include stuff such as ".tar.xz", which
83
+ # should be chopped off, as it is not part of the program version.
84
+ #
85
+ # Keep in mind that we may also return nil.
86
+ #
87
+ # Until March 2015 we also replaced all '_' with '.' characters,
88
+ # but input such as "ncbi_cxx--12_0_0.tar.gz" would break as a
89
+ # consequence, so this was disabled again.
90
+ # ========================================================================= #
91
+ def set_program_version(i)
92
+ i = remove_file_suffix(i) unless i.nil? # Disallow archive-types here.
93
+ # ======================================================================= #
94
+ # The following check is not good at all because we may have input
95
+ # such as "1-0.112.0". Polkitqt has this, for instance.
96
+ # Thus, the following line was disabled on Feb 2016.
97
+ # ======================================================================= #
98
+ # if i.include? '-' # In this case, we use only the last part.
99
+ # i = i.split('-').last
100
+ # end
101
+ # ======================================================================= #
102
+ # And if result is actually an empty String, but the original input
103
+ # has included at the least one number, such as in "3.3.6-pl1",
104
+ # then we will simply use that instead.
105
+ # ======================================================================= #
106
+ if i.is_a?(String) and i.empty? and
107
+ @input =~ /\d+/ # <- If the input has at the least one Number.
108
+ i = @input.dup
109
+ end
110
+ @program_version = i
111
+ end; alias set_version set_program_version # === set_version
112
+
113
+ # ========================================================================= #
114
+ # === be_verbose?
115
+ # ========================================================================= #
116
+ def be_verbose?
117
+ @be_verbose
118
+ end
119
+
120
+ # ========================================================================= #
121
+ # === remove_plus_token?
122
+ # ========================================================================= #
123
+ def remove_plus_token?
124
+ @remove_plus_token
125
+ end
126
+
127
+ # ========================================================================= #
128
+ # === input?
129
+ # ========================================================================= #
130
+ def input?
131
+ @input
132
+ end
133
+
134
+ # ========================================================================= #
135
+ # === return_array
136
+ #
137
+ # This method will return a composite, 3-member Array that will hold the
138
+ # short_name, the real_short_name, and the program_version.
139
+ # ========================================================================= #
140
+ def return_array
141
+ [ short_name?, real_short_name?, program_version? ]
142
+ end; alias array? return_array # === array?
143
+
144
+ # ========================================================================= #
145
+ # === remove_plus_and_minus?
146
+ # ========================================================================= #
147
+ def remove_plus_and_minus?
148
+ @remove_plus_and_minus
149
+ end; alias remove_plus_and_minus remove_plus_and_minus? # === remove_plus_and_minus
150
+
151
+ # ========================================================================= #
152
+ # === apostroph?
153
+ # ========================================================================= #
154
+ def apostroph?
155
+ APOSTROPH
156
+ end
157
+
158
+ # ========================================================================= #
159
+ # === replace_plus_with_long_name?
160
+ # ========================================================================= #
161
+ def replace_plus_with_long_name?
162
+ @replace_plus_with_long_name
163
+ end
164
+
165
+ # ========================================================================= #
166
+ # === short_name_and_version?
167
+ #
168
+ # This method returns an aggregated @short_name+'-'+@program_version
169
+ # string.
170
+ # ========================================================================= #
171
+ def short_name_and_version?
172
+ "#{short_name?}-#{program_version?}"
173
+ end; alias short_name_and_version short_name_and_version? # === short_name_and_version
174
+
175
+ # ========================================================================= #
176
+ # === set_short_name_then_version
177
+ #
178
+ # This method will combine two other methods.
179
+ # ========================================================================= #
180
+ def set_short_name_then_version(a, b)
181
+ set_short_name(a)
182
+ set_program_version(b)
183
+ end; alias set_name_then_version set_short_name_then_version # === set_name_then_version
184
+
185
+ # ========================================================================= #
186
+ # === return_real_short_name_and_version
187
+ #
188
+ # We delegate to the module-method here.
189
+ # ========================================================================= #
190
+ def return_real_short_name_and_version(i)
191
+ ::ProgramInformation.return_real_short_name_and_version(i)
192
+ end
193
+
194
+ # ========================================================================= #
195
+ # === return_name_and_version
196
+ #
197
+ # This method will return an array with two elements:
198
+ #
199
+ # (1) The first element is the name of the program in question.
200
+ # (2) The second element is the version of the program in question.
201
+ #
202
+ # The input can be rather tricky and complicated.
203
+ #
204
+ # Consider the following examples:
205
+ #
206
+ # 'libunwind-1.0-rc1'
207
+ # 'htop-1.0.0'
208
+ # 'WebKit-r93670'
209
+ # 'xfce4-dev-tools-4.8.0'
210
+ # 'e_dbus-1.7.10.tar.gz'
211
+ # 'boost_1_54_0.tar.bz2'
212
+ # 'short-mime-1.0.0-rc1'
213
+ #
214
+ # This can all be valid input.
215
+ #
216
+ # Which are the key-assumptions that we can do here?
217
+ #
218
+ # I think the best assumption we can do is to find the first NUMBER in
219
+ # the given string, and then group the rest of the data according to
220
+ # this NUMBER. This will not work in the case of something such as
221
+ # WebKit-r93, as there is a 'r' character before that number.
222
+ # So we will have to make a second assumption: if the character preceding
223
+ # the first found integer is NOT a '-' character, we will instead split
224
+ # on that character instead. This will however lead to a problem for
225
+ # something like "xfce4-dev-tools-4.8.0". So, in case there is a '-'
226
+ # character immediately after the pos variable, we assume we have such
227
+ # a special case.
228
+ #
229
+ # On Sep 2011, I came up with a far simpler idea. We simply have to
230
+ # find the most important '-' and then split accordingly. As long as
231
+ # we can identify the most important '-' correctly, so long will
232
+ # everything else "just work". This also did not work out, so I
233
+ # switched to a regex instead. Since then it has worked very fine.
234
+ #
235
+ # Take input such as:
236
+ #
237
+ # "font-bitstream-75dpi-1.0.0"
238
+ #
239
+ # Note though that this approach does not work with input like:
240
+ # "CrownCutlass-Alpha1.4"
241
+ # unless we assume that alpha is a part of the version,
242
+ # which is possibly correct.
243
+ # ========================================================================= #
244
+ def return_name_and_version(i = nil)
245
+ if i
246
+ determine_the_three_main_variables(i)
247
+ end
248
+ # ======================================================================= #
249
+ # We must consider what we wish to do about the '_' characters. We could
250
+ # remove them, but certain programs such as e_dbus may require it as
251
+ # part of their name. Also, Version entries such as '1_2_3' will become
252
+ # '123' rather than '1.2.3'. Thus, on Jan 2014 I have disabled the
253
+ # following line.
254
+ # ======================================================================= #
255
+ # i.delete!('_') if i.include? '_'
256
+ return [
257
+ @short_name, @program_version
258
+ ]
259
+ end; alias rnav return_name_and_version # === rnav
260
+
261
+ # ========================================================================= #
262
+ # === set_shall_we_downcase
263
+ # ========================================================================= #
264
+ def set_shall_we_downcase(
265
+ i = SHALL_WE_DOWNCASE
266
+ )
267
+ @shall_we_downcase = i
268
+ end
269
+
270
+ # ========================================================================= #
271
+ # === do_not_downcase
272
+ # ========================================================================= #
273
+ def do_not_downcase
274
+ @shall_we_downcase = false
275
+ end
276
+
277
+ # ========================================================================= #
278
+ # === set_be_verbose
279
+ #
280
+ # Set to report in a verbose way here.
281
+ # ========================================================================= #
282
+ def set_be_verbose(i = BE_VERBOSE)
283
+ case i
284
+ when :be_verbose
285
+ i = true
286
+ end
287
+ @be_verbose = i
288
+ end
289
+
290
+ # ========================================================================= #
291
+ # === determine_the_three_main_variables
292
+ #
293
+ # This method will determine the three main instance variables:
294
+ #
295
+ # - @short_name
296
+ # - @real_short_name
297
+ # - @program_version
298
+ #
299
+ # We must be careful, as the input may not include any '-' or '_' token,
300
+ # and then the regex would fail. Hence, the behaviour of this method
301
+ # will depend on whether the input includes a '-' or whether it
302
+ # does not.
303
+ #
304
+ # Note that presently, set_input() will modify the given input and
305
+ # ensure that there will be a '-' token, even in input that does
306
+ # not have any '-' or '_' such as in 'sendmail.8.15.2'.
307
+ # ========================================================================= #
308
+ def determine_the_three_main_variables(i = @input)
309
+ if i
310
+ if i.include? '|'
311
+ splitted = i.split('|')
312
+ short_name = splitted.first.to_s.dup
313
+ program_version = splitted.last.to_s.dup
314
+ set_short_name(short_name)
315
+ set_program_version(program_version)
316
+ else
317
+ opn; e "The input `#{i}` does not include a | character."
318
+ end
319
+ end
320
+ end; alias determine_name_and_program_version determine_the_three_main_variables # === determine_name_and_program_version
321
+
322
+ # ========================================================================= #
323
+ # === set_real_short_name
324
+ #
325
+ # The instance variable @real_short_name is not allowed to include any
326
+ # '-' characters. It may also not include any '_' characters.
327
+ #
328
+ # The latter could be found as part of program names such as "SDL_image".
329
+ # The @short_name variant may include these '_' tokens.
330
+ #
331
+ # Note that as of September 2017, we also disallow '.' tokens, such as
332
+ # may occur accidentally in input like "sendmail.5.8.2".
333
+ # ========================================================================= #
334
+ def set_real_short_name(i = @short_name)
335
+ i = i.to_s.dup.delete('-_.').rstrip
336
+ @real_short_name = i
337
+ end
338
+
339
+ # ========================================================================= #
340
+ # === set_short_name
341
+ #
342
+ # Use this method whenever you wish to assign to the @short_name variable.
343
+ #
344
+ # This variable is allowed to keep '-' and '_' entries, but some
345
+ # settings may also modify this.
346
+ # ========================================================================= #
347
+ def set_short_name(i)
348
+ i = i.dup
349
+ # ======================================================================= #
350
+ # First, consider getting rid of '+' and '-' tokens in the
351
+ # @short_name variant of the program name.
352
+ # For this to work, @remove_plus_and_minus has to be set to true.
353
+ # ======================================================================= #
354
+ if remove_plus_and_minus?
355
+ i.delete!('+') if i.include? '+'
356
+ i.delete!('-') if i.include? '-'
357
+ end
358
+ # ======================================================================= #
359
+ # === Get rid of '+' tokens, if they are included.
360
+ # ======================================================================= #
361
+ if remove_plus_token?
362
+ i.delete!('+') if i.include? '+'
363
+ # ======================================================================= #
364
+ # === Alternatively, replace '+' with the string 'plus' should it
365
+ # exist there.
366
+ # ======================================================================= #
367
+ elsif replace_plus_with_long_name?
368
+ i.gsub!(/\+/, 'plus') if i.include? '+'
369
+ end
370
+ @short_name = i
371
+ set_real_short_name(i) # We will also sync towards @real_short_name.
372
+ end; alias set_name set_short_name # === set_name
373
+ alias set_program_name set_short_name # === set_program_name
374
+
375
+ # ========================================================================= #
376
+ # === remove_source_like_strings
377
+ # ========================================================================= #
378
+ def remove_source_like_strings(i)
379
+ # ======================================================================= #
380
+ # i.gsub!(/--/,'-') if i.include? '--' # Replace '--' with '-'.
381
+ # ^^^ May not be good, depending on the input.
382
+ # ======================================================================= #
383
+ i.sub!(/-src/,'') if i.include? '-src' # Get rid of -src entries.
384
+ i.sub!(/\.source/,'') if i.include? '.source'
385
+ i.sub!(/-source$/,'') if i.end_with? '-source'
386
+ return i
387
+ end
388
+
389
+ # ========================================================================= #
390
+ # === remove_archive_type
391
+ # ========================================================================= #
392
+ def remove_archive_type(i)
393
+ ::ProgramInformation.remove_archive_type(i)
394
+ return i
395
+ end
396
+
397
+ # ========================================================================= #
398
+ # === e
399
+ # ========================================================================= #
400
+ def e(i = '')
401
+ ::ProgramInformation.e(i)
402
+ end
403
+
404
+ # ========================================================================= #
405
+ # === real_short_name?
406
+ #
407
+ # Keep in mind that @real_short_name does not have any '-' tokens.
408
+ # ========================================================================= #
409
+ def real_short_name?
410
+ @real_short_name
411
+ end; alias real_name? real_short_name? # === real_name?
412
+ alias real_program_name? real_short_name? # === real_program_name?
413
+ alias real_short_name real_short_name? # === real_short_name
414
+ alias name_of_the_program? real_short_name? # === name_of_the_program?
415
+
416
+ # ========================================================================= #
417
+ # === short_name?
418
+ #
419
+ # Reader method for the @short_name instance variable.
420
+ #
421
+ # short_name is an alias to @short_name.
422
+ # ========================================================================= #
423
+ def short_name?
424
+ @short_name
425
+ end; alias program_name short_name? # === program_name
426
+ alias program_name? short_name? # === program_name?
427
+ alias name short_name? # === name
428
+ alias name? short_name? # === name?
429
+ alias return_short_name short_name? # === return_short_name
430
+ alias short_name short_name? # === short_name
431
+ alias return_name short_name? # === return_name
432
+ alias first short_name? # === first
433
+ alias return_program_real_name short_name? # === return_program_real_name
434
+
435
+ # ========================================================================= #
436
+ # === program_version?
437
+ #
438
+ # Getter method for the @program_version variable.
439
+ # ========================================================================= #
440
+ def program_version?
441
+ @program_version
442
+ end; alias program_version program_version? # === program_version
443
+ alias version program_version? # === version
444
+ alias version? program_version? # === version?
445
+ alias last? program_version? # === last?
446
+ alias last program_version? # === last?
447
+ alias version_of_the_program? program_version? # === version_of_the_program?
448
+
449
+ # ========================================================================= #
450
+ # === show_help (help tag)
451
+ #
452
+ # To invoke this method, try:
453
+ #
454
+ # pinfo --show-help
455
+ #
456
+ # ========================================================================= #
457
+ def show_help
458
+ e
459
+ e 'This class is able to split a given input (a string) into'
460
+ e 'the inferred program-name, and associated program version '\
461
+ 'of said string.'
462
+ e
463
+ e 'For example, if you have this input string:'
464
+ e
465
+ e ' gobject-introspection-1.52.1'
466
+ e
467
+ e 'then this class can split this into these constituents:'
468
+ e
469
+ e ' @real_short_name: gobjectintrospection'
470
+ e ' @short_name: gobject-introspection'
471
+ e ' @program_version: 1.52.1'
472
+ e
473
+ e 'This is especially useful for other projects that require this'
474
+ e 'functionality, such as the rbt gem.'
475
+ e
476
+ end
477
+
478
+ # ========================================================================= #
479
+ # === set_input
480
+ #
481
+ # This method will, after performing some sanitize-operations, assign
482
+ # to the @input variable.
483
+ # ========================================================================= #
484
+ def set_input(i)
485
+ if i.is_a? Array
486
+ menu(i)
487
+ i = i.join(' ').strip
488
+ end
489
+ i = i.to_s.dup if i.frozen?
490
+ i = File.basename(i)
491
+ # ======================================================================= #
492
+ # We .squeeze away '--' tokens.
493
+ # ======================================================================= #
494
+ i.squeeze!('-')
495
+ i.strip!
496
+ # ======================================================================= #
497
+ # Next, some simple replacements without any method.
498
+ # ======================================================================= #
499
+ i.sub!(/-paco/,'') if i.include? '-paco'
500
+ i.sub!(/\/Programs\//,'') if i.include? '/Programs'
501
+ # ======================================================================= #
502
+ # The following must not conflict with i.e. "pkgconfig", hence why we
503
+ # also include a '/' character.
504
+ # ======================================================================= #
505
+ i.gsub!(/\/pkg/,'') if i.include? '/pkg'
506
+ # ======================================================================= #
507
+ # i.gsub!(/\//,'-') # Controversial. Disabled for now as of Jan 2014.
508
+ # ======================================================================= #
509
+ # We don't want either { or }.
510
+ # ======================================================================= #
511
+ i.delete!('{') if i.include? '{'
512
+ i.delete!('}') if i.include? '}'
513
+ # ======================================================================= #
514
+ # As of July 2016, we get rid of all tokens that follow a '#' character.
515
+ # We also will get rid of the '#' as well. Must come before we call
516
+ # remove_archive_type().
517
+ # ======================================================================= #
518
+ if i.include? '#'
519
+ i = i[0...i.index('#')]
520
+ end
521
+ i = remove_archive_type(i)
522
+ i = remove_source_like_strings(i)
523
+ # ======================================================================= #
524
+ # Next, we correct for input such as "nana%201.5.4". This one has no
525
+ # '-' token and no '_' token, but a '%' token. This '%' token will be
526
+ # replaced.
527
+ # ======================================================================= #
528
+ if i.include? '%'
529
+ unless i.include?('_') or i.include?('-')
530
+ i.tr!('%','-')
531
+ end
532
+ end
533
+ # ======================================================================= #
534
+ # Leading '-' will be removed.
535
+ # ======================================================================= #
536
+ i[0,1] = '' if i.start_with? '-'
537
+ # ======================================================================= #
538
+ # === Handle downcasing of the given input
539
+ #
540
+ # This will consider downcasing the input. The reason as to why this is
541
+ # necessary is so that input such as "Libgnome" can become "libgnome".
542
+ # ======================================================================= #
543
+ i.downcase! if @shall_we_downcase
544
+ # ======================================================================= #
545
+ # === Handle '+' tokens
546
+ # ======================================================================= #
547
+ if REMOVE_PLUS_TOKEN
548
+ i.delete!('+') if i.include? '+'
549
+ end
550
+ i = return_proper_pipe_token_to_this_input(i)
551
+ @input = i
552
+ end
553
+
554
+ end
555
+
556
+ # =========================================================================== #
557
+ # === ProgramInformation[]
558
+ # =========================================================================== #
559
+ def self.[](i)
560
+ ::ProgramInformation::ProgramInformation.new(i)
561
+ end; self.instance_eval { alias new [] } # === ProgramInformation.new
562
+ self.instance_eval { alias parse [] } # === ProgramInformation.parse
563
+ self.instance_eval { alias combined [] } # === ProgramInformation.combined
564
+
565
+ end
566
+
567
+ if __FILE__ == $PROGRAM_NAME
568
+ ProgramInformation::ProgramInformation.new(ARGV)
569
+ end # pinfo /Users/x/SRC/gobjectintrospection/gobject-introspection-1.52.1.tar.xz
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'program_information/project/project.rb'
6
+ # =========================================================================== #
7
+ module ProgramInformation
8
+
9
+ # ========================================================================= #
10
+ # === ProgramInformation::PROJECT_BASE_DIRECTORY
11
+ # ========================================================================= #
12
+ PROJECT_BASE_DIRECTORY =
13
+ "#{RbConfig::CONFIG['sitelibdir']}/program_information/"
14
+
15
+ # ========================================================================= #
16
+ # === ProgramInformation.project_base_dir?
17
+ # ========================================================================= #
18
+ def self.project_base_dir?
19
+ PROJECT_BASE_DIRECTORY
20
+ end
21
+
22
+ end
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ module ProgramInformation
6
+
7
+ class ProgramInformation
8
+
9
+ # ========================================================================= #
10
+ # === report (debug tag, report tag)
11
+ # ========================================================================= #
12
+ def report(
13
+ be_verbose = be_verbose?
14
+ )
15
+ case be_verbose
16
+ when :do_report, :be_verbose
17
+ be_verbose = true
18
+ end
19
+ lpad = 90
20
+ rpad = 49
21
+ if be_verbose
22
+ inner_ljust = 28
23
+ # ===================================================================== #
24
+ # === real short name
25
+ # ===================================================================== #
26
+ e (NAME_OF_CLASS+(' Program real short name ').ljust(inner_ljust)+'('+
27
+ yellow?+'@real_short_name'+rev+') is: ').ljust(lpad)+
28
+ (apostroph?+real_short_name?+apostroph?).
29
+ ljust(rpad)
30
+ # ===================================================================== #
31
+ # === short name
32
+ # ===================================================================== #
33
+ e (
34
+ NAME_OF_CLASS+(' Program name').ljust(inner_ljust)+'('+
35
+ yellow?+'@short_name'+rev+' ) is: '
36
+ ).ljust(lpad)+(apostroph?+short_name?+apostroph?).
37
+ ljust(rpad)
38
+ # ===================================================================== #
39
+ # === program version
40
+ # ===================================================================== #
41
+ e (NAME_OF_CLASS+(' Program version ').ljust(inner_ljust)+'('+
42
+ yellow?+'@program_version'+rev+') is: ').ljust(lpad)+
43
+ (apostroph?+version?+apostroph?).
44
+ ljust(rpad)
45
+ end
46
+ end; alias report_result report # === report_result
47
+
48
+ end; end
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'program_information/requires/require_the_program_information_project.rb'
6
+ # =========================================================================== #
7
+ require 'program_information/toplevel_methods.rb'
8
+ require 'program_information/constants/array_test_with_this_as_input.rb'
9
+ require 'program_information/www/embeddable_interface.rb'