colours 0.5.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (142) hide show
  1. checksums.yaml +7 -0
  2. data/LICENCE.md +22 -0
  3. data/README.md +862 -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/colours.gemspec +75 -0
  10. data/doc/COLOUR_CODES_CHART.md +28 -0
  11. data/doc/HOW_TO_PICK_YOUR_OWN_COLOURS.md +29 -0
  12. data/doc/README.gen +845 -0
  13. data/lib/colours/256_colours/support_for_256_colours.rb +180 -0
  14. data/lib/colours/autoalias_e.rb +10 -0
  15. data/lib/colours/autogenerated/README.md +2 -0
  16. data/lib/colours/autogenerated/support_for_256_colours.rb +2235 -0
  17. data/lib/colours/autogenerated/support_for_html_colours.rb +1778 -0
  18. data/lib/colours/autogenerated/toplevel_basic_colour_methods.rb +6366 -0
  19. data/lib/colours/autoinclude.rb +14 -0
  20. data/lib/colours/base/base.rb +23 -0
  21. data/lib/colours/basic_colours/README.md +4 -0
  22. data/lib/colours/basic_colours/basic_colours.rb +279 -0
  23. data/lib/colours/colour_methods/README.md +11 -0
  24. data/lib/colours/colour_methods/default_colour.rb +66 -0
  25. data/lib/colours/colour_methods/sargument.rb +70 -0
  26. data/lib/colours/colour_methods/scomments.rb +105 -0
  27. data/lib/colours/colour_methods/sdir.rb +66 -0
  28. data/lib/colours/colour_methods/sfancy.rb +84 -0
  29. data/lib/colours/colour_methods/sfile.rb +71 -0
  30. data/lib/colours/colour_methods/simportant.rb +92 -0
  31. data/lib/colours/colour_methods/snormal.rb +66 -0
  32. data/lib/colours/colour_methods/ssymlink.rb +102 -0
  33. data/lib/colours/colour_methods/swarn.rb +76 -0
  34. data/lib/colours/colour_table/README.md +3 -0
  35. data/lib/colours/colour_table/colour_table.rb +275 -0
  36. data/lib/colours/colours_e_autoinclude.rb +9 -0
  37. data/lib/colours/commandline/README.md +2 -0
  38. data/lib/colours/commandline/commandline.rb +44 -0
  39. data/lib/colours/commandline/menu.rb +111 -0
  40. data/lib/colours/constants/colour_constants.rb +299 -0
  41. data/lib/colours/constants/file_constants.rb +72 -0
  42. data/lib/colours/constants/hash_simple_colours.rb +146 -0
  43. data/lib/colours/constants/misc.rb +59 -0
  44. data/lib/colours/constants/newline.rb +14 -0
  45. data/lib/colours/constants/registered_colour_methods.rb +53 -0
  46. data/lib/colours/e/README.md +13 -0
  47. data/lib/colours/e/autoinclude.rb +11 -0
  48. data/lib/colours/e/e.rb +35 -0
  49. data/lib/colours/e.rb +5 -0
  50. data/lib/colours/eparse/eparse.rb +77 -0
  51. data/lib/colours/everything/autoinclude.rb +11 -0
  52. data/lib/colours/html_colours/README.md +1 -0
  53. data/lib/colours/html_colours/add_html_colours_onto_the_toplevel_namespace.rb +22 -0
  54. data/lib/colours/html_colours/hash_html_colours.rb +63 -0
  55. data/lib/colours/html_colours/html_colourize.rb +48 -0
  56. data/lib/colours/html_colours/is_this_html_colour_included.rb +64 -0
  57. data/lib/colours/html_colours/misc.rb +186 -0
  58. data/lib/colours/html_colours/show_html_colours.rb +85 -0
  59. data/lib/colours/kde_colour_palette/kde_colour_palette.rb +128 -0
  60. data/lib/colours/map_symbol_to_corresponding_colour/map_symbol_to_corresponding_colour.rb +219 -0
  61. data/lib/colours/module.rb +11 -0
  62. data/lib/colours/project/project_base_directory.rb +22 -0
  63. data/lib/colours/rainbow_colours/README.md +2 -0
  64. data/lib/colours/rainbow_colours/check_for_trollop_being_available_or_exit.rb +26 -0
  65. data/lib/colours/rainbow_colours/constants.rb +30 -0
  66. data/lib/colours/rainbow_colours/do_parse_via_rainbow_colours.rb +164 -0
  67. data/lib/colours/rainbow_colours/paint_detected_mode.rb +20 -0
  68. data/lib/colours/rainbow_colours/print_rainbow_line.rb +68 -0
  69. data/lib/colours/rainbow_colours/println_ani.rb +32 -0
  70. data/lib/colours/rainbow_colours/println_plain.rb +36 -0
  71. data/lib/colours/rainbow_colours/rainbow.rb +38 -0
  72. data/lib/colours/rainbow_colours/report_errors.rb +32 -0
  73. data/lib/colours/rainbow_colours/returnln_plain.rb +63 -0
  74. data/lib/colours/rainbow_colours/set_mode.rb +24 -0
  75. data/lib/colours/requires/require_all_colour_methods.rb +5 -0
  76. data/lib/colours/requires/require_commandline.rb +7 -0
  77. data/lib/colours/requires/require_eparse.rb +11 -0
  78. data/lib/colours/requires/require_rgb.rb +5 -0
  79. data/lib/colours/requires/require_sdir.rb +5 -0
  80. data/lib/colours/requires/require_sfile.rb +5 -0
  81. data/lib/colours/requires/require_the_256_colours_module.rb +16 -0
  82. data/lib/colours/requires/require_the_basic_colours.rb +7 -0
  83. data/lib/colours/requires/require_the_colour_methods.rb +34 -0
  84. data/lib/colours/requires/require_the_colour_table.rb +7 -0
  85. data/lib/colours/requires/require_the_colours_project.rb +52 -0
  86. data/lib/colours/requires/require_the_constants.rb +11 -0
  87. data/lib/colours/requires/require_the_html_colours.rb +11 -0
  88. data/lib/colours/requires/require_the_kde_colour_palette.rb +7 -0
  89. data/lib/colours/requires/require_the_toplevel_methods.rb +42 -0
  90. data/lib/colours/revert/revert.rb +106 -0
  91. data/lib/colours/rgb/rgb.rb +538 -0
  92. data/lib/colours/testing/README.md +2 -0
  93. data/lib/colours/testing/testing.rb +157 -0
  94. data/lib/colours/toplevel_methods/bold.rb +35 -0
  95. data/lib/colours/toplevel_methods/bold_and_italic.rb +36 -0
  96. data/lib/colours/toplevel_methods/cat.rb +39 -0
  97. data/lib/colours/toplevel_methods/clear_screen.rb +18 -0
  98. data/lib/colours/toplevel_methods/cliner.rb +19 -0
  99. data/lib/colours/toplevel_methods/col.rb +56 -0
  100. data/lib/colours/toplevel_methods/e.rb +63 -0
  101. data/lib/colours/toplevel_methods/esystem.rb +19 -0
  102. data/lib/colours/toplevel_methods/fancy_parse.rb +79 -0
  103. data/lib/colours/toplevel_methods/html_colourize.rb +65 -0
  104. data/lib/colours/toplevel_methods/is_on_roebe.rb +16 -0
  105. data/lib/colours/toplevel_methods/italic.rb +104 -0
  106. data/lib/colours/toplevel_methods/make_colour.rb +29 -0
  107. data/lib/colours/toplevel_methods/methods_related_to_html_colours.rb +314 -0
  108. data/lib/colours/toplevel_methods/misc.rb +95 -0
  109. data/lib/colours/toplevel_methods/open_this_file.rb +26 -0
  110. data/lib/colours/toplevel_methods/prefer_this_colour_schemata.rb +80 -0
  111. data/lib/colours/toplevel_methods/random_html_colour.rb +44 -0
  112. data/lib/colours/toplevel_methods/random_value.rb +37 -0
  113. data/lib/colours/toplevel_methods/remove_escape_sequence.rb +107 -0
  114. data/lib/colours/toplevel_methods/show_basic_colour_palette.rb +36 -0
  115. data/lib/colours/toplevel_methods/underline.rb +114 -0
  116. data/lib/colours/toplevel_methods/use_colours.rb +311 -0
  117. data/lib/colours/utility_scripts/README.md +2 -0
  118. data/lib/colours/utility_scripts/autogenerate.rb +291 -0
  119. data/lib/colours/version/version.rb +25 -0
  120. data/lib/colours/yaml/256_colours.yml +277 -0
  121. data/lib/colours/yaml/basic_colours.yml +23 -0
  122. data/lib/colours/yaml/html_colours.yml +835 -0
  123. data/lib/colours/yaml/kde_colour_palette.yml +183 -0
  124. data/lib/colours/yaml/prefer_this_colour_schemata.yml +15 -0
  125. data/lib/colours/yaml/use_these_values_for_the_colour_methods.yml +13 -0
  126. data/lib/colours.rb +5 -0
  127. data/test/test.html +18 -0
  128. data/test/testing_256_colours_support.rb +29 -0
  129. data/test/testing_col.rb +10 -0
  130. data/test/testing_colours.rb +95 -0
  131. data/test/testing_colours_e.rb +13 -0
  132. data/test/testing_eparse.rb +13 -0
  133. data/test/testing_kde_colour_palette.rb +30 -0
  134. data/test/testing_konsole_submodule.rb +226 -0
  135. data/test/testing_map_symbol_to_corresponding_colour.rb +14 -0
  136. data/test/testing_rgb_to_hex.rb +32 -0
  137. data/test/testing_the_basic_colours_of_the_colours_project.rb +58 -0
  138. data/test/testing_the_colour_methods.rb +36 -0
  139. data/test/testing_the_constants_of_the_colours_project.rb +9 -0
  140. data/test/testing_the_html_colours_of_the_colours_project.rb +37 -0
  141. data/test/testing_whether_colours_will_be_used.rb +7 -0
  142. metadata +224 -0
@@ -0,0 +1,107 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'colours/toplevel_methods/remove_escape_sequence.rb'
6
+ # =========================================================================== #
7
+ require 'colours/constants/colour_constants.rb'
8
+
9
+ module Colours
10
+
11
+ # ========================================================================= #
12
+ # === Colours.remove_escape_sequence
13
+ #
14
+ # The method Colours.remove_escape_sequence() will remove all
15
+ # Ansi Escape sequences from a given string.
16
+ # ========================================================================= #
17
+ def self.remove_escape_sequence(i)
18
+ i = i.to_s.dup
19
+ # ======================================================================= #
20
+ # Iterate over the registered ansi-colours next.
21
+ # ======================================================================= #
22
+ ARRAY_REGISTERED_ANSI_COLOURS.each {|entry|
23
+ if i.include? entry
24
+ entry = Regexp.quote(entry)
25
+ i.sub!(/#{entry}/, '')
26
+ end
27
+ # ===================================================================== #
28
+ # Next, check for KDE konsole colours. We must use "" there, not ''.
29
+ # ===================================================================== #
30
+ if i.include?("\e[") and i =~ /\d+m/ # Such as: "\e[38;2;220;20;60m|"
31
+ # =================================================================== #
32
+ # The next regex will (hopefully) remove all escape-characters
33
+ # from the given String.
34
+ # =================================================================== #
35
+ regex_for_html_colours = # Detect entries such as: \e[38;2;106;90;205m
36
+ /(\e\[\d{2};\d{1};\d{3};\d{1,2};\d{3}m)/ # See: https://rubular.com/r/tG3XeOK5NPsfmI
37
+ i.gsub!(regex_for_html_colours, '')
38
+ # =================================================================== #
39
+ # See: https://rubular.com/r/SdS28fAGSxIELn
40
+ # =================================================================== #
41
+ # /(\\e\[\d{1,2};?\d{1,2};?\d{0,3};?\d{0,3};?\d{1,2}m|\\e\[\d{0,2}m|\\e\[K|\\e\[\d{0,2};\d{0,2}m|(\\e\[.+\dm)|\\e\[0;37m)/
42
+ [
43
+ /\e\[\d{1,2};?\d{1,2};?\d{0,3};?\d{0,3};?\d{1,2}m/,
44
+ /\\e\[\d{0,2}m|\\e\[K|\\e\[\d{0,2};\d{0,2}m/,
45
+ /\\e\[.+\dm/,
46
+ /\\e\[0;37m/
47
+ ].each {|regex_to_use|
48
+ i.gsub!(regex_to_use, '')
49
+ }
50
+ end
51
+ }
52
+ return i
53
+ end; self.instance_eval { alias remove remove_escape_sequence } # === Colours.remove
54
+ self.instance_eval { alias remove_escape_sequences remove_escape_sequence } # === Colours.remove_escape_sequences
55
+ self.instance_eval { alias remove_colours remove_escape_sequence } # === Colours.remove_colours
56
+ self.instance_eval { alias escape remove_escape_sequence } # === Colours.escape
57
+
58
+ # ========================================================================= #
59
+ # === Colours.remove_trailing_end_from
60
+ #
61
+ # The second argument to this method can be the escape sequence that you
62
+ # wish to remove.
63
+ #
64
+ # Invocation example:
65
+ #
66
+ # x = Colours.remove_trailing_end_from("\e[38;2;70;130;180m\e[0;37m") # => "\e[38;2;70;130;180m"
67
+ #
68
+ # ========================================================================= #
69
+ def self.remove_trailing_end_from(
70
+ i,
71
+ remove_this_escape_sequence = Colours.revert?
72
+ )
73
+ quoted = Regexp.quote(remove_this_escape_sequence)
74
+ # ======================================================================= #
75
+ # Anchor it at the end via $.
76
+ # ======================================================================= #
77
+ return i.sub(
78
+ /#{quoted}$/, ''
79
+ )
80
+ end; self.instance_eval { alias remove_trailing_escape_part remove_trailing_end_from } # === Colours.remove_trailing_escape_part
81
+ self.instance_eval { alias remove_trailing_ansii_escape_code remove_trailing_end_from } # === Colours.remove_trailing_ansii_escape_code
82
+ self.instance_eval { alias remove_trailing_ANSII_escape_code remove_trailing_end_from } # === Colours.remove_trailing_ANSII_escape_code
83
+ self.instance_eval { alias remove_trailing_escape_code remove_trailing_end_from } # === Colours.remove_trailing_escape_code
84
+
85
+ end
86
+
87
+ if __FILE__ == $PROGRAM_NAME
88
+ alias e puts
89
+ begin
90
+ require 'colours/autoinclude'
91
+ rescue LoadError; e 'the colours gem is not available.'; end
92
+ include Colours
93
+ e
94
+ e 'Next testing an escape sequence (which will be shown via pp only):'
95
+ e
96
+ x = "\e[01m\e[Kcc1:\e[m\e[K \e[01;35m\e[Kwarning: \e[m\e[K-Wabi won't warn about anything [\e[01;35m\e[K-Wabi\e[m\e[K]
97
+
98
+ A\e[38;2;220;20;60m|AGCTT"
99
+ pp x
100
+ e
101
+ x = Colours.remove_escape_sequence(x)
102
+ e
103
+ pp x
104
+ e x
105
+ pp Colours.remove_escape_sequences(Colours.slateblue('Hello world!')) # => "\e[38;2;106;90;205mHello world!"
106
+ p Colours.slateblue('Hello world!') # => "\e[38;2;106;90;205mHello world!\e[0;37m"
107
+ end
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal = true
4
+ # =========================================================================== #
5
+ # require 'colours/toplevel_methods/show_basic_colour_palette.rb'
6
+ # =========================================================================== #
7
+ require 'colours/constants/hash_simple_colours.rb'
8
+ require 'colours/toplevel_methods/cliner.rb'
9
+ require 'colours/toplevel_methods/e.rb'
10
+ require 'colours/toplevel_methods/make_colour.rb'
11
+
12
+ module Colours
13
+
14
+ # ========================================================================= #
15
+ # === Colours.show_basic_colour_palette
16
+ #
17
+ # This will show a colour palette on the commandline.
18
+ # ========================================================================= #
19
+ def self.show_basic_colour_palette
20
+ e
21
+ MAIN_COLOURS.reject {|e| e == :black }.each { |entry|
22
+ make_colour(entry) # make_colour() is defined in this file here.
23
+ }
24
+ cliner
25
+ SECONDARY_COLOURS.each { |entry|
26
+ make_colour(entry)
27
+ }
28
+ e
29
+ end; self.instance_eval { alias show_palette show_basic_colour_palette } # === Colours.show_palette
30
+ self.instance_eval { alias show_colour_palette show_basic_colour_palette } # === Colours.show_colour_palette
31
+
32
+ end
33
+
34
+ if __FILE__ == $PROGRAM_NAME
35
+ Colours.show_basic_colour_palette
36
+ end # show_basic_colour_palette
@@ -0,0 +1,114 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # This file will handline underline-functionality in a terminal. It
6
+ # supports basic colours and the HTML colours.
7
+ # =========================================================================== #
8
+ # require 'colours/toplevel_methods/underline.rb'
9
+ # Colours.return_underline
10
+ # =========================================================================== #
11
+ require 'colours/revert/revert.rb'
12
+ require 'colours/toplevel_methods/e.rb'
13
+ require 'colours/rgb/rgb.rb'
14
+
15
+ module Colours
16
+
17
+ # ========================================================================= #
18
+ # === UNDERLINE_CODE
19
+ #
20
+ # To quickly test the underline-functionality, you can try:
21
+ #
22
+ # echo -e "\e[4mone two three\e[23m"
23
+ #
24
+ # ========================================================================= #
25
+ UNDERLINE_CODE = '4'
26
+
27
+ # ========================================================================= #
28
+ # === Colours.return_underline
29
+ #
30
+ # Usage example:
31
+ #
32
+ # puts ' ok | '+Colours.return_underline('Hello world!')+' | ok'
33
+ # puts ' ok | '+Colours.return_underline('Hello world!') { :slateblue }+' | ok'
34
+ #
35
+ # ========================================================================= #
36
+ def self.return_underline(
37
+ show_this_text = 'This must be underline.',
38
+ make_newline = false
39
+ )
40
+ # ===================================================================== #
41
+ # Build up our main string that codes for underline.
42
+ # ===================================================================== #
43
+ result = "\x1b".dup
44
+ result << '['
45
+ result << UNDERLINE_CODE
46
+ if block_given?
47
+ # ===================================================================== #
48
+ # Right now we assume that this must be a colour.
49
+ # ===================================================================== #
50
+ result << ";38;2;"
51
+ result << colour_to_rgb_value(yield)
52
+ end
53
+ result << 'm'
54
+ if make_newline
55
+ show_this_text = "#{show_this_text}\n"
56
+ end
57
+ result << show_this_text
58
+ result << REVERT
59
+ result
60
+ end; self.instance_eval { alias string_underline return_underline } # === Colours.string_underline
61
+
62
+ # ========================================================================= #
63
+ # === Colours.underline
64
+ #
65
+ # This method will "puts" the result of applying underline to a string,
66
+ # on the console/terminal. If you wish to do the output on your own
67
+ # then you have to use the method Colours.return_underline or its
68
+ # alias called Colours.string_underline.
69
+ #
70
+ # To test this, try:
71
+ # Colours.underline('Hello world!')
72
+ # ========================================================================= #
73
+ def self.underline(
74
+ i = '',
75
+ make_newline = false,
76
+ &block
77
+ )
78
+ e return_underline(i, make_newline, &block)
79
+ end
80
+
81
+ # ========================================================================= #
82
+ # === underline
83
+ # ========================================================================= #
84
+ def underline(
85
+ i = '',
86
+ make_newline = false
87
+ )
88
+ Colours.underline(i, make_newline)
89
+ end
90
+
91
+ end
92
+
93
+ if __FILE__ == $PROGRAM_NAME
94
+ if ARGV.empty?
95
+ puts Colours.underline('Hello world!')
96
+ puts 'Hello world!'
97
+ # ======================================================================= #
98
+ # And then run some more tests:
99
+ # ======================================================================= #
100
+ require 'colours/toplevel_methods/use_colours.rb'
101
+ Colours.enable_html_colours
102
+ e Colours.palegreen('in palegreen:')
103
+ print ' '; print Colours.underline(txt) { :palegreen }
104
+ e Colours.slateblue('in slateblue:')
105
+ print ' '; print Colours.underline(txt) { :slateblue }
106
+ e Colours.orange('in orange:')
107
+ print ' '; print Colours.underline(txt) { :orange }
108
+ e Colours.crimson('in crimson:')
109
+ print ' '; print Colours.underline(txt) { :crimson }
110
+ else
111
+ puts Colours.underline(ARGV.join(' ').strip)
112
+ puts Colours.underline(ARGV.join(' ').strip) { :crimson }
113
+ end
114
+ end # underline one TWO three
@@ -0,0 +1,311 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'colours/toplevel_methods/use_colours.rb'
6
+ # =========================================================================== #
7
+ module Colours
8
+
9
+ # ========================================================================= #
10
+ # === @last_colour_used
11
+ #
12
+ # This instance variable keeps track what the last colour used was.
13
+ # ========================================================================= #
14
+ @last_colour_used = nil
15
+
16
+ # ========================================================================= #
17
+ # === @use_colours
18
+ #
19
+ # Whether we will use colours or whether we will not. This can be
20
+ # used to globally disable colours in every project using the
21
+ # Colours gem.
22
+ # ========================================================================= #
23
+ @use_colours = true
24
+
25
+ # ========================================================================= #
26
+ # === @use_html_colours
27
+ #
28
+ # This is a separate variable so that we can selectively disable or
29
+ # enable the colours for the Konsole submodule. Some terminals do
30
+ # not respond nicely to the R,G,B values that the Konsole submodule
31
+ # may require.
32
+ # ========================================================================= #
33
+ @use_html_colours = true
34
+
35
+ # ========================================================================= #
36
+ # === Colours.use_colours?
37
+ #
38
+ # Use this method to find out whether we wish to use colours or
39
+ # whether we do not.
40
+ # ========================================================================= #
41
+ def self.use_colours?
42
+ @use_colours
43
+ end
44
+
45
+ # ========================================================================= #
46
+ # === Colours.enable_html_colours
47
+ #
48
+ # Use this method to specifically enable konsole-colours.
49
+ # ========================================================================= #
50
+ def self.enable_html_colours
51
+ @use_html_colours = true
52
+ end; self.instance_eval { alias enable_konsole_colours enable_html_colours } # === Colours.enable_konsole_colours
53
+
54
+ # ========================================================================= #
55
+ # === Colours.disable_konsole_colours
56
+ #
57
+ # Disable the KDE-Konsole colours.
58
+ # ========================================================================= #
59
+ def self.disable_konsole_colours
60
+ @use_html_colours = false
61
+ end
62
+
63
+ # ========================================================================= #
64
+ # === Colours.use_html_colours?
65
+ #
66
+ # Query whether we will use the HTML colours or whether we will not.
67
+ # ========================================================================= #
68
+ def self.use_html_colours?
69
+ @use_html_colours
70
+ end; self.instance_eval { alias use_konsole? use_html_colours? } # === Colours.use_konsole?
71
+ self.instance_eval { alias use_konsole_colours? use_html_colours? } # === Colours.use_konsole_colours??
72
+
73
+ # ========================================================================= #
74
+ # === Colours.disable_colours
75
+ #
76
+ # This method can be used to disable the colours on the Colours
77
+ # namespace.
78
+ # ========================================================================= #
79
+ def self.disable_colours(
80
+ be_verbose = false
81
+ )
82
+ puts 'Disabling colours next.' if be_verbose
83
+ @use_colours = false
84
+ end; self.instance_eval { alias disable disable_colours } # === Colours.disable
85
+
86
+ # ========================================================================= #
87
+ # === Colours.enable_colours
88
+ #
89
+ # Use this method to enable colours for the whole Colours namespace.
90
+ # ========================================================================= #
91
+ def self.enable_colours(
92
+ be_verbose = false
93
+ )
94
+ puts 'Enabling colours next.' if be_verbose
95
+ @use_colours = true # Defined below.
96
+ end; self.instance_eval { alias enable enable_colours } # === Colours.enable
97
+
98
+ # ========================================================================= #
99
+ # === Colours.use_colours=
100
+ #
101
+ # Determine whether we will use colours or whether we will not.
102
+ #
103
+ # The first input argument to this method should be a Bool, such
104
+ # as true or false.
105
+ # ========================================================================= #
106
+ def self.use_colours=(
107
+ new_value = true
108
+ )
109
+ @use_colours = new_value
110
+ end; self.instance_eval { alias set_use_colours use_colours= } # === Colours.set_use_colours
111
+
112
+ # ========================================================================= #
113
+ # === use_colours?
114
+ #
115
+ # Delegate towards the class-method here. Unsure whether this method
116
+ # is really needed, but let's keep it for now. After all we can
117
+ # use "include Colours" to add that method.
118
+ # ========================================================================= #
119
+ def use_colours?
120
+ Colours.use_colours?
121
+ end
122
+
123
+ # ========================================================================= #
124
+ # === Colours.report_whether_colours_will_be_used
125
+ # ========================================================================= #
126
+ def self.report_whether_colours_will_be_used
127
+ if @use_colours
128
+ puts 'Yes, colours will be used.'
129
+ else
130
+ puts 'Colours are currently disabled.'
131
+ end
132
+ end
133
+
134
+ # ========================================================================= #
135
+ # === last_colour_used?
136
+ #
137
+ # Tell us which colour was used last.
138
+ # ========================================================================= #
139
+ def last_colour_used?
140
+ @last_colour_used.to_s # Always required a string.
141
+ end
142
+
143
+ # ========================================================================= #
144
+ # === Colours.set_last_colour_used
145
+ # ========================================================================= #
146
+ def self.set_last_colour_used(i)
147
+ @last_colour_used = i
148
+ end
149
+
150
+ # =========================================================================== #
151
+ # This file includes a standalone Colour class, as part of the
152
+ # Colours namespace.
153
+ # =========================================================================== #
154
+ class Colour # === Colours::Colour
155
+
156
+ # ========================================================================= #
157
+ # === initialize
158
+ # ========================================================================= #
159
+ def initialize(
160
+ optional_input = nil
161
+ )
162
+ reset
163
+ set_input(optional_input) if optional_input
164
+ end
165
+
166
+ # ========================================================================= #
167
+ # === set_r
168
+ # ========================================================================= #
169
+ def set_r(i = nil)
170
+ @r = i
171
+ end
172
+
173
+ # ========================================================================= #
174
+ # === set_g
175
+ # ========================================================================= #
176
+ def set_g(i = nil)
177
+ @g = i
178
+ end
179
+
180
+ # ========================================================================= #
181
+ # === set_b
182
+ # ========================================================================= #
183
+ def set_b(i = nil)
184
+ @b = i
185
+ end
186
+
187
+ # ========================================================================= #
188
+ # === random_colour?
189
+ # ========================================================================= #
190
+ def random_colour?(
191
+ optional_text = nil
192
+ )
193
+ if optional_text
194
+ write_this_in_random_colour(optional_text)
195
+ else
196
+ ::Colours.random_colour?
197
+ end
198
+ end
199
+
200
+ # ========================================================================= #
201
+ # === set_rgb
202
+ # ========================================================================= #
203
+ def set_rgb(r,g,b)
204
+ set_r(r)
205
+ set_g(g)
206
+ set_b(b)
207
+ end
208
+
209
+ # ========================================================================= #
210
+ # === set_input
211
+ # ========================================================================= #
212
+ def set_input(i = nil)
213
+ @input = i
214
+ end
215
+
216
+ # ========================================================================= #
217
+ # === reset
218
+ # ========================================================================= #
219
+ def reset
220
+ set_r
221
+ set_g
222
+ set_b
223
+ end
224
+
225
+ # ========================================================================= #
226
+ # === r?
227
+ # ========================================================================= #
228
+ def r?
229
+ @r
230
+ end
231
+
232
+ # ========================================================================= #
233
+ # === g?
234
+ # ========================================================================= #
235
+ def g?
236
+ @g
237
+ end
238
+
239
+ # ========================================================================= #
240
+ # === b?
241
+ # ========================================================================= #
242
+ def b?
243
+ @b
244
+ end
245
+
246
+ # ========================================================================= #
247
+ # === output_this_string
248
+ # ========================================================================= #
249
+ def output_this_string(
250
+ i = DEFAULT_TEXT+N,
251
+ r = r?,
252
+ g = g?,
253
+ b = b?
254
+ )
255
+ result = return_this_string(i,r,g,b)
256
+ e result
257
+ end; alias output_this output_this_string # === output_this
258
+ alias output output_this_string # === output
259
+ alias write_this_in_random_colour output_this_string # === write_this_in_random_colour
260
+
261
+ # ========================================================================= #
262
+ # === return_this_string
263
+ # ========================================================================= #
264
+ def return_this_string(
265
+ i = DEFAULT_TEXT+N,
266
+ r = r?,
267
+ g = g?,
268
+ b = b?
269
+ )
270
+ i = DEFAULT_TEXT if i == :default
271
+ i = i.join(' ') if i.is_a? Array
272
+ i = i.to_s.dup
273
+ i = build_this_rgb_string(r, g, b)+i
274
+ return i
275
+ end
276
+
277
+ # ========================================================================= #
278
+ # === build_this_rgb_string
279
+ # ========================================================================= #
280
+ def build_this_rgb_string(r, g, b)
281
+ Colours.build_this_rgb_string(r,g,b)
282
+ end
283
+
284
+ # ========================================================================= #
285
+ # === random_colour
286
+ #
287
+ # Return a random colour here.
288
+ # ========================================================================= #
289
+ def random_colour(this_string_to_display = 'test')
290
+ return_this_string(
291
+ this_string_to_display, random_value, random_value, random_value
292
+ )
293
+ end; alias return_random_colour random_colour # === return_random_colour
294
+
295
+ # ========================================================================= #
296
+ # === seed_rgb_values
297
+ #
298
+ # Use this method to randomly obtain R,G,B values.
299
+ # ========================================================================= #
300
+ def seed_rgb_values
301
+ set_rgb(random_value, random_value, random_value)
302
+ end
303
+
304
+ # ========================================================================= #
305
+ # === random_value
306
+ # ========================================================================= #
307
+ def random_value
308
+ rand(255)
309
+ end
310
+
311
+ end; end
@@ -0,0 +1,2 @@
1
+ This directory will contain code that is mostly "supportive" of the
2
+ Colours project, but normally won't be needed for most users.