directory_paradise 1.4.4

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

Potentially problematic release.


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

Files changed (31) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +213 -0
  3. data/bin/show_directory_content +7 -0
  4. data/directory_paradise.gemspec +45 -0
  5. data/doc/README.gen +185 -0
  6. data/doc/todo/todo.md +4 -0
  7. data/lib/directory_paradise/base/base.rb +195 -0
  8. data/lib/directory_paradise/base/colours.rb +196 -0
  9. data/lib/directory_paradise/constants/newline.rb +14 -0
  10. data/lib/directory_paradise/content/constants.rb +23 -0
  11. data/lib/directory_paradise/content/content.rb +682 -0
  12. data/lib/directory_paradise/project/project.rb +22 -0
  13. data/lib/directory_paradise/report/constants.rb +39 -0
  14. data/lib/directory_paradise/report/initialize.rb +75 -0
  15. data/lib/directory_paradise/report/menu.rb +329 -0
  16. data/lib/directory_paradise/report/misc.rb +675 -0
  17. data/lib/directory_paradise/report/obtain.rb +357 -0
  18. data/lib/directory_paradise/report/report.rb +527 -0
  19. data/lib/directory_paradise/report/reset.rb +174 -0
  20. data/lib/directory_paradise/requires/require_class_content.rb +7 -0
  21. data/lib/directory_paradise/requires/require_class_report.rb +7 -0
  22. data/lib/directory_paradise/requires/require_the_directory_paradise_project.rb +10 -0
  23. data/lib/directory_paradise/sdc.rb +24 -0
  24. data/lib/directory_paradise/to_human_readable/to_human_readable.rb +98 -0
  25. data/lib/directory_paradise/version/version.rb +19 -0
  26. data/lib/directory_paradise/yaml/colours_for_bytes_values.yml +14 -0
  27. data/lib/directory_paradise.rb +1 -0
  28. data/test/testing_class_content.rb +16 -0
  29. data/test/testing_class_report.rb +40 -0
  30. data/test/testing_toplevel_methods.rb +14 -0
  31. metadata +110 -0
@@ -0,0 +1,675 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'directory_paradise/report/misc.rb'
6
+ # =========================================================================== #
7
+ require 'directory_paradise/base/base.rb'
8
+
9
+ module DirectoryParadise
10
+
11
+ class Report < Base # === DirectoryParadise::Report
12
+
13
+ # ========================================================================= #
14
+ # === set_work_on_this_directory
15
+ #
16
+ # This method will determine on which target directory (the base
17
+ # directory) this class will work on.
18
+ #
19
+ # It must be ensured that this variable will have a trailing '/'
20
+ # character, to properly indicate that we are dealing with a
21
+ # directory here.
22
+ # ========================================================================= #
23
+ def set_work_on_this_directory(
24
+ i = return_pwd
25
+ )
26
+ # ======================================================================= #
27
+ # === Handle Hashes first
28
+ # ======================================================================= #
29
+ if i.is_a? Hash
30
+ if i.has_key? :from
31
+ i = i.delete(:from)
32
+ end
33
+ end
34
+ if i.is_a? Array
35
+ _ = return_non_hyphen_entries_from(i)
36
+ if _.empty?
37
+ i = return_pwd
38
+ else
39
+ i = _
40
+ end
41
+ i = i.join(' ').strip if i.is_a? Array
42
+ end
43
+ case i
44
+ # ======================================================================= #
45
+ # === :dont_run_yet
46
+ # ======================================================================= #
47
+ when :dont_run_yet
48
+ i = nil
49
+ @run_already = false
50
+ # ======================================================================= #
51
+ # === :show_content
52
+ # ======================================================================= #
53
+ when :show_content
54
+ do_show_the_content
55
+ i = return_pwd
56
+ end
57
+ begin
58
+ # ===================================================================== #
59
+ # Default values come next here in this clause.
60
+ # ===================================================================== #
61
+ i = return_pwd if i.nil?
62
+ i = i.dup if i.frozen?
63
+ # ===================================================================== #
64
+ # We need to default to the current directory if there exists a
65
+ # directory with that name.
66
+ # ===================================================================== #
67
+ i = return_pwd unless Dir.exist?(i)
68
+ if i.is_a? String and i.empty?
69
+ i = return_pwd
70
+ end
71
+ rescue Errno::ENOENT # Rescue non-existing directories.
72
+ e 'An error occurred. The directory may have been removed or the local'
73
+ e "filesystem is unavailable. Thus, we will display \"/\" instead.#{N}"
74
+ i = '/'
75
+ end
76
+ i = i.dup if i.frozen?
77
+ i << '/' unless i.end_with? '/'
78
+ i.squeeze!('/')
79
+ @internal_hash[:work_on_this_directory] = i
80
+ end; alias set_from_which_directory set_work_on_this_directory # === set_from_which_directory
81
+ alias set_dir set_work_on_this_directory # === set_dir
82
+ alias set_main_directory set_work_on_this_directory # === set_main_directory
83
+ alias set_base_directory set_work_on_this_directory # === set_base_directory
84
+
85
+
86
+ # ========================================================================= #
87
+ # === apply_filter
88
+ #
89
+ # Use this method here to apply a filter on the main entries.
90
+ # ========================================================================= #
91
+ def apply_filter(i)
92
+ i = i.dup if i.frozen?
93
+ i.delete!('*') if i.include? '*'
94
+ i.delete!('/') if i.include? '/' # This may be incorrect.
95
+ obtain_entries unless entries?
96
+ entries?.select! {|entry|
97
+ entry.include?(i)
98
+ }
99
+ entries?
100
+ end
101
+
102
+ # ========================================================================= #
103
+ # === consider_colourizing_filename
104
+ # ========================================================================= #
105
+ def consider_colourizing_filename(filename)
106
+ result = ''.dup
107
+ if File.exist? filename
108
+ filetype = File.ftype(filename)
109
+ unless show_leading_slash?
110
+ filename[0,1] = '' if filename.start_with? '/'
111
+ end
112
+ # ===================================================================== #
113
+ # Next, honour the variable @show_full_path if it was set to true.
114
+ # ===================================================================== #
115
+ unless show_full_path?
116
+ filename = File.basename(filename)
117
+ end
118
+ case filetype
119
+ when 'link' # Handle Symlinks here.
120
+ result = colourize_symlink(filename)
121
+ when 'directory'
122
+ result = colourize_directory(filename) # This is actually sdir().
123
+ when 'file'
124
+ result = sfile(filename)
125
+ end
126
+ end
127
+ result
128
+ end
129
+
130
+ # ========================================================================= #
131
+ # === do_ignore_backups
132
+ # ========================================================================= #
133
+ def do_ignore_backups
134
+ # ======================================================================= #
135
+ # Do not list implied entries ending with '~' in the following option.
136
+ # ======================================================================= #
137
+ if ignore_backups?
138
+ directory_content?.ignore_backups
139
+ end
140
+ end
141
+
142
+ # ========================================================================= #
143
+ # === consider_sorting_by
144
+ #
145
+ # This is the specific sorting-action. The method will delegate onto
146
+ # class DirectoryContent::ShowDirectoryContent.
147
+ # ========================================================================= #
148
+ def consider_sorting_by(
149
+ i = sort_by?
150
+ )
151
+ directory_content?.consider_sorting_by(i)
152
+ end
153
+
154
+ # ========================================================================= #
155
+ # === shorten_file_elegantly
156
+ #
157
+ # We need to take into account that our file could be a directory too.
158
+ # ========================================================================= #
159
+ def shorten_file_elegantly(
160
+ i, threshold = FILE_SIZE_THRESHOLD
161
+ )
162
+ i = i.to_s.dup
163
+ middle_pos = (i.size / 2) - 10
164
+ oversize = i.size - threshold # The oversize value
165
+ if oversize > 0
166
+ start_pos = middle_pos - (oversize / 2)
167
+ end_pos = start_pos + oversize
168
+ i[start_pos .. end_pos] = '[… Truncated …]' # This is the padding to use.
169
+ end
170
+ return i
171
+ end
172
+
173
+ # ========================================================================= #
174
+ # === do_not_display_content
175
+ # ========================================================================= #
176
+ def do_not_display_content
177
+ @internal_hash[:display_content] = false # if true, we display() the result.
178
+ end
179
+
180
+ # ========================================================================= #
181
+ # === do_show_the_content
182
+ # ========================================================================= #
183
+ def do_show_the_content
184
+ @internal_hash[:display_content] = true
185
+ end; alias do_display_content do_show_the_content # === do_display_content
186
+
187
+ # ========================================================================= #
188
+ # === colourize_symlink
189
+ #
190
+ # Use this method to colourize a symlink.
191
+ # ========================================================================= #
192
+ def colourize_symlink(i)
193
+ result = return_name_of_this_symlink(i)
194
+ # ======================================================================= #
195
+ # Check whether we will use colours or whether we will not.
196
+ # ======================================================================= #
197
+ if File.symlink?(i)
198
+ if use_colours?
199
+ if stop_on_missing_symlink? and !File.readlink?(i)
200
+ opn; e "The symlink for #{i} does not exist."
201
+ opn; e 'Exiting now, as set per a configuration option.'
202
+ exit
203
+ end
204
+ result = ' → '+
205
+ skyblue(
206
+ File.readlink(i)
207
+ ) # Need to readlink on the original variant.
208
+ else
209
+ result = ' → '+File.readlink(i)
210
+ end
211
+ end
212
+ result
213
+ end
214
+
215
+ # ========================================================================= #
216
+ # === return_name_of_this_symlink
217
+ #
218
+ # File.basename() kills off leading '/', hence we need this method.
219
+ # ========================================================================= #
220
+ def return_name_of_this_symlink(i)
221
+ i = File.basename(i)
222
+ if return_pwd == '/' and show_leading_slash?
223
+ i.prepend '/'
224
+ end
225
+ return i
226
+ end
227
+
228
+ # ========================================================================= #
229
+ # === do_show_only_symlinks
230
+ # ========================================================================= #
231
+ def do_show_only_symlinks
232
+ @internal_hash[:show_only_symlinks] = true
233
+ end
234
+
235
+ # ========================================================================= #
236
+ # === toggle_permission
237
+ # ========================================================================= #
238
+ def toggle_permission
239
+ _ = @internal_hash[:show_condensed_permissions]
240
+ @internal_hash[:show_condensed_permissions] = !_ # Toggle it here.
241
+ end
242
+
243
+ # ========================================================================= #
244
+ # === do_not_display_only_directories
245
+ # ========================================================================= #
246
+ def do_not_display_only_directories
247
+ @internal_hash[:display_only_directories] = false # Whether to display only directories or not.
248
+ end
249
+
250
+ # ========================================================================= #
251
+ # === dont_show_header
252
+ # ========================================================================= #
253
+ def dont_show_header
254
+ @internal_hash[:show_header] = false
255
+ end; alias do_not_show_the_header dont_show_header # === do_not_show_the_header
256
+
257
+ # ========================================================================= #
258
+ # === do_show_hidden_files
259
+ # ========================================================================= #
260
+ def do_show_hidden_files
261
+ @internal_hash[:show_hidden_files] = true
262
+ end
263
+
264
+ # ========================================================================= #
265
+ # == dont_show_index
266
+ # ========================================================================= #
267
+ def dont_show_index
268
+ @internal_hash[:show_index] = false
269
+ end; alias do_not_show_the_index dont_show_index # === do_not_show_the_index
270
+ alias do_not_show_index dont_show_index # === do_not_show_index
271
+
272
+ # ========================================================================= #
273
+ # === toggle_colourize
274
+ # ========================================================================= #
275
+ def toggle_colourize
276
+ if @internal_hash[:colourize_kb_and_mb] == false
277
+ @internal_hash[:colourize_kb_and_mb] = true
278
+ else
279
+ @internal_hash[:colourize_kb_and_mb] = false
280
+ end
281
+ end; alias toggle toggle_colourize # === toggle
282
+
283
+ # ========================================================================= #
284
+ # === rev
285
+ # ========================================================================= #
286
+ def rev
287
+ @internal_hash[:default_colour]
288
+ end
289
+
290
+ # ========================================================================= #
291
+ # === do_not_stop_on_missing_symlink
292
+ # ========================================================================= #
293
+ def do_not_stop_on_missing_symlink
294
+ @internal_hash[:stop_on_missing_symlink] = false # if true we will stop on missing symlink.
295
+ end
296
+
297
+ # ========================================================================= #
298
+ # === do_show_condensed_permissions
299
+ # ========================================================================= #
300
+ def do_show_condensed_permissions
301
+ @internal_hash[:show_condensed_permissions] = true
302
+ end
303
+
304
+ # ========================================================================= #
305
+ # === do_not_ignore_backups
306
+ # ========================================================================= #
307
+ def do_not_ignore_backups
308
+ @internal_hash[:ignore_backups] = false
309
+ end
310
+
311
+ # ========================================================================= #
312
+ # === ignore_backups
313
+ # ========================================================================= #
314
+ def ignore_backups
315
+ @internal_hash[:ignore_backups] = true
316
+ end
317
+
318
+ # ========================================================================= #
319
+ # === do_not_report_filesize
320
+ # ========================================================================= #
321
+ def do_not_report_filesize
322
+ @internal_hash[:report_filesize] = false
323
+ end; alias dont_report_total_filesize do_not_report_filesize # === dont_report_total_filesize
324
+
325
+ # ========================================================================= #
326
+ # === do_show_index
327
+ # ========================================================================= #
328
+ def do_show_index
329
+ @internal_hash[:show_index] = true # if true then we will show the index.
330
+ end
331
+
332
+ # ========================================================================= #
333
+ # === do_report_filesize
334
+ # ========================================================================= #
335
+ def do_report_filesize
336
+ @internal_hash[:report_filesize] = true
337
+ end
338
+
339
+ # ========================================================================= #
340
+ # === do_not_show_size
341
+ # ========================================================================= #
342
+ def do_not_show_size
343
+ @internal_hash[:show_size] = false
344
+ end
345
+
346
+ # ========================================================================= #
347
+ # === do_show_almost_nothing
348
+ # ========================================================================= #
349
+ def do_show_almost_nothing
350
+ do_not_show_size
351
+ do_not_show_index
352
+ do_not_show_permissions
353
+ do_not_show_modtime
354
+ end
355
+
356
+ # ========================================================================= #
357
+ # === do_truncate_long_file_names
358
+ # ========================================================================= #
359
+ def do_truncate_long_file_names
360
+ @internal_hash[:truncate_long_file_names] = true
361
+ end; alias truncate do_truncate_long_file_names # === truncate
362
+
363
+ # ========================================================================= #
364
+ # === disable_show_modification_time
365
+ # ========================================================================= #
366
+ def disable_show_modification_time
367
+ @internal_hash[:show_modification_time] = false
368
+ end; alias dont_show_modification_time disable_show_modification_time
369
+ alias do_not_show_modification_time disable_show_modification_time
370
+ alias do_not_show_modtime disable_show_modification_time
371
+
372
+ # ========================================================================= #
373
+ # === do_shorten_display
374
+ # ========================================================================= #
375
+ def do_shorten_display
376
+ enable_collapse
377
+ disable_show_modification_time # Added Aug 2012.
378
+ end
379
+
380
+ # ========================================================================= #
381
+ # === do_not_debug
382
+ # ========================================================================= #
383
+ def do_not_debug
384
+ @internal_hash[:debug] = false # Whether we debug this class or not.
385
+ end
386
+
387
+ # ========================================================================= #
388
+ # === do_not_truncate_long_file_names
389
+ # ========================================================================= #
390
+ def do_not_truncate_long_file_names
391
+ @internal_hash[:truncate_long_file_names] = false
392
+ end
393
+
394
+ # ========================================================================= #
395
+ # === show_simplified
396
+ # ========================================================================= #
397
+ def do_show_simplified
398
+ @internal_hash[:show_simplified] = true
399
+ end; alias show_simplified do_show_simplified # === show_simplified
400
+
401
+ # ========================================================================= #
402
+ # === do_show_leading_slash
403
+ # ========================================================================= #
404
+ def do_show_leading_slash
405
+ @internal_hash[:show_leading_slash] = true
406
+ end
407
+
408
+ # ========================================================================= #
409
+ # === do_show_modification_time
410
+ # ========================================================================= #
411
+ def do_show_modification_time
412
+ @internal_hash[:show_modification_time] = true
413
+ end
414
+
415
+ # ========================================================================= #
416
+ # === do_not_show_inode
417
+ # ========================================================================= #
418
+ def do_not_show_inode
419
+ @internal_hash[:show_inode] = false
420
+ end
421
+
422
+ # ========================================================================= #
423
+ # === do_show_inode
424
+ # ========================================================================= #
425
+ def do_show_inode # Show the inode number if true.
426
+ @internal_hash[:show_inode] = true
427
+ end
428
+
429
+ # ========================================================================= #
430
+ # === do_hide_files
431
+ # ========================================================================= #
432
+ def do_hide_files
433
+ @internal_hash[:show_hidden_files] = false
434
+ end; alias do_not_show_hidden_files do_hide_files # === do_not_show_hidden_files
435
+
436
+ # ========================================================================= #
437
+ # === do_show_uncondensed_permissions
438
+ # ========================================================================= #
439
+ def do_show_uncondensed_permissions
440
+ @internal_hash[:show_condensed_permissions] = false
441
+ end; alias dont_show_condensed_permissions do_show_uncondensed_permissions
442
+
443
+ # ========================================================================= #
444
+ # === show_this_help_line
445
+ # ========================================================================= #
446
+ def show_this_help_line(
447
+ i = :toggle, optional_additional_argument = nil
448
+ )
449
+ if optional_additional_argument
450
+ e " - #{sfancy(i)} / #{sfancy(optional_additional_argument)}"
451
+ else
452
+ e " - #{sfancy(i)}"
453
+ end
454
+ end
455
+
456
+ # ========================================================================= #
457
+ # === set_show_full_path
458
+ # ========================================================================= #
459
+ def set_show_full_path(i = true)
460
+ @internal_hash[:show_full_path] = i
461
+ end
462
+
463
+ # ========================================================================= #
464
+ # === do_colourize_kb_and_mb
465
+ # ========================================================================= #
466
+ def do_colourize_kb_and_mb
467
+ @internal_hash[:colourize_kb_and_mb] = true
468
+ end
469
+
470
+ # ========================================================================= #
471
+ # === collapse=
472
+ # ========================================================================= #
473
+ def collapse=(i)
474
+ @internal_hash[:collapse] = i
475
+ end
476
+
477
+ # ========================================================================= #
478
+ # === do_not_show_simplified
479
+ # ========================================================================= #
480
+ def do_not_show_simplified
481
+ @internal_hash[:show_simplified] = false
482
+ end
483
+
484
+ # ========================================================================= #
485
+ # === stop_on_missing_symlink=
486
+ # ========================================================================= #
487
+ def stop_on_missing_symlink=(i)
488
+ @internal_hash[:stop_on_missing_symlink] = i
489
+ end
490
+
491
+ # ========================================================================= #
492
+ # === do_show_full_path
493
+ # ========================================================================= #
494
+ def do_show_full_path
495
+ @internal_hash[:show_full_path] = true
496
+ end
497
+
498
+ # ========================================================================= #
499
+ # === dont_show_full_path
500
+ #
501
+ # I assume that this option is interconnected with another option,
502
+ # namely the ability to show, or rather not show, a leading slash.
503
+ #
504
+ # Thus, as of May 2015, we will also disable showing the leading
505
+ # slash whenever we invoke this method here.
506
+ # ========================================================================= #
507
+ def dont_show_full_path
508
+ set_show_full_path(false)
509
+ do_not_show_leading_slash
510
+ end; alias do_not_show_full_path dont_show_full_path # === do_not_show_full_path
511
+ alias enable_collapse dont_show_full_path # === enable_collapse
512
+ alias do_not_show_the_full_path dont_show_full_path # === do_not_show_the_full_path
513
+ alias do_show_only_filename dont_show_full_path # === do_show_only_filename
514
+
515
+ # ========================================================================= #
516
+ # === do_not_show_permissions
517
+ # ========================================================================= #
518
+ def do_not_show_permissions
519
+ @internal_hash[:show_permission_bits] = false
520
+ end
521
+
522
+ # ========================================================================= #
523
+ # === do_show_header
524
+ # ========================================================================= #
525
+ def do_show_header
526
+ @internal_hash[:show_header] = true
527
+ end
528
+
529
+ # ========================================================================= #
530
+ # === do_sort_reversed
531
+ # ========================================================================= #
532
+ def do_sort_reversed
533
+ sort_how :reverse
534
+ end
535
+
536
+ # ========================================================================= #
537
+ # === do_not_show_group_information
538
+ # ========================================================================= #
539
+ def do_not_show_group_information
540
+ @internal_hash[:show_group_information] = false
541
+ end; alias no_groups do_not_show_group_information # === no_groups
542
+
543
+ # ========================================================================= #
544
+ # === do_not_show_the_owner
545
+ # ========================================================================= #
546
+ def do_not_show_the_owner
547
+ @internal_hash[:show_owner] = false
548
+ end
549
+
550
+ # ========================================================================= #
551
+ # === do_show_group_information
552
+ # ========================================================================= #
553
+ def do_show_group_information
554
+ @internal_hash[:show_group_information] = true
555
+ end
556
+
557
+ # ========================================================================= #
558
+ # === do_show_owner
559
+ # ========================================================================= #
560
+ def do_show_owner
561
+ @internal_hash[:show_owner] = true
562
+ end
563
+
564
+ # ========================================================================= #
565
+ # === do_not_show_leading_slash
566
+ # ========================================================================= #
567
+ def do_not_show_leading_slash
568
+ @internal_hash[:show_leading_slash] = false
569
+ end
570
+
571
+ # ========================================================================= #
572
+ # === do_show_permissions
573
+ # ========================================================================= #
574
+ def do_show_permissions
575
+ @internal_hash[:show_permission_bits] = true
576
+ end
577
+
578
+ # ========================================================================= #
579
+ # === only_directories
580
+ #
581
+ # Only get directories, with this method.
582
+ # ========================================================================= #
583
+ def only_directories
584
+ @internal_hash[:display_only_directories] = true
585
+ end
586
+
587
+ # ========================================================================= #
588
+ # === run_then_display
589
+ # ========================================================================= #
590
+ def run_then_display
591
+ run
592
+ display
593
+ end; alias gather_then_display_content run_then_display # === gather_then_display_content
594
+
595
+ # ========================================================================= #
596
+ # === define_colours
597
+ #
598
+ # define_colours() is called from reset()
599
+ # ========================================================================= #
600
+ def define_colours(
601
+ optional_hash_use_these_colours = nil
602
+ ) # Colours tag, colors tag.
603
+ _ = optional_hash_use_these_colours
604
+ if use_colours?
605
+ if _ # If the Hash is defined, enter here.
606
+ @internal_hash[:default_colour] = Colours.beautiful _['colour_for_normal']
607
+ @internal_hash[:colour_for_files] = Colours.beautiful _['colour_for_files']
608
+ @internal_hash[:colour_for_symlinks] = Colours.beautiful _['colour_for_symlinks']
609
+ @internal_hash[:colour_for_directories] = Colours.beautiful _['colour_for_directories']
610
+ else # Try to use Konsole after this point.
611
+ if Object.const_defined? :Colours
612
+ @internal_hash[:default_colour] = Colours.restore? # Restore the default again.
613
+ @internal_hash[:colour_for_files] = Colours.springgreen
614
+ @internal_hash[:colour_for_symlinks] = Colours.slateblue
615
+ @internal_hash[:colour_for_directories] = Colours.paleturquoise
616
+ else # Else, use the default colours. They are defined in the module Colours.
617
+ @internal_hash[:default_colour] = Colours::WHITE
618
+ @internal_hash[:colour_for_files] = Colours::GREEN
619
+ @internal_hash[:colour_for_symlinks] = Colours::BLUE
620
+ @internal_hash[:colour_for_directories] = Colours::CYAN # Which colour to use for directories.
621
+ end
622
+ end
623
+ end
624
+ end
625
+
626
+ # ========================================================================= #
627
+ # === check_whether_we_use_colours
628
+ #
629
+ # We will enable the colours if necessary.
630
+ # ========================================================================= #
631
+ def check_whether_we_use_colours
632
+ if use_colours?
633
+ enable_colours
634
+ check_whether_the_colours_defined_in_the_yaml_file_are_valid
635
+ define_colours
636
+ end
637
+ end
638
+
639
+ # ========================================================================= #
640
+ # === yaml_file?
641
+ # ========================================================================= #
642
+ def yaml_file?
643
+ FILE_COLOURS_FOR_BYTES_VALUES
644
+ end
645
+
646
+ # ========================================================================= #
647
+ # === check_whether_the_colours_defined_in_the_yaml_file_are_valid
648
+ # ========================================================================= #
649
+ def check_whether_the_colours_defined_in_the_yaml_file_are_valid
650
+ _ = @internal_hash[:hash_colours_for_bytes_value]
651
+ _.each_pair {|key, value| # The entries will be 'KB' and :lightgreen, for instance.
652
+ if Object.const_defined?(:Colours) and
653
+ ::Colours.respond_to?(value)
654
+ else
655
+ e 'Attention please: the Colours namespace does not have a'
656
+ e 'colour named `'+value.to_s+'` defined.'
657
+ e
658
+ e 'One key (the one named '+key.to_s+') currently has this'
659
+ e 'value defined, though.'
660
+ e
661
+ e 'Please change this by modifying the following file:'
662
+ e
663
+ e sfile(" #{yaml_file?}")
664
+ e
665
+ e 'To get a listing of all defined colour-names, do this:'
666
+ e
667
+ e " require 'colours'"
668
+ e ' pp Colours.html_colours?'
669
+ e
670
+ exit
671
+ end
672
+ }
673
+ end
674
+
675
+ end; end