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,85 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'colours/toplevel_methods/prefer_this_colour_schemata.rb'
6
+ # =========================================================================== #
7
+ module Colours
8
+
9
+ require 'colours/requires/require_yaml.rb'
10
+ require 'colours/html_colours/add_html_colours_onto_the_toplevel_namespace.rb'
11
+ require 'colours/autogenerated/support_for_html_colours.rb'
12
+
13
+ # ========================================================================= #
14
+ # === @prefer_this_colour_schemata
15
+ #
16
+ # The following Array ranks which colour schemata we will try to use.
17
+ # More important entries should come on top.
18
+ #
19
+ # Konsole will be the default, normally, followed by the 256 colours; and
20
+ # then the basic colours.
21
+ #
22
+ # Of course you can decide on your own via the .yml file, and other
23
+ # methods that allow us to change this setting, but when it comes
24
+ # to implementations such as for simp() or sfancy() then we will
25
+ # honour the setting in the yaml file (if we use any colours at all,
26
+ # that is). The yaml file is typically called
27
+ # "prefer_this_colour_schemata.yml".
28
+ # ========================================================================= #
29
+ if File.exist? FILE_PREFER_THIS_COLOUR_SCHEMATA
30
+ @prefer_this_colour_schemata = YAML.load_file(FILE_PREFER_THIS_COLOUR_SCHEMATA)
31
+ end
32
+
33
+ # ========================================================================= #
34
+ # === @use_html_colours
35
+ #
36
+ # If the following variable is set to true then the HTML colours will
37
+ # be used, if available. These are colours such as 'slateblue' or
38
+ # 'crimson'.
39
+ # ========================================================================= #
40
+ @use_html_colours = false
41
+
42
+ # ========================================================================= #
43
+ # === @use_256_colours
44
+ # ========================================================================= #
45
+ @use_256_colours = false
46
+
47
+ # ========================================================================= #
48
+ # === @use_basic_colours
49
+ # ========================================================================= #
50
+ @use_basic_colours = false
51
+
52
+ # ========================================================================= #
53
+ # Next, we will set some other toplevel instance variables based on
54
+ # the value of this yaml file.
55
+ # ========================================================================= #
56
+ if @prefer_this_colour_schemata
57
+ first_entry = @prefer_this_colour_schemata[1]
58
+ _second_entry = @prefer_this_colour_schemata[2]
59
+ _third_entry = @prefer_this_colour_schemata[3]
60
+
61
+ case first_entry
62
+ when :html_colours
63
+ @use_html_colours = true
64
+ when :support_for_256_colours
65
+ @use_256_colours = true
66
+ when :basic_colours
67
+ @use_basic_colours = true
68
+ end
69
+ end
70
+
71
+ # ========================================================================= #
72
+ # === Colours.prefer_which_colour_schemata?
73
+ # ========================================================================= #
74
+ def self.prefer_which_colour_schemata?
75
+ @prefer_this_colour_schemata[1].to_sym if @prefer_this_colour_schemata
76
+ end; self.instance_eval { alias prefer_which_colour_scheme? prefer_which_colour_schemata? } # === Colours.prefer_which_colour_scheme
77
+
78
+ # ========================================================================= #
79
+ # Designate @use_256_colours to true:
80
+ # ========================================================================= #
81
+ if prefer_which_colour_schemata? == :support_for_256_colours
82
+ @use_256_colours = true
83
+ end
84
+
85
+ end
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'colours/toplevel_methods/random_html_colour.rb'
6
+ # =========================================================================== #
7
+ module Colours
8
+
9
+ require 'colours/html_colours/misc.rb'
10
+
11
+ # =========================================================================== #
12
+ # === Colours.random_html_colour
13
+ #
14
+ # This method will simply return a (one) random HTML colour, in long
15
+ # format, e. g. "teal" or "slateblue".
16
+ #
17
+ # If you wish to have it colourized properly, you need to use another
18
+ # method.
19
+ #
20
+ # Usage examples:
21
+ #
22
+ # Colours.random_colour? # => "teal"
23
+ # Colours.random_colour? # => "blueviolet"
24
+ #
25
+ # =========================================================================== #
26
+ def self.random_html_colour
27
+ ::Colours::HtmlColours.random_colour?
28
+ end; self.instance_eval { alias random_colour? random_html_colour } # === Colours.random_colour?
29
+ self.instance_eval { alias return_html_colour? random_html_colour } # === Colours.return_html_colour?
30
+ self.instance_eval { alias random_html_colour? random_html_colour } # === Colours.random_html_colour?
31
+ self.instance_eval { alias return_random_html_colour random_html_colour } # === Colours.return_random_html_colour
32
+
33
+ # =========================================================================== #
34
+ # === random_colour?
35
+ # =========================================================================== #
36
+ def random_colour?
37
+ ::Colours::HtmlColours.random_colour?
38
+ end; alias random_colour random_colour? # === random_colour
39
+ alias random random_colour? # === random
40
+ alias sample random_colour? # === sample
41
+ alias random_html_colour random_colour? # === random_html_colour
42
+ alias return_random_html_colour random_colour? # === return_random_html_colour
43
+
44
+ end
45
+
46
+ if __FILE__ == $PROGRAM_NAME
47
+ puts Colours.random_colour? # => "teal"
48
+ end
@@ -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/colour_constants.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 = Colours.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,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,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,129 @@
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/revert/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[4m".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
+ result
104
+ end; self.instance_eval { alias string_underline return_underline } # === Colours.string_underline
105
+
106
+ end
107
+
108
+ if __FILE__ == $PROGRAM_NAME
109
+ if ARGV.empty?
110
+ puts Colours.underline('Hello world!')
111
+ puts 'Hello world!'
112
+ # ======================================================================= #
113
+ # And then run some more tests:
114
+ # ======================================================================= #
115
+ require 'colours/toplevel_methods/use_colours.rb'
116
+ Colours.enable_html_colours
117
+ e Colours.palegreen('in palegreen:')
118
+ print ' '; print Colours.underline(txt) { :palegreen }
119
+ e Colours.slateblue('in slateblue:')
120
+ print ' '; print Colours.underline(txt) { :slateblue }
121
+ e Colours.orange('in orange:')
122
+ print ' '; print Colours.underline(txt) { :orange }
123
+ e Colours.crimson('in crimson:')
124
+ print ' '; print Colours.underline(txt) { :crimson }
125
+ else
126
+ puts Colours.underline(ARGV.join(' ').strip)
127
+ puts Colours.underline(ARGV.join(' ').strip) { :crimson }
128
+ end
129
+ end # underline one TWO three