colours 0.6.12

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

Potentially problematic release.


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

Files changed (147) hide show
  1. checksums.yaml +7 -0
  2. data/LICENCE.md +22 -0
  3. data/README.md +970 -0
  4. data/bin/colours +7 -0
  5. data/bin/html_colour_to_hex_value +7 -0
  6. data/bin/html_colourize +7 -0
  7. data/bin/print_rainbow_line +7 -0
  8. data/bin/rainbow_colours +7 -0
  9. data/bin/remove_ansii_escape_sequences +7 -0
  10. data/colours.gemspec +76 -0
  11. data/doc/COLOUR_CODES_CHART.md +28 -0
  12. data/doc/HOW_TO_PICK_YOUR_OWN_COLOURS.md +29 -0
  13. data/doc/README.gen +927 -0
  14. data/doc/todo/todo.md +25 -0
  15. data/lib/colours/256_colours/support_for_256_colours.rb +190 -0
  16. data/lib/colours/autoalias_e.rb +10 -0
  17. data/lib/colours/autogenerated/README.md +2 -0
  18. data/lib/colours/autogenerated/support_for_256_colours.rb +2235 -0
  19. data/lib/colours/autogenerated/support_for_html_colours.rb +1778 -0
  20. data/lib/colours/autogenerated/toplevel_basic_colour_methods.rb +6367 -0
  21. data/lib/colours/autoinclude.rb +14 -0
  22. data/lib/colours/base/base.rb +23 -0
  23. data/lib/colours/basic_colours/README.md +4 -0
  24. data/lib/colours/basic_colours/basic_colours.rb +334 -0
  25. data/lib/colours/class/class.rb +125 -0
  26. data/lib/colours/colour_methods/README.md +11 -0
  27. data/lib/colours/colour_methods/default_colour.rb +66 -0
  28. data/lib/colours/colour_methods/sargument.rb +70 -0
  29. data/lib/colours/colour_methods/scomments.rb +105 -0
  30. data/lib/colours/colour_methods/sdir.rb +66 -0
  31. data/lib/colours/colour_methods/sfancy.rb +84 -0
  32. data/lib/colours/colour_methods/sfile.rb +71 -0
  33. data/lib/colours/colour_methods/simportant.rb +92 -0
  34. data/lib/colours/colour_methods/snormal.rb +66 -0
  35. data/lib/colours/colour_methods/ssymlink.rb +102 -0
  36. data/lib/colours/colour_methods/swarn.rb +76 -0
  37. data/lib/colours/colour_table/README.md +3 -0
  38. data/lib/colours/colour_table/colour_table.rb +275 -0
  39. data/lib/colours/colours_e_autoinclude.rb +9 -0
  40. data/lib/colours/commandline/README.md +2 -0
  41. data/lib/colours/commandline/commandline.rb +44 -0
  42. data/lib/colours/commandline/menu.rb +111 -0
  43. data/lib/colours/constants/colour_constants.rb +301 -0
  44. data/lib/colours/constants/file_constants.rb +72 -0
  45. data/lib/colours/constants/hash_simple_colours.rb +146 -0
  46. data/lib/colours/constants/misc.rb +59 -0
  47. data/lib/colours/constants/newline.rb +14 -0
  48. data/lib/colours/constants/registered_colour_methods.rb +53 -0
  49. data/lib/colours/e/README.md +13 -0
  50. data/lib/colours/e/autoinclude.rb +11 -0
  51. data/lib/colours/e/e.rb +35 -0
  52. data/lib/colours/e.rb +5 -0
  53. data/lib/colours/eparse/eparse.rb +77 -0
  54. data/lib/colours/everything/autoinclude.rb +11 -0
  55. data/lib/colours/html_colours/README.md +1 -0
  56. data/lib/colours/html_colours/add_html_colours_onto_the_toplevel_namespace.rb +22 -0
  57. data/lib/colours/html_colours/hash_html_colours.rb +63 -0
  58. data/lib/colours/html_colours/html_colourize.rb +48 -0
  59. data/lib/colours/html_colours/is_this_html_colour_included.rb +64 -0
  60. data/lib/colours/html_colours/misc.rb +186 -0
  61. data/lib/colours/html_colours/show_html_colours.rb +85 -0
  62. data/lib/colours/kde_colour_palette/kde_colour_palette.rb +128 -0
  63. data/lib/colours/map_symbol_to_corresponding_colour/map_symbol_to_corresponding_colour.rb +219 -0
  64. data/lib/colours/module.rb +11 -0
  65. data/lib/colours/project/project_base_directory.rb +22 -0
  66. data/lib/colours/rainbow_colours/README.md +2 -0
  67. data/lib/colours/rainbow_colours/check_for_trollop_being_available_or_exit.rb +26 -0
  68. data/lib/colours/rainbow_colours/constants.rb +30 -0
  69. data/lib/colours/rainbow_colours/do_parse_via_rainbow_colours.rb +164 -0
  70. data/lib/colours/rainbow_colours/paint_detected_mode.rb +20 -0
  71. data/lib/colours/rainbow_colours/print_rainbow_line.rb +68 -0
  72. data/lib/colours/rainbow_colours/println_ani.rb +32 -0
  73. data/lib/colours/rainbow_colours/println_plain.rb +36 -0
  74. data/lib/colours/rainbow_colours/rainbow.rb +38 -0
  75. data/lib/colours/rainbow_colours/report_errors.rb +32 -0
  76. data/lib/colours/rainbow_colours/returnln_plain.rb +63 -0
  77. data/lib/colours/rainbow_colours/set_mode.rb +24 -0
  78. data/lib/colours/requires/require_all_colour_methods.rb +5 -0
  79. data/lib/colours/requires/require_commandline.rb +7 -0
  80. data/lib/colours/requires/require_eparse.rb +11 -0
  81. data/lib/colours/requires/require_rgb.rb +5 -0
  82. data/lib/colours/requires/require_sdir.rb +5 -0
  83. data/lib/colours/requires/require_sfile.rb +5 -0
  84. data/lib/colours/requires/require_the_256_colours_module.rb +16 -0
  85. data/lib/colours/requires/require_the_basic_colours.rb +7 -0
  86. data/lib/colours/requires/require_the_colour_methods.rb +34 -0
  87. data/lib/colours/requires/require_the_colour_table.rb +7 -0
  88. data/lib/colours/requires/require_the_colours_project.rb +52 -0
  89. data/lib/colours/requires/require_the_constants.rb +11 -0
  90. data/lib/colours/requires/require_the_html_colours.rb +11 -0
  91. data/lib/colours/requires/require_the_kde_colour_palette.rb +7 -0
  92. data/lib/colours/requires/require_the_toplevel_methods.rb +42 -0
  93. data/lib/colours/requires/require_yaml.rb +9 -0
  94. data/lib/colours/revert/revert.rb +106 -0
  95. data/lib/colours/rgb/rgb.rb +547 -0
  96. data/lib/colours/testing/README.md +2 -0
  97. data/lib/colours/testing/testing.rb +157 -0
  98. data/lib/colours/toplevel_methods/bold.rb +35 -0
  99. data/lib/colours/toplevel_methods/bold_and_italic.rb +36 -0
  100. data/lib/colours/toplevel_methods/cat.rb +39 -0
  101. data/lib/colours/toplevel_methods/clear_screen.rb +18 -0
  102. data/lib/colours/toplevel_methods/cliner.rb +19 -0
  103. data/lib/colours/toplevel_methods/col.rb +56 -0
  104. data/lib/colours/toplevel_methods/e.rb +63 -0
  105. data/lib/colours/toplevel_methods/esystem.rb +19 -0
  106. data/lib/colours/toplevel_methods/fancy_parse.rb +83 -0
  107. data/lib/colours/toplevel_methods/html_colourize.rb +64 -0
  108. data/lib/colours/toplevel_methods/is_on_roebe.rb +16 -0
  109. data/lib/colours/toplevel_methods/italic.rb +110 -0
  110. data/lib/colours/toplevel_methods/make_colour.rb +29 -0
  111. data/lib/colours/toplevel_methods/methods_related_to_html_colours.rb +350 -0
  112. data/lib/colours/toplevel_methods/misc.rb +156 -0
  113. data/lib/colours/toplevel_methods/open_this_file.rb +26 -0
  114. data/lib/colours/toplevel_methods/prefer_this_colour_schemata.rb +85 -0
  115. data/lib/colours/toplevel_methods/random_html_colour.rb +48 -0
  116. data/lib/colours/toplevel_methods/random_value.rb +37 -0
  117. data/lib/colours/toplevel_methods/remove_escape_sequence.rb +112 -0
  118. data/lib/colours/toplevel_methods/set_last_colour_used.rb +32 -0
  119. data/lib/colours/toplevel_methods/show_basic_colour_palette.rb +36 -0
  120. data/lib/colours/toplevel_methods/underline.rb +129 -0
  121. data/lib/colours/toplevel_methods/use_colours.rb +290 -0
  122. data/lib/colours/utility_scripts/README.md +2 -0
  123. data/lib/colours/utility_scripts/autogenerate.rb +291 -0
  124. data/lib/colours/version/version.rb +25 -0
  125. data/lib/colours/yaml/256_colours.yml +277 -0
  126. data/lib/colours/yaml/basic_colours.yml +23 -0
  127. data/lib/colours/yaml/html_colours.yml +835 -0
  128. data/lib/colours/yaml/kde_colour_palette.yml +183 -0
  129. data/lib/colours/yaml/prefer_this_colour_schemata.yml +15 -0
  130. data/lib/colours/yaml/use_these_values_for_the_colour_methods.yml +15 -0
  131. data/lib/colours.rb +5 -0
  132. data/test/test.html +18 -0
  133. data/test/testing_256_colours_support.rb +29 -0
  134. data/test/testing_col.rb +10 -0
  135. data/test/testing_colours.rb +95 -0
  136. data/test/testing_colours_e.rb +13 -0
  137. data/test/testing_eparse.rb +13 -0
  138. data/test/testing_kde_colour_palette.rb +30 -0
  139. data/test/testing_konsole_submodule.rb +226 -0
  140. data/test/testing_map_symbol_to_corresponding_colour.rb +14 -0
  141. data/test/testing_rgb_to_hex.rb +32 -0
  142. data/test/testing_the_basic_colours_of_the_colours_project.rb +58 -0
  143. data/test/testing_the_colour_methods.rb +36 -0
  144. data/test/testing_the_constants_of_the_colours_project.rb +9 -0
  145. data/test/testing_the_html_colours_of_the_colours_project.rb +37 -0
  146. data/test/testing_whether_colours_will_be_used.rb +7 -0
  147. metadata +229 -0
@@ -0,0 +1,547 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === Colours::RGB
6
+ #
7
+ # The Colours::RBG class was used to convert from RGB values to hex
8
+ # format. However had these days it is not as widely used anymore
9
+ # within the colours project.
10
+ #
11
+ # Code in this .rb file here in general can be used for RGB-related
12
+ # functionality. A good example for what can be done with this is to
13
+ # convert a HTML colour, such as "slateblue", into its RGB
14
+ # representation.
15
+ # =========================================================================== #
16
+ # require 'colours/rgb/rgb.rb'
17
+ # =========================================================================== #
18
+ module Colours
19
+
20
+ class RGB # === Colours::RGB
21
+
22
+ require 'colours/constants/misc.rb' # For methods such as left?.
23
+ # require 'colours/html_colours/hash_html_colours.rb'
24
+ # require 'colours/html_colours/is_this_html_colour_included.rb'
25
+ # require 'colours/toplevel_methods/random_html_colour.rb'
26
+ # require 'colours/toplevel_methods/random_value.rb'
27
+
28
+ # ========================================================================= #
29
+ # === DEFAULT_VALUES
30
+ # ========================================================================= #
31
+ DEFAULT_VALUES = [255, 0, 0]
32
+
33
+ # ========================================================================= #
34
+ # === DEFAULT_VALUE
35
+ # ========================================================================= #
36
+ DEFAULT_VALUE = 0
37
+
38
+ # =========================================================================== #
39
+ # === initialize
40
+ #
41
+ # Keep in mind that the first argument could be something like:
42
+ #
43
+ # [106, 90, 205]
44
+ #
45
+ # In that case, we need to continue differently.
46
+ # =========================================================================== #
47
+ def initialize(
48
+ original_input = ARGV,
49
+ run_already = true
50
+ )
51
+ reset
52
+ set_commandline_arguments(
53
+ original_input
54
+ )
55
+ run if run_already
56
+ end
57
+
58
+ # =========================================================================== #
59
+ # === set_commandline_arguments
60
+ # =========================================================================== #
61
+ def set_commandline_arguments(i)
62
+ @commandline_arguments = [i].flatten.compact
63
+ end
64
+
65
+ # =========================================================================== #
66
+ # === reset
67
+ # =========================================================================== #
68
+ def reset
69
+ @r, @g, @b = 0, 0, 0 # Use default values for RGB.
70
+ end
71
+
72
+ # ========================================================================= #
73
+ # === b?
74
+ # ========================================================================= #
75
+ def b?
76
+ @b
77
+ end; alias b b? # === b
78
+
79
+ # ========================================================================= #
80
+ # === g?
81
+ # ========================================================================= #
82
+ def g?
83
+ @g
84
+ end; alias g g? # === g
85
+
86
+ # ========================================================================= #
87
+ # === hexstring?
88
+ # ========================================================================= #
89
+ def hexstring?
90
+ @hexstring
91
+ end; alias hexstring hexstring? # === hexstring
92
+
93
+ # ========================================================================= #
94
+ # === r?
95
+ # ========================================================================= #
96
+ def r?
97
+ @r
98
+ end; alias r r? # === r
99
+
100
+ # ========================================================================= #
101
+ # === determine_rgb_values_from_the_commandline_arguments
102
+ # ========================================================================= #
103
+ def determine_rgb_values_from_the_commandline_arguments
104
+ _ = @commandline_arguments
105
+ first = _.first
106
+ if first.is_? Array
107
+ set_r(first[0])
108
+ set_g(first[1])
109
+ set_b(first[2])
110
+ end
111
+ end
112
+
113
+ # ========================================================================= #
114
+ # === rgb
115
+ # ========================================================================= #
116
+ def rgb
117
+ [ @r, @g, @b ]
118
+ end
119
+
120
+ # ========================================================================= #
121
+ # === check_validity_of
122
+ #
123
+ # We check if the input is higher than 255, in which case we give back
124
+ # an ArgumentError.
125
+ # ========================================================================= #
126
+ def check_validity_of(i)
127
+ if i.to_i > 255
128
+ raise ArgumentError,
129
+ 'Error: RGB values can not be higher than 255.'
130
+ end
131
+ end
132
+
133
+ # ========================================================================= #
134
+ # === do_the_conversion
135
+ # ========================================================================= #
136
+ def do_the_conversion
137
+ @hexstring = '#%02x%02x%02x'.upcase % rgb()
138
+ return @hexstring
139
+ end; alias update_hexstring do_the_conversion # === update_hexstring
140
+
141
+ # ========================================================================= #
142
+ # === set_rgb
143
+ # ========================================================================= #
144
+ def set_rgb(r,g,b)
145
+ set_r(r)
146
+ set_g(g)
147
+ set_b(b)
148
+ end
149
+
150
+ # ========================================================================= #
151
+ # === set_r
152
+ # ========================================================================= #
153
+ def set_r(i = DEFAULT_VALUES[0])
154
+ i = i.to_i
155
+ check_validity_of(i)
156
+ @r = i
157
+ end
158
+
159
+ # ========================================================================= #
160
+ # === set_g
161
+ # ========================================================================= #
162
+ def set_g(i = nil)
163
+ i = DEFAULT_VALUE if i.nil?
164
+ i = i.to_i
165
+ check_validity_of(i)
166
+ @g = i
167
+ end
168
+
169
+ # ========================================================================= #
170
+ # === set_b
171
+ # ========================================================================= #
172
+ def set_b(i = nil)
173
+ i = DEFAULT_VALUE if i.nil?
174
+ i = i.to_i
175
+ check_validity_of(i)
176
+ @b = i
177
+ end
178
+
179
+ # ========================================================================= #
180
+ # === lighten
181
+ #
182
+ # This lightens up a colour.
183
+ # RgbToHex.new('#ffffff').lighten # => "#232323"
184
+ # ========================================================================= #
185
+ def lighten
186
+ add(35) # Hardcoded to add +35 to each of R, G and B.
187
+ end
188
+
189
+ # ========================================================================= #
190
+ # === add
191
+ #
192
+ # This method can be used to lighten a R,G,B colour in general. We
193
+ # also use another method for this, though, called .lighten().
194
+ # ========================================================================= #
195
+ def add(i = 1)
196
+ i = i.to_i
197
+ @r += i
198
+ @g += i
199
+ @b += i
200
+ update_hexstring
201
+ end
202
+
203
+ # =========================================================================== #
204
+ # === run
205
+ # =========================================================================== #
206
+ def run
207
+ determine_rgb_values_from_the_commandline_arguments
208
+ do_the_conversion
209
+ end
210
+
211
+ # ========================================================================= #
212
+ # === RgbToHex[]
213
+ #
214
+ # Easier access to the conversion facility.
215
+ #
216
+ # Usage example:
217
+ # RgbToHex[22,33,44] # => "#16212C"
218
+ # ========================================================================= #
219
+ def self.[](r = 255, g = 0, b = 0)
220
+ _ = RgbToHex.new(r,g,b)
221
+ return '#%02x%02x%02x'.upcase % _.rgb
222
+ end
223
+
224
+ end
225
+
226
+ # =========================================================================== #
227
+ # === Colours.convert_this_rgb_value_into_a_html_colour
228
+ #
229
+ # This method will convert a given RGB value (input assumed to be an Array)
230
+ # into the corresponding HTML colour.
231
+ #
232
+ # Note that the first input argument, called `i`, can also be read as
233
+ # R (aka red). So the whole input line becomes "r, g, b", which makes
234
+ # this quite trivial to remember.
235
+ # =========================================================================== #
236
+ def self.convert_this_rgb_value_into_a_html_colour(i, g = nil, b = nil)
237
+ if i.is_a?(Numeric) and g and b
238
+ i = [i, g, b] # Re-compose the given input in this case, as only one Array was provided.
239
+ end
240
+ _ = Colours.hash_html_colours?
241
+ possible_matches = _.select {|key, inner_array|
242
+ (i[0] == inner_array[0]) and
243
+ (i[1] == inner_array[1]) and
244
+ (i[2] == inner_array[2])
245
+ }
246
+ possible_matches.keys.first
247
+ end
248
+
249
+ # =========================================================================== #
250
+ # === Colours.convert_this_html_colour_into_an_array_of_rgb_values
251
+ #
252
+ # This method will take a String as input, a HTML colour such as 'slateblue',
253
+ # and proceed to return an Array containing three entries (R, G, B) as
254
+ # its value.
255
+ #
256
+ # For RGB colours we specify the code like this:
257
+ #
258
+ # 38;2;$R;$G;$B
259
+ #
260
+ # Thus:
261
+ #
262
+ # \e[38;2;R;G;Bm
263
+ #
264
+ # =========================================================================== #
265
+ def self.convert_this_html_colour_into_an_array_of_rgb_values(
266
+ html_colour = :random
267
+ )
268
+ case html_colour
269
+ when :random
270
+ html_colour = return_random_html_colour
271
+ end
272
+ if Colours.include_this_html_colour? html_colour
273
+ pointer = Colours.hash_html_colours?[html_colour.to_s] # <- Must be an input-String.
274
+ [ pointer[0], pointer[1], pointer[2] ] # <- Build the Array here.
275
+ else # else it is not included
276
+ nil
277
+ end
278
+ end; self.instance_eval { alias convert_html_colour_to_rgb_array convert_this_html_colour_into_an_array_of_rgb_values } # === Colours.convert_html_colour_to_rgb_array
279
+
280
+ # =========================================================================== #
281
+ # === Colours.return_random_rgb
282
+ # =========================================================================== #
283
+ def self.return_random_rgb
284
+ [random_value?, random_value?, random_value?]
285
+ end; self.instance_eval { alias return_rgb_as_array return_random_rgb } # === Colours.return_rgb_as_array
286
+
287
+ # =========================================================================== #
288
+ # === return_random_rgb
289
+ # =========================================================================== #
290
+ def return_random_rgb
291
+ Colours.return_random_rgb
292
+ end; alias return_rgb_as_array return_random_rgb # === return_rgb_as_array
293
+
294
+ # =========================================================================== #
295
+ # === rgb_value_as_escape_code_string
296
+ # =========================================================================== #
297
+ def rgb_value_as_escape_code_string(
298
+ array = [
299
+ random_value?,
300
+ random_value?,
301
+ random_value?
302
+ ],
303
+ g = nil,
304
+ b = nil
305
+ )
306
+ end; alias build_this_rgb_string rgb_value_as_escape_code_string # === build_this_rgb_string
307
+ alias rgb_value_as_string rgb_value_as_escape_code_string # === rgb_value_as_string
308
+ alias rgb rgb_value_as_escape_code_string # === rgb
309
+ alias rgb_format rgb_value_as_escape_code_string # === rgb_format
310
+ alias rgb_as_string rgb_value_as_escape_code_string # === rgb_as_string
311
+ alias colour_to_rgb_value rgb_value_as_escape_code_string # === colour_to_rgb_value
312
+
313
+ # =========================================================================== #
314
+ # === convert_this_rgb_value_to_that_hexadecimal_representation
315
+ # =========================================================================== #
316
+ def convert_this_rgb_value_to_that_hexadecimal_representation(
317
+ r, g = nil, b = nil
318
+ )
319
+ Colours.convert_this_rgb_value_to_that_hexadecimal_representation(r, g, b)
320
+ end; alias rgb_to_hex convert_this_rgb_value_to_that_hexadecimal_representation # === rgb_to_hex
321
+ alias to_hex convert_this_rgb_value_to_that_hexadecimal_representation # === to_hex
322
+
323
+ # =========================================================================== #
324
+ # === Colours.random_html_colour_with_this_text
325
+ #
326
+ # The first argument is the text that we wish to display.
327
+ #
328
+ # Usage example:
329
+ #
330
+ # puts Colours.random_html_colour_with_this_text 'foo bar'
331
+ #
332
+ # =========================================================================== #
333
+ def self.random_html_colour_with_this_text(
334
+ use_this_text = ''
335
+ )
336
+ "#{rgb_value_as_escape_code_string}#{use_this_text}#{restore?}"
337
+ end
338
+
339
+ # =========================================================================== #
340
+ # === Colours.rgb_print
341
+ #
342
+ # The first argument to this method should be an Array.
343
+ #
344
+ # We will print here. If you need a newline appended, you have to do
345
+ # so on your own, by appending a \n onto the text variable given to
346
+ # this method - or use Colours.rgb_puts() instead.
347
+ #
348
+ # Specific usage examples:
349
+ # Colours.rgb_print ["100", "247", "63"], 'Hello '
350
+ # Colours.rgb_print ["100", "247", "25"], 'World!'
351
+ # =========================================================================== #
352
+ def self.rgb_print(
353
+ array = %w( 100 247 63 ),
354
+ text = 'Hello world!'
355
+ )
356
+ print "#{rgb_value_as_escape_code_string(array)}#{text}#{REVERT}"
357
+ end
358
+
359
+ # =========================================================================== #
360
+ # === Colours.rgb_puts
361
+ #
362
+ # First argument should be an Array.
363
+ #
364
+ # We will use puts here.
365
+ #
366
+ # Specific usage examples:
367
+ # Colours.rgb_puts ["100", "247", "63"], 'Hello '
368
+ # Colours.rgb_puts ["100", "247", "25"], 'World!'
369
+ # =========================================================================== #
370
+ def self.rgb_puts(
371
+ array = %w( 100 247 63 ),
372
+ text = 'Hello world!'
373
+ )
374
+ rgb_print(array, "#{text}\n")
375
+ end
376
+
377
+ # =========================================================================== #
378
+ # === Colours.return_this_text_in_random_colour
379
+ #
380
+ # Invocation example:
381
+ # puts Colours.return_this_text_in_random_colour('Hello World!')
382
+ # =========================================================================== #
383
+ def self.return_this_text_in_random_colour(
384
+ show_this_text = ''
385
+ )
386
+ use_this_colour = ::Colours.random_colour?
387
+ "#{rgb(use_this_colour)}#{show_this_text}#{restore?}"
388
+ end; self.instance_eval { alias return_this_in_random_colour return_this_text_in_random_colour } # === Colours.return_this_in_random_colour
389
+
390
+ # =========================================================================== #
391
+ # === Colours.write_this_in_random_colour
392
+ #
393
+ # Usage example:
394
+ # Colours.write_this_in_random_colour 'hi there'
395
+ # =========================================================================== #
396
+ def self.write_this_in_random_colour(
397
+ i = ''
398
+ )
399
+ e return_this_text_in_random_colour(i)
400
+ end; self.instance_eval { alias output_in_a_random_colour write_this_in_random_colour } # === Colours.write_this_in_random_colour
401
+
402
+ # =========================================================================== #
403
+ # === Colours.convert_this_rgb_value_to_that_hexadecimal_representation
404
+ #
405
+ # This method will convert RGB values to their hexadecimal (hex)
406
+ # representation.
407
+ #
408
+ # Invocation example:
409
+ #
410
+ # Colours.convert_this_rgb_value_to_that_hexadecimal_representation([240, 248, 255]) # => "F0F8FF"
411
+ # Colours.rgb_to_hex(255,0,0) # => "FF0000"
412
+ # Colours.rgb_to_hex('255255255')
413
+ # Colours.rgb_to_hex(:slateblue)
414
+ #
415
+ # =========================================================================== #
416
+ def self.convert_this_rgb_value_to_that_hexadecimal_representation(
417
+ r, g = nil, b = nil
418
+ )
419
+ hash = Colours.hash_html_colours?
420
+ if r.is_a?(Symbol) and g.nil? and b.nil? and
421
+ is_this_a_html_colour?(r)
422
+ return hash[r.to_s][3]
423
+ end
424
+ if r.is_a?(String) and !r.include?('#') and g.nil? and b.nil?
425
+ # ======================================================================= #
426
+ # In this case assume input such as '255255255'
427
+ # ======================================================================= #
428
+ splitted = r.split(/(...)/).reject(&:empty?)
429
+ r, g, b = splitted
430
+ end
431
+ if r.is_a?(Array) and (r.size > 1) and g.nil? and b.nil?
432
+ # ======================================================================= #
433
+ # In this case the user supplied only a single Array as input.
434
+ # ======================================================================= #
435
+ this_html_colour = Colours.convert_this_rgb_value_into_a_html_colour(r)
436
+ else
437
+ this_html_colour = Colours.convert_this_rgb_value_into_a_html_colour(r, g, b)
438
+ end
439
+ if this_html_colour
440
+ hash[this_html_colour][3]
441
+ else
442
+ nil
443
+ end
444
+ end; self.instance_eval { alias rgb_to_hex convert_this_rgb_value_to_that_hexadecimal_representation } # === Colours.rgb_to_hex
445
+ self.instance_eval { alias to_hex convert_this_rgb_value_to_that_hexadecimal_representation } # === Colours.to_hex
446
+ self.instance_eval { alias return_hexvalue_of_this_colour convert_this_rgb_value_to_that_hexadecimal_representation } # === Colours.return_hexvalue_of_this_colour
447
+
448
+ # =========================================================================== #
449
+ # === Colours.html_colour_to_rgb_value
450
+ #
451
+ # This method will return a String, representing the RGB values.
452
+ #
453
+ # It will, other than that, not make any other modifications; in particular
454
+ # it will NOT append a trailing "m" token.
455
+ #
456
+ # By default the R, G, B values will be separated via a ';' token. If
457
+ # you don't want this then modify it e. g. via: .tr(';',',').
458
+ #
459
+ # Usage examples:
460
+ #
461
+ # Colours.html_colour_to_rgb_value('slateblue') # => "106;90;205"
462
+ # Colours.html_colour_to_rgb_value('crimson') # => "220;20;60"
463
+ # Colours.html_colour_to_rgb(:steelblue) # => "70;130;180"
464
+ #
465
+ # =========================================================================== #
466
+ def self.html_colour_to_rgb_value(
467
+ this_html_colour = 'slateblue'
468
+ )
469
+ _ = Colours.convert_this_html_colour_into_an_array_of_rgb_values(this_html_colour.to_sym)
470
+ return "#{_[0]};#{_[1]};#{_[2]}"
471
+ end; self.instance_eval { alias colour_to_rgb_value html_colour_to_rgb_value } # === Colours.colour_to_rgb_value
472
+ self.instance_eval { alias convert_html_colour_to_rgb_value html_colour_to_rgb_value } # === Colours.convert_html_colour_to_rgb_value
473
+ self.instance_eval { alias html_colour_to_stringified_rgb_values html_colour_to_rgb_value } # === Colours.html_colour_to_stringified_rgb_values
474
+ self.instance_eval { alias html_colour_to_rgb html_colour_to_rgb_value } # === Colours.html_colour_to_rgb
475
+
476
+ # =========================================================================== #
477
+ # === Colours.rgb_value_as_escape_code_string
478
+ #
479
+ # This method will take a R,G,B value and show us a String representation
480
+ # =========================================================================== #
481
+ def self.rgb_value_as_escape_code_string(
482
+ array = [
483
+ random_value?,
484
+ random_value?,
485
+ random_value?
486
+ ],
487
+ g = nil,
488
+ b = nil
489
+ )
490
+ if array.is_a? Symbol
491
+ array = array.to_s
492
+ end
493
+ if array.is_a?(Array) and (array.size == 3)
494
+ r = array[0]
495
+ g = array[1]
496
+ b = array[2]
497
+ elsif array.is_a?(String) and g.nil? and b.nil?
498
+ # ======================================================================= #
499
+ # In this case we will assume a HTML colour. We thus have to
500
+ # determine its rgb value.
501
+ # ======================================================================= #
502
+ if ::Colours.is_this_html_colour_included?(array)
503
+ set_last_colour_used(array)
504
+ r, g, b = Colours.convert_this_html_colour_into_an_array_of_rgb_values(array)
505
+ else
506
+ puts 'The input is not a HTML colour:'
507
+ pp array
508
+ end
509
+ end
510
+ # =========================================================================== #
511
+ # The String that we build up in this method will have the ANSI escape
512
+ # code on the left side.
513
+ # =========================================================================== #
514
+ return "#{left?}#{r};#{g};#{b}m"
515
+ end; self.instance_eval { alias build_this_rgb_string rgb_value_as_escape_code_string } # === Colours.build_this_rgb_string
516
+ self.instance_eval { alias rgb_value_as_string rgb_value_as_escape_code_string } # === Colours.rgb_value_as_string
517
+ self.instance_eval { alias rgb rgb_value_as_escape_code_string } # === Colours.rgb
518
+ self.instance_eval { alias rgb_format rgb_value_as_escape_code_string } # === Colours.rgb_format
519
+ self.instance_eval { alias rgb_as_string rgb_value_as_escape_code_string } # === Colours.rgb_as_string
520
+ self.instance_eval { alias colour_to_rgb_value rgb_value_as_escape_code_string } # === Colours.colour_to_rgb_value
521
+
522
+ end
523
+
524
+ if __FILE__ == $PROGRAM_NAME
525
+ alias e puts
526
+ array = [240, 248, 255]
527
+ # ========================================================================= #
528
+ # === Testing the RGB-functionality of the Colours project next.
529
+ # ========================================================================= #
530
+ e 'Testing the RGB-functionality of the Colours project next.'
531
+ pp Colours.convert_this_html_colour_into_an_array_of_rgb_values
532
+ _ = 'royalblue'; e _+':'
533
+ pp Colours.convert_this_html_colour_into_an_array_of_rgb_values _
534
+ pp '[240, 248, 255] -> '+
535
+ Colours.convert_this_rgb_value_into_a_html_colour(array)
536
+ pp Colours.rgb_value_as_escape_code_string
537
+ pp Colours.colour_to_rgb_value('slateblue')
538
+ pp Colours.colour_to_rgb_value('crimson')
539
+ pp Colours.convert_this_rgb_value_to_that_hexadecimal_representation(array)
540
+ e
541
+ e Colours.rgb(122,56,141)+'Hello world!'
542
+ e Colours.colour_to_rgb_value('slateblue')
543
+ e Colours.rgb('slateblue')
544
+ e 'R;G;B value: '
545
+ pp Colours.colour_to_rgb_value('slateblue')
546
+ e
547
+ end
@@ -0,0 +1,2 @@
1
+ This directory will contain colour-related code for testing the
2
+ colours project programmatically.