colours 0.8.12

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.
Files changed (143) hide show
  1. checksums.yaml +7 -0
  2. data/LICENCE.md +22 -0
  3. data/README.md +1152 -0
  4. data/bin/colours +7 -0
  5. data/bin/egreen +7 -0
  6. data/bin/fancy_parse +7 -0
  7. data/bin/html_colour_to_hex_value +7 -0
  8. data/bin/html_colourize +7 -0
  9. data/bin/orange +7 -0
  10. data/bin/print_rainbow_line +7 -0
  11. data/bin/rainbow_colours +7 -0
  12. data/bin/remove_ansii_escape_sequences +7 -0
  13. data/bin/steelblue +7 -0
  14. data/colours.gemspec +74 -0
  15. data/doc/COLOUR_CODES_CHART.md +27 -0
  16. data/doc/HOW_TO_PICK_YOUR_OWN_COLOURS.md +28 -0
  17. data/doc/README.gen +1105 -0
  18. data/doc/todo/todo.md +25 -0
  19. data/lib/colours/256_colours/support_for_256_colours.rb +196 -0
  20. data/lib/colours/autoalias_e.rb +10 -0
  21. data/lib/colours/autogenerated/README.md +2 -0
  22. data/lib/colours/autogenerated/support_for_256_colours.rb +2235 -0
  23. data/lib/colours/autogenerated/support_for_html_colours.rb +1778 -0
  24. data/lib/colours/autogenerated/toplevel_basic_colour_methods.rb +7001 -0
  25. data/lib/colours/autoinclude.rb +14 -0
  26. data/lib/colours/base/base.rb +29 -0
  27. data/lib/colours/basic_colours/README.md +4 -0
  28. data/lib/colours/basic_colours/basic_colours.rb +334 -0
  29. data/lib/colours/class/colours.rb +537 -0
  30. data/lib/colours/colour_methods/README.md +11 -0
  31. data/lib/colours/colour_methods/colour_methods.rb +685 -0
  32. data/lib/colours/colour_table/README.md +2 -0
  33. data/lib/colours/colour_table/colour_table.rb +282 -0
  34. data/lib/colours/colours_e_autoinclude.rb +9 -0
  35. data/lib/colours/commandline/README.md +2 -0
  36. data/lib/colours/commandline/commandline.rb +58 -0
  37. data/lib/colours/commandline/menu.rb +122 -0
  38. data/lib/colours/constants/constants.rb +9 -0
  39. data/lib/colours/constants/escape.rb +22 -0
  40. data/lib/colours/constants/file_constants.rb +73 -0
  41. data/lib/colours/constants/hash_ansi_colours.rb +39 -0
  42. data/lib/colours/constants/hash_simple_colours.rb +148 -0
  43. data/lib/colours/constants/misc.rb +361 -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 +114 -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/html_colours.rb +424 -0
  55. data/lib/colours/kde_colour_palette/kde_colour_palette.rb +132 -0
  56. data/lib/colours/map_symbol_to_corresponding_colour/map_symbol_to_corresponding_colour.rb +224 -0
  57. data/lib/colours/module.rb +11 -0
  58. data/lib/colours/project/project.rb +22 -0
  59. data/lib/colours/rainbow_colours/README.md +2 -0
  60. data/lib/colours/rainbow_colours/check_for_trollop_being_available_or_exit.rb +26 -0
  61. data/lib/colours/rainbow_colours/constants.rb +30 -0
  62. data/lib/colours/rainbow_colours/do_parse_via_rainbow_colours.rb +164 -0
  63. data/lib/colours/rainbow_colours/paint_detected_mode.rb +20 -0
  64. data/lib/colours/rainbow_colours/print_rainbow_line.rb +68 -0
  65. data/lib/colours/rainbow_colours/println_ani.rb +32 -0
  66. data/lib/colours/rainbow_colours/println_plain.rb +36 -0
  67. data/lib/colours/rainbow_colours/rainbow.rb +38 -0
  68. data/lib/colours/rainbow_colours/report_errors.rb +32 -0
  69. data/lib/colours/rainbow_colours/returnln_plain.rb +63 -0
  70. data/lib/colours/rainbow_colours/set_mode.rb +24 -0
  71. data/lib/colours/requires/require_autogenerated_colour_methods.rb +5 -0
  72. data/lib/colours/requires/require_commandline.rb +7 -0
  73. data/lib/colours/requires/require_eparse.rb +11 -0
  74. data/lib/colours/requires/require_rgb.rb +5 -0
  75. data/lib/colours/requires/require_the_256_colours_module.rb +16 -0
  76. data/lib/colours/requires/require_the_basic_colours.rb +7 -0
  77. data/lib/colours/requires/require_the_colour_methods.rb +34 -0
  78. data/lib/colours/requires/require_the_colour_table.rb +7 -0
  79. data/lib/colours/requires/require_the_constants.rb +5 -0
  80. data/lib/colours/requires/require_the_html_colours.rb +11 -0
  81. data/lib/colours/requires/require_the_kde_colour_palette.rb +7 -0
  82. data/lib/colours/requires/require_the_project.rb +53 -0
  83. data/lib/colours/requires/require_the_toplevel_methods.rb +42 -0
  84. data/lib/colours/requires/require_yaml.rb +9 -0
  85. data/lib/colours/rgb/rgb.rb +550 -0
  86. data/lib/colours/testing/README.md +2 -0
  87. data/lib/colours/testing/testing.rb +168 -0
  88. data/lib/colours/toplevel_methods/autogenerate.rb +310 -0
  89. data/lib/colours/toplevel_methods/bold.rb +41 -0
  90. data/lib/colours/toplevel_methods/bold_and_italic.rb +38 -0
  91. data/lib/colours/toplevel_methods/cat.rb +39 -0
  92. data/lib/colours/toplevel_methods/clear_screen.rb +18 -0
  93. data/lib/colours/toplevel_methods/cliner.rb +17 -0
  94. data/lib/colours/toplevel_methods/col.rb +54 -0
  95. data/lib/colours/toplevel_methods/e.rb +69 -0
  96. data/lib/colours/toplevel_methods/esystem.rb +19 -0
  97. data/lib/colours/toplevel_methods/html_colour_to_hex_value.rb +41 -0
  98. data/lib/colours/toplevel_methods/html_colourize.rb +69 -0
  99. data/lib/colours/toplevel_methods/is_on_roebe.rb +16 -0
  100. data/lib/colours/toplevel_methods/italic.rb +110 -0
  101. data/lib/colours/toplevel_methods/make_colour.rb +28 -0
  102. data/lib/colours/toplevel_methods/methods_related_to_html_colours.rb +336 -0
  103. data/lib/colours/toplevel_methods/misc.rb +226 -0
  104. data/lib/colours/toplevel_methods/open_this_file.rb +26 -0
  105. data/lib/colours/toplevel_methods/prefer_this_colour_schemata.rb +88 -0
  106. data/lib/colours/toplevel_methods/random_value.rb +37 -0
  107. data/lib/colours/toplevel_methods/remove_escape_sequence.rb +112 -0
  108. data/lib/colours/toplevel_methods/revert.rb +104 -0
  109. data/lib/colours/toplevel_methods/set_last_colour_used.rb +32 -0
  110. data/lib/colours/toplevel_methods/shell_file_containing_the_html_colours.sh +148 -0
  111. data/lib/colours/toplevel_methods/show_basic_colour_palette.rb +36 -0
  112. data/lib/colours/toplevel_methods/underline.rb +130 -0
  113. data/lib/colours/toplevel_methods/use_colours.rb +290 -0
  114. data/lib/colours/version/version.rb +25 -0
  115. data/lib/colours/yaml/256_colours.yml +279 -0
  116. data/lib/colours/yaml/basic_colours.yml +25 -0
  117. data/lib/colours/yaml/html_colours.yml +837 -0
  118. data/lib/colours/yaml/kde_colour_palette.yml +183 -0
  119. data/lib/colours/yaml/prefer_this_colour_schemata.yml +17 -0
  120. data/lib/colours/yaml/use_these_values_for_the_colour_methods.yml +15 -0
  121. data/lib/colours.rb +1 -0
  122. data/test/test.html +18 -0
  123. data/test/testing_256_colours_support.rb +29 -0
  124. data/test/testing_bold_italic_underline.rb +26 -0
  125. data/test/testing_class_colours.rb +46 -0
  126. data/test/testing_col.rb +10 -0
  127. data/test/testing_colours.rb +96 -0
  128. data/test/testing_colours_e.rb +13 -0
  129. data/test/testing_eparse.rb +13 -0
  130. data/test/testing_italic.rb +28 -0
  131. data/test/testing_kde_colour_palette.rb +30 -0
  132. data/test/testing_konsole_submodule.rb +226 -0
  133. data/test/testing_map_symbol_to_corresponding_colour.rb +14 -0
  134. data/test/testing_replace_number_words_with_the_corresponding_html_colour.rb +39 -0
  135. data/test/testing_rgb_to_hex.rb +32 -0
  136. data/test/testing_the_basic_colours_of_the_colours_project.rb +62 -0
  137. data/test/testing_the_colour_methods.rb +36 -0
  138. data/test/testing_the_constants_of_the_colours_project.rb +9 -0
  139. data/test/testing_the_ecomment_method.rb +11 -0
  140. data/test/testing_the_html_colours_of_the_colours_project.rb +37 -0
  141. data/test/testing_the_regex_for_capturing_the_commandline_coloured_content.rb +112 -0
  142. data/test/testing_whether_colours_will_be_used.rb +7 -0
  143. metadata +225 -0
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'colours/toplevel_methods/random_value.rb'
6
+ # =========================================================================== #
7
+ module Colours
8
+
9
+ # ========================================================================= #
10
+ # === Colours.random_value?
11
+ #
12
+ # We will obtain a random value between 0 and 255, hence why we will
13
+ # use rand(256).
14
+ # ========================================================================= #
15
+ def self.random_value?
16
+ rand(256)
17
+ end; self.instance_eval { alias random_value random_value? } # === Colours.random_value
18
+ self.instance_eval { alias rvalue random_value? } # === Colours.rvalue
19
+ self.instance_eval { alias r? random_value? } # === Colours.r?
20
+ self.instance_eval { alias g? random_value? } # === Colours.g?
21
+ self.instance_eval { alias b? random_value? } # === Colours.b?
22
+
23
+ # ========================================================================= #
24
+ # === random_value
25
+ #
26
+ # We will obtain a random value between 0 and 255, hence why we will
27
+ # use rand(256).
28
+ # ========================================================================= #
29
+ def random_value?
30
+ Colours.random_value?
31
+ end; alias rvalue random_value? # === rvalue
32
+ alias random_value random_value? # === random_value
33
+ alias r? random_value? # === r?
34
+ alias g? random_value? # === g?
35
+ alias b? random_value? # === b?
36
+
37
+ end
@@ -0,0 +1,112 @@
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
+ # Colours.remove_escape_sequence
7
+ # =========================================================================== #
8
+ module Colours
9
+
10
+ require 'colours/constants/misc.rb'
11
+
12
+ # ========================================================================= #
13
+ # === Colours.remove_escape_sequence
14
+ #
15
+ # The method Colours.remove_escape_sequence() will remove all Ansi
16
+ # Escape sequences from a given string.
17
+ # ========================================================================= #
18
+ def self.remove_escape_sequence(i = ARGV)
19
+ if i.is_a? Array
20
+ i = i.join("\n")
21
+ end
22
+ i = i.to_s.dup
23
+ # ======================================================================= #
24
+ # Iterate over the registered ansi-colours next.
25
+ # ======================================================================= #
26
+ ARRAY_REGISTERED_ANSI_COLOURS.each {|entry|
27
+ if i.include? entry
28
+ entry = Regexp.quote(entry)
29
+ i.sub!(/#{entry}/, '')
30
+ end
31
+ # ===================================================================== #
32
+ # Next, check for KDE konsole colours. We must use "" there, not ''.
33
+ # ===================================================================== #
34
+ if i.include?("\e[") and i =~ /\d+m/ # Such as: "\e[38;2;220;20;60m|"
35
+ # =================================================================== #
36
+ # The next regex will (hopefully) remove all escape-characters
37
+ # from the given String.
38
+ # =================================================================== #
39
+ regex_for_html_colours = # Detect entries such as: \e[38;2;106;90;205m
40
+ /(\e\[\d{2};\d{1};\d{3};\d{1,2};\d{3}m)/ # See: https://rubular.com/r/tG3XeOK5NPsfmI
41
+ i.gsub!(regex_for_html_colours, '')
42
+ # =================================================================== #
43
+ # See: https://rubular.com/r/SdS28fAGSxIELn
44
+ # =================================================================== #
45
+ # /(\\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)/
46
+ [
47
+ /\e\[\d{1,2};?\d{1,2};?\d{0,3};?\d{0,3};?\d{1,2}m/,
48
+ /\\e\[\d{0,2}m|\\e\[K|\\e\[\d{0,2};\d{0,2}m/,
49
+ /\\e\[.+\dm/,
50
+ /\\e\[0;37m/
51
+ ].each {|regex_to_use|
52
+ i.gsub!(regex_to_use, '')
53
+ }
54
+ end
55
+ }
56
+ return i
57
+ end; self.instance_eval { alias remove remove_escape_sequence } # === Colours.remove
58
+ self.instance_eval { alias remove_escape_sequences remove_escape_sequence } # === Colours.remove_escape_sequences
59
+ self.instance_eval { alias remove_colours remove_escape_sequence } # === Colours.remove_colours
60
+ self.instance_eval { alias escape remove_escape_sequence } # === Colours.escape
61
+
62
+ # ========================================================================= #
63
+ # === Colours.remove_trailing_end_from
64
+ #
65
+ # The second argument to this method can be the escape sequence that you
66
+ # wish to remove.
67
+ #
68
+ # Invocation example:
69
+ #
70
+ # x = Colours.remove_trailing_end_from("\e[38;2;70;130;180m\e[0;37m") # => "\e[38;2;70;130;180m"
71
+ #
72
+ # ========================================================================= #
73
+ def self.remove_trailing_end_from(
74
+ i,
75
+ remove_this_escape_sequence = revert?
76
+ )
77
+ quoted = Regexp.quote(remove_this_escape_sequence)
78
+ # ======================================================================= #
79
+ # Anchor it at the end via $.
80
+ # ======================================================================= #
81
+ return i.sub(
82
+ /#{quoted}$/, ''
83
+ )
84
+ end; self.instance_eval { alias remove_trailing_escape_part remove_trailing_end_from } # === Colours.remove_trailing_escape_part
85
+ self.instance_eval { alias remove_trailing_ansii_escape_code remove_trailing_end_from } # === Colours.remove_trailing_ansii_escape_code
86
+ self.instance_eval { alias remove_trailing_ANSII_escape_code remove_trailing_end_from } # === Colours.remove_trailing_ANSII_escape_code
87
+ self.instance_eval { alias remove_trailing_escape_code remove_trailing_end_from } # === Colours.remove_trailing_escape_code
88
+ self.instance_eval { alias remove_trailing_code remove_trailing_end_from } # === Colours.remove_trailing_code
89
+
90
+ end
91
+
92
+ if __FILE__ == $PROGRAM_NAME
93
+ alias e puts
94
+ begin
95
+ require 'colours/autoinclude'
96
+ rescue LoadError; e 'the colours gem is not available.'; end
97
+ include Colours
98
+ e
99
+ e 'Next testing an escape sequence (which will be shown via pp only):'
100
+ e
101
+ 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]
102
+
103
+ A\e[38;2;220;20;60m|AGCTT"
104
+ pp x
105
+ e
106
+ x = Colours.remove_escape_sequence(x)
107
+ e
108
+ pp x
109
+ e x
110
+ pp Colours.remove_escape_sequences(Colours.slateblue('Hello world!')) # => "\e[38;2;106;90;205mHello world!"
111
+ p Colours.slateblue('Hello world!') # => "\e[38;2;106;90;205mHello world!\e[0;37m"
112
+ end
@@ -0,0 +1,104 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal = true
4
+ # =========================================================================== #
5
+ # require 'colours/toplevel_methods/revert.rb'
6
+ # =========================================================================== #
7
+ module Colours
8
+
9
+ require 'colours/constants/escape.rb'
10
+
11
+ # ========================================================================= #
12
+ # === Colours::COLOUR_NC
13
+ #
14
+ # Note that this will actually reset all attributes.
15
+ #
16
+ # The "\e[0m" sequence removes all attributes, including formatting
17
+ # and colours. It may be useful to add it to the end of each colour
18
+ # text - and this is what the Colours project is essentially doing.
19
+ #
20
+ # An alternative may be to assign REVERT to WHITE, but this seems
21
+ # to be incorrect according to the specification.
22
+ # ========================================================================= #
23
+ COLOUR_NC = "#{ESC}0m" # No Colour.
24
+ REVERT = COLOUR_NC # === REVERT
25
+ REV = COLOUR_NC # === REV
26
+ CLOSING_TAG = COLOUR_NC # === CLOSING_TAG (also represented as "#{ESC}0m")
27
+ RESET = COLOUR_NC # === RESET
28
+ RESET_TERMINAL = COLOUR_NC # === RESET_TERMINAL
29
+ CLEAR = COLOUR_NC # === CLEAR
30
+ COLOUR_RESET = COLOUR_NC # === COLOUR_RESET
31
+ DEFAULT_COLOUR = COLOUR_RESET # === DEFAULT_COLOUR
32
+
33
+ # ========================================================================= #
34
+ # === RESET_ALL_ATTRIBUTES
35
+ #
36
+ # This is essentially the same as COLOUR_NC / RESET.
37
+ # ========================================================================= #
38
+ RESET_ALL_ATTRIBUTES = "\x1b[0m"
39
+
40
+ # ========================================================================= #
41
+ # === @revert
42
+ #
43
+ # We need a variable here in order to be able to change this.
44
+ # ========================================================================= #
45
+ @revert = "\e[0;37m"
46
+
47
+ # ========================================================================= #
48
+ # === Colours.set_revert
49
+ # ========================================================================= #
50
+ def self.set_revert(i = :default)
51
+ case i
52
+ # ======================================================================= #
53
+ # === :default
54
+ # ======================================================================= #
55
+ when :default
56
+ i = REVERT
57
+ end
58
+ @revert = i
59
+ end
60
+
61
+ # ========================================================================= #
62
+ # === Colours.rev
63
+ #
64
+ # We use this method to revert to the old default, that is, the prior
65
+ # state for ANSI colours. It should be equivalent to: "\x1b[0m" e. g.
66
+ # REVERT = "\x1b[0m" # "\x1b[39;49m" <--- This here seems to fail for Konsole.underline, though.
67
+ #
68
+ # An alternative could be DEFAULT_COLOUR.
69
+ # ========================================================================= #
70
+ def self.rev
71
+ # REVERT # <- This used to be: "\e[0;37m"
72
+ @revert # This is light white. I prefer this colour actually.
73
+ end; self.instance_eval { alias revert rev } # === Colours.revert
74
+ self.instance_eval { alias revert? rev } # === Colours.revert?
75
+ self.instance_eval { alias restore? rev } # === Colours.restore?
76
+
77
+ # ========================================================================= #
78
+ # === rev
79
+ #
80
+ # Use this method to "revert" to the old default colour again, by
81
+ # delegating towards the Colours.rev() method defined above.
82
+ #
83
+ # From this point on, we use methods that can be toggled.
84
+ # ========================================================================= #
85
+ def rev(i = '')
86
+ ::Colours.rev # This will refer to the Colours.rev() module method.
87
+ end; alias revert rev # === revert
88
+ # alias default_colour rev
89
+
90
+ # ========================================================================= #
91
+ # === restore?
92
+ #
93
+ # This will restore to the default again.
94
+ # ========================================================================= #
95
+ def restore?
96
+ Colours.restore?
97
+ end; alias revert restore? # === revert
98
+ alias rev? restore? # === rev?
99
+
100
+ end
101
+
102
+ if __FILE__ == $PROGRAM_NAME
103
+ pp Colours.rev
104
+ end
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'colours/toplevel_methods/set_last_colour_used.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
+ # === last_colour_used?
18
+ #
19
+ # Tell us which colour was used last.
20
+ # ========================================================================= #
21
+ def last_colour_used?
22
+ @last_colour_used.to_s # Always required a string.
23
+ end
24
+
25
+ # ========================================================================= #
26
+ # === Colours.set_last_colour_used
27
+ # ========================================================================= #
28
+ def self.set_last_colour_used(i)
29
+ @last_colour_used = i
30
+ end
31
+
32
+ end
@@ -0,0 +1,148 @@
1
+ # This is a shell file that contains the HTML colours
2
+ export ALICEBLUE="\e[38;2;240;248;255m"
3
+ export ANTIQUEWHITE="\e[38;2;250;235;215m"
4
+ export AQUA="\e[38;2;0;255;255m"
5
+ export AQUAMARINE="\e[38;2;127;255;212m"
6
+ export AZURE="\e[38;2;240;255;255m"
7
+ export BEIGE="\e[38;2;245;245;220m"
8
+ export BISQUE="\e[38;2;255;228;196m"
9
+ export BLACK="\e[38;2;0;0;0m"
10
+ export BLANCHEDALMOND="\e[38;2;255;235;205m"
11
+ export BLUE="\e[38;2;0;0;255m"
12
+ export BLUEVIOLET="\e[38;2;138;43;226m"
13
+ export BROWN="\e[38;2;165;42;42m"
14
+ export BURLYWOOD="\e[38;2;222;184;135m"
15
+ export CADETBLUE="\e[38;2;95;158;160m"
16
+ export CHARTREUSE="\e[38;2;127;255;0m"
17
+ export CHOCOLATE="\e[38;2;210;105;30m"
18
+ export CORAL="\e[38;2;255;127;80m"
19
+ export CORNFLOWERBLUE="\e[38;2;100;149;237m"
20
+ export CORNSILK="\e[38;2;255;248;220m"
21
+ export CRIMSON="\e[38;2;220;20;60m"
22
+ export CYAN="\e[38;2;0;255;255m"
23
+ export DARKBLUE="\e[38;2;0;0;139m"
24
+ export DARKCYAN="\e[38;2;0;139;139m"
25
+ export DARKGOLDENROD="\e[38;2;184;134;11m"
26
+ export DARKGRAY="\e[38;2;169;169;169m"
27
+ export DARKGREEN="\e[38;2;0;100;0m"
28
+ export DARKGREY="\e[38;2;169;169;169m"
29
+ export DARKKHAKI="\e[38;2;189;183;107m"
30
+ export DARKMAGENTA="\e[38;2;139;0;139m"
31
+ export DARKOLIVEGREEN="\e[38;2;85;107;47m"
32
+ export DARKORANGE="\e[38;2;255;140;0m"
33
+ export DARKORCHID="\e[38;2;153;50;204m"
34
+ export DARKRED="\e[38;2;139;0;0m"
35
+ export DARKSALMON="\e[38;2;233;150;122m"
36
+ export DARKSEAGREEN="\e[38;2;143;188;143m"
37
+ export DARKSLATEBLUE="\e[38;2;72;61;139m"
38
+ export DARKSLATEGRAY="\e[38;2;47;79;79m"
39
+ export DARKSLATEGREY="\e[38;2;47;79;79m"
40
+ export DARKTURQUOISE="\e[38;2;0;206;209m"
41
+ export DARKVIOLET="\e[38;2;148;0;211m"
42
+ export DEEPPINK="\e[38;2;255;20;147m"
43
+ export DEEPSKYBLUE="\e[38;2;0;191;255m"
44
+ export DIMGRAY="\e[38;2;105;105;105m"
45
+ export DIMGREY="\e[38;2;105;105;105m"
46
+ export DODGERBLUE="\e[38;2;30;144;255m"
47
+ export FIREBRICK="\e[38;2;178;34;34m"
48
+ export FLORALWHITE="\e[38;2;255;250;240m"
49
+ export FORESTGREEN="\e[38;2;34;139;34m"
50
+ export FUCHSIA="\e[38;2;255;0;255m"
51
+ export GAINSBORO="\e[38;2;220;220;220m"
52
+ export GHOSTWHITE="\e[38;2;248;248;255m"
53
+ export GOLD="\e[38;2;255;215;0m"
54
+ export GOLDENROD="\e[38;2;218;165;32m"
55
+ export GRAY="\e[38;2;128;128;128m"
56
+ export GREY="\e[38;2;128;128;128m"
57
+ export GREEN="\e[38;2;0;128;0m"
58
+ export GREENYELLOW="\e[38;2;173;255;47m"
59
+ export HONEYDEW="\e[38;2;240;255;240m"
60
+ export HOTPINK="\e[38;2;255;105;180m"
61
+ export INDIANRED="\e[38;2;205;92;92m"
62
+ export INDIGO="\e[38;2;75;0;130m"
63
+ export IVORY="\e[38;2;255;255;240m"
64
+ export KHAKI="\e[38;2;240;230;140m"
65
+ export LAVENDER="\e[38;2;230;230;250m"
66
+ export LAVENDERBLUSH="\e[38;2;255;240;245m"
67
+ export LAWNGREEN="\e[38;2;124;252;0m"
68
+ export LEMONCHIFFON="\e[38;2;255;250;205m"
69
+ export LIGHTBLUE="\e[38;2;173;216;230m"
70
+ export LIGHTCORAL="\e[38;2;240;128;128m"
71
+ export LIGHTCYAN="\e[38;2;224;255;255m"
72
+ export LIGHTGOLDENRODYELLOW="\e[38;2;250;250;210m"
73
+ export LIGHTGRAY="\e[38;2;211;211;211m"
74
+ export LIGHTGREY="\e[38;2;211;211;211m"
75
+ export LIGHTGREEN="\e[38;2;144;238;144m"
76
+ export LIGHTPINK="\e[38;2;255;182;193m"
77
+ export LIGHTSALMON="\e[38;2;255;160;122m"
78
+ export LIGHTSEAGREEN="\e[38;2;32;178;170m"
79
+ export LIGHTSKYBLUE="\e[38;2;135;206;250m"
80
+ export LIGHTSLATEGRAY="\e[38;2;119;136;153m"
81
+ export LIGHTSLATEGREY="\e[38;2;119;136;153m"
82
+ export LIGHTSTEELBLUE="\e[38;2;176;196;222m"
83
+ export LIGHTYELLOW="\e[38;2;255;255;224m"
84
+ export LIME="\e[38;2;0;255;0m"
85
+ export LIMEGREEN="\e[38;2;50;205;50m"
86
+ export LINEN="\e[38;2;250;240;230m"
87
+ export MAGENTA="\e[38;2;255;0;255m"
88
+ export MAROON="\e[38;2;128;0;0m"
89
+ export MEDIUMAQUAMARINE="\e[38;2;102;205;170m"
90
+ export MEDIUMBLUE="\e[38;2;0;0;205m"
91
+ export MEDIUMORCHID="\e[38;2;186;85;211m"
92
+ export MEDIUMPURPLE="\e[38;2;147;112;219m"
93
+ export MEDIUMSEAGREEN="\e[38;2;60;179;113m"
94
+ export MEDIUMSLATEBLUE="\e[38;2;123;104;238m"
95
+ export MEDIUMSPRINGGREEN="\e[38;2;0;250;154m"
96
+ export MEDIUMTURQUOISE="\e[38;2;72;209;204m"
97
+ export MEDIUMVIOLETRED="\e[38;2;199;21;133m"
98
+ export MIDNIGHTBLUE="\e[38;2;25;25;112m"
99
+ export MINTCREAM="\e[38;2;245;255;250m"
100
+ export MISTYROSE="\e[38;2;255;228;225m"
101
+ export MOCCASIN="\e[38;2;255;228;181m"
102
+ export NAVAJOWHITE="\e[38;2;255;222;173m"
103
+ export NAVY="\e[38;2;0;0;128m"
104
+ export OLDLACE="\e[38;2;253;245;230m"
105
+ export OLIVE="\e[38;2;128;128;0m"
106
+ export OLIVEDRAB="\e[38;2;107;142;35m"
107
+ export ORANGE="\e[38;2;255;165;0m"
108
+ export ORANGERED="\e[38;2;255;69;0m"
109
+ export ORCHID="\e[38;2;218;112;214m"
110
+ export PALEGOLDENROD="\e[38;2;238;232;170m"
111
+ export PALEGREEN="\e[38;2;152;251;152m"
112
+ export PALETURQUOISE="\e[38;2;175;238;238m"
113
+ export PALEVIOLETRED="\e[38;2;219;112;147m"
114
+ export PAPAYAWHIP="\e[38;2;255;239;213m"
115
+ export PEACHPUFF="\e[38;2;255;218;185m"
116
+ export PERU="\e[38;2;205;133;63m"
117
+ export PINK="\e[38;2;255;192;203m"
118
+ export PLUM="\e[38;2;221;160;221m"
119
+ export POWDERBLUE="\e[38;2;176;224;230m"
120
+ export PURPLE="\e[38;2;128;0;128m"
121
+ export RED="\e[38;2;255;0;0m"
122
+ export ROSYBROWN="\e[38;2;188;143;143m"
123
+ export ROYALBLUE="\e[38;2;65;105;225m"
124
+ export SADDLEBROWN="\e[38;2;139;69;19m"
125
+ export SALMON="\e[38;2;250;128;114m"
126
+ export SANDYBROWN="\e[38;2;244;164;96m"
127
+ export SEAGREEN="\e[38;2;46;139;87m"
128
+ export SEASHELL="\e[38;2;255;245;238m"
129
+ export SIENNA="\e[38;2;160;82;45m"
130
+ export SILVER="\e[38;2;192;192;192m"
131
+ export SKYBLUE="\e[38;2;135;206;235m"
132
+ export SLATEBLUE="\e[38;2;106;90;205m"
133
+ export SLATEGRAY="\e[38;2;112;128;144m"
134
+ export SLATEGREY="\e[38;2;112;128;144m"
135
+ export SNOW="\e[38;2;255;250;250m"
136
+ export SPRINGGREEN="\e[38;2;0;255;127m"
137
+ export STEELBLUE="\e[38;2;70;130;180m"
138
+ export TAN="\e[38;2;210;180;140m"
139
+ export TEAL="\e[38;2;0;128;128m"
140
+ export THISTLE="\e[38;2;216;191;216m"
141
+ export TOMATO="\e[38;2;255;99;71m"
142
+ export TURQUOISE="\e[38;2;64;224;208m"
143
+ export VIOLET="\e[38;2;238;130;238m"
144
+ export WHEAT="\e[38;2;245;222;179m"
145
+ export WHITE="\e[38;2;255;255;255m"
146
+ export WHITESMOKE="\e[38;2;245;245;245m"
147
+ export YELLOW="\e[38;2;255;255;0m"
148
+ export YELLOWGREEN="\e[38;2;154;205;50m"
@@ -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
+ module Colours
8
+
9
+ require 'colours/constants/hash_simple_colours.rb'
10
+ require 'colours/toplevel_methods/cliner.rb'
11
+ require 'colours/toplevel_methods/e.rb'
12
+ require 'colours/toplevel_methods/make_colour.rb'
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 # showbasiccolourpalette
@@ -0,0 +1,130 @@
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
+ module Colours
12
+
13
+ require 'colours/toplevel_methods/revert.rb'
14
+ require 'colours/toplevel_methods/e.rb'
15
+ require 'colours/rgb/rgb.rb'
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.underline
29
+ #
30
+ # This method will "puts" the result of applying underline to a string,
31
+ # on the console/terminal. If you wish to do the output on your own
32
+ # then you have to use the method Colours.return_underline or its
33
+ # alias called Colours.string_underline.
34
+ #
35
+ # To test this, try:
36
+ #
37
+ # Colours.underline('Hello world!')
38
+ #
39
+ # ========================================================================= #
40
+ def self.underline(
41
+ i = '',
42
+ make_newline = false,
43
+ &block
44
+ )
45
+ e return_underline(i, make_newline, &block)
46
+ end
47
+
48
+ # ========================================================================= #
49
+ # === underline
50
+ # ========================================================================= #
51
+ def underline(
52
+ i = '',
53
+ make_newline = false
54
+ )
55
+ Colours.underline(i, make_newline)
56
+ end
57
+
58
+ # ========================================================================= #
59
+ # === Colours.return_underline
60
+ #
61
+ # The point of this method here is to make a given text (String) appear
62
+ # "underlined", via ANSI escape sequences. For underline the String
63
+ # that should be used is "\u001b[4m".
64
+ #
65
+ # This can be tested on the commandline such as via:
66
+ #
67
+ # echoen "\u001b[4m Underline \u001b[0m"
68
+ #
69
+ # Usage examples:
70
+ #
71
+ # puts ' ok | '+Colours.return_underline('Hello world!')+' | ok'
72
+ # puts ' ok | '+Colours.return_underline('Hello world!') { :slateblue }+' | ok'
73
+ #
74
+ # In January 2022 the second variant was removed, though. Let's keep things
75
+ # simple for now - perhaps in the future this may be re-enabled.
76
+ # ========================================================================= #
77
+ def self.return_underline(
78
+ show_this_text = 'This must be underline.',
79
+ make_newline = false,
80
+ use_this_as_revert_code = REVERT
81
+ )
82
+ # ===================================================================== #
83
+ # Build up our main string that codes for underline.
84
+ # ===================================================================== #
85
+ result = "\u001b[#{UNDERLINE_CODE}m".dup
86
+ # if block_given?
87
+ # # ===================================================================== #
88
+ # # Right now we assume that this must be a colour if it is supplied
89
+ # # via a block. However had, in January 2022 I realised that this
90
+ # # assumption is not always correct, so this was disabled for now.
91
+ # # At a later moment in time we may reconsider this.
92
+ # # ===================================================================== #
93
+ # result << ";38;2;"
94
+ # colour_replacement = colour_to_rgb_value(yield)
95
+ # result << colour_replacement
96
+ # end
97
+ # result << 'm'
98
+ if make_newline # Append a newline in this case.
99
+ show_this_text = "#{show_this_text}\n"
100
+ end
101
+ result << show_this_text
102
+ result << use_this_as_revert_code
103
+ return result
104
+ end; self.instance_eval { alias string_underline return_underline } # === Colours.string_underline
105
+
106
+ end
107
+
108
+ if __FILE__ == $PROGRAM_NAME
109
+ alias e puts
110
+ if ARGV.empty?
111
+ e Colours.underline('Hello world!')
112
+ e 'Hello world!'
113
+ # ======================================================================= #
114
+ # And then run some more tests:
115
+ # ======================================================================= #
116
+ require 'colours/toplevel_methods/use_colours.rb'
117
+ Colours.enable_html_colours
118
+ e Colours.palegreen('in palegreen:')
119
+ print ' '; print Colours.underline(txt) { :palegreen }
120
+ e Colours.slateblue('in slateblue:')
121
+ print ' '; print Colours.underline(txt) { :slateblue }
122
+ e Colours.orange('in orange:')
123
+ print ' '; print Colours.underline(txt) { :orange }
124
+ e Colours.crimson('in crimson:')
125
+ print ' '; print Colours.underline(txt) { :crimson }
126
+ else
127
+ puts Colours.underline(ARGV.join(' ').strip)
128
+ puts Colours.underline(ARGV.join(' ').strip) { :crimson }
129
+ end
130
+ end # underline one TWO three