colours 0.5.55

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 (144) hide show
  1. checksums.yaml +7 -0
  2. data/LICENCE.md +22 -0
  3. data/README.md +890 -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 +862 -0
  14. data/lib/colours/256_colours/support_for_256_colours.rb +180 -0
  15. data/lib/colours/autoalias_e.rb +10 -0
  16. data/lib/colours/autogenerated/README.md +2 -0
  17. data/lib/colours/autogenerated/support_for_256_colours.rb +2235 -0
  18. data/lib/colours/autogenerated/support_for_html_colours.rb +1778 -0
  19. data/lib/colours/autogenerated/toplevel_basic_colour_methods.rb +6366 -0
  20. data/lib/colours/autoinclude.rb +14 -0
  21. data/lib/colours/base/base.rb +23 -0
  22. data/lib/colours/basic_colours/README.md +4 -0
  23. data/lib/colours/basic_colours/basic_colours.rb +279 -0
  24. data/lib/colours/colour_methods/README.md +11 -0
  25. data/lib/colours/colour_methods/default_colour.rb +66 -0
  26. data/lib/colours/colour_methods/sargument.rb +70 -0
  27. data/lib/colours/colour_methods/scomments.rb +105 -0
  28. data/lib/colours/colour_methods/sdir.rb +66 -0
  29. data/lib/colours/colour_methods/sfancy.rb +84 -0
  30. data/lib/colours/colour_methods/sfile.rb +71 -0
  31. data/lib/colours/colour_methods/simportant.rb +92 -0
  32. data/lib/colours/colour_methods/snormal.rb +66 -0
  33. data/lib/colours/colour_methods/ssymlink.rb +102 -0
  34. data/lib/colours/colour_methods/swarn.rb +76 -0
  35. data/lib/colours/colour_table/README.md +3 -0
  36. data/lib/colours/colour_table/colour_table.rb +275 -0
  37. data/lib/colours/colours_e_autoinclude.rb +9 -0
  38. data/lib/colours/commandline/README.md +2 -0
  39. data/lib/colours/commandline/commandline.rb +44 -0
  40. data/lib/colours/commandline/menu.rb +111 -0
  41. data/lib/colours/constants/colour_constants.rb +299 -0
  42. data/lib/colours/constants/file_constants.rb +72 -0
  43. data/lib/colours/constants/hash_simple_colours.rb +146 -0
  44. data/lib/colours/constants/misc.rb +59 -0
  45. data/lib/colours/constants/newline.rb +14 -0
  46. data/lib/colours/constants/registered_colour_methods.rb +53 -0
  47. data/lib/colours/e/README.md +13 -0
  48. data/lib/colours/e/autoinclude.rb +11 -0
  49. data/lib/colours/e/e.rb +35 -0
  50. data/lib/colours/e.rb +5 -0
  51. data/lib/colours/eparse/eparse.rb +77 -0
  52. data/lib/colours/everything/autoinclude.rb +11 -0
  53. data/lib/colours/html_colours/README.md +1 -0
  54. data/lib/colours/html_colours/add_html_colours_onto_the_toplevel_namespace.rb +22 -0
  55. data/lib/colours/html_colours/hash_html_colours.rb +63 -0
  56. data/lib/colours/html_colours/html_colourize.rb +48 -0
  57. data/lib/colours/html_colours/is_this_html_colour_included.rb +64 -0
  58. data/lib/colours/html_colours/misc.rb +186 -0
  59. data/lib/colours/html_colours/show_html_colours.rb +85 -0
  60. data/lib/colours/kde_colour_palette/kde_colour_palette.rb +128 -0
  61. data/lib/colours/map_symbol_to_corresponding_colour/map_symbol_to_corresponding_colour.rb +219 -0
  62. data/lib/colours/module.rb +11 -0
  63. data/lib/colours/project/project_base_directory.rb +22 -0
  64. data/lib/colours/rainbow_colours/README.md +2 -0
  65. data/lib/colours/rainbow_colours/check_for_trollop_being_available_or_exit.rb +26 -0
  66. data/lib/colours/rainbow_colours/constants.rb +30 -0
  67. data/lib/colours/rainbow_colours/do_parse_via_rainbow_colours.rb +164 -0
  68. data/lib/colours/rainbow_colours/paint_detected_mode.rb +20 -0
  69. data/lib/colours/rainbow_colours/print_rainbow_line.rb +68 -0
  70. data/lib/colours/rainbow_colours/println_ani.rb +32 -0
  71. data/lib/colours/rainbow_colours/println_plain.rb +36 -0
  72. data/lib/colours/rainbow_colours/rainbow.rb +38 -0
  73. data/lib/colours/rainbow_colours/report_errors.rb +32 -0
  74. data/lib/colours/rainbow_colours/returnln_plain.rb +63 -0
  75. data/lib/colours/rainbow_colours/set_mode.rb +24 -0
  76. data/lib/colours/requires/require_all_colour_methods.rb +5 -0
  77. data/lib/colours/requires/require_commandline.rb +7 -0
  78. data/lib/colours/requires/require_eparse.rb +11 -0
  79. data/lib/colours/requires/require_rgb.rb +5 -0
  80. data/lib/colours/requires/require_sdir.rb +5 -0
  81. data/lib/colours/requires/require_sfile.rb +5 -0
  82. data/lib/colours/requires/require_the_256_colours_module.rb +16 -0
  83. data/lib/colours/requires/require_the_basic_colours.rb +7 -0
  84. data/lib/colours/requires/require_the_colour_methods.rb +34 -0
  85. data/lib/colours/requires/require_the_colour_table.rb +7 -0
  86. data/lib/colours/requires/require_the_colours_project.rb +52 -0
  87. data/lib/colours/requires/require_the_constants.rb +11 -0
  88. data/lib/colours/requires/require_the_html_colours.rb +11 -0
  89. data/lib/colours/requires/require_the_kde_colour_palette.rb +7 -0
  90. data/lib/colours/requires/require_the_toplevel_methods.rb +42 -0
  91. data/lib/colours/revert/revert.rb +106 -0
  92. data/lib/colours/rgb/rgb.rb +547 -0
  93. data/lib/colours/testing/README.md +2 -0
  94. data/lib/colours/testing/testing.rb +157 -0
  95. data/lib/colours/toplevel_methods/bold.rb +35 -0
  96. data/lib/colours/toplevel_methods/bold_and_italic.rb +36 -0
  97. data/lib/colours/toplevel_methods/cat.rb +39 -0
  98. data/lib/colours/toplevel_methods/clear_screen.rb +18 -0
  99. data/lib/colours/toplevel_methods/cliner.rb +19 -0
  100. data/lib/colours/toplevel_methods/col.rb +56 -0
  101. data/lib/colours/toplevel_methods/e.rb +63 -0
  102. data/lib/colours/toplevel_methods/esystem.rb +19 -0
  103. data/lib/colours/toplevel_methods/fancy_parse.rb +79 -0
  104. data/lib/colours/toplevel_methods/html_colourize.rb +64 -0
  105. data/lib/colours/toplevel_methods/is_on_roebe.rb +16 -0
  106. data/lib/colours/toplevel_methods/italic.rb +104 -0
  107. data/lib/colours/toplevel_methods/make_colour.rb +29 -0
  108. data/lib/colours/toplevel_methods/methods_related_to_html_colours.rb +325 -0
  109. data/lib/colours/toplevel_methods/misc.rb +129 -0
  110. data/lib/colours/toplevel_methods/open_this_file.rb +26 -0
  111. data/lib/colours/toplevel_methods/prefer_this_colour_schemata.rb +80 -0
  112. data/lib/colours/toplevel_methods/random_html_colour.rb +44 -0
  113. data/lib/colours/toplevel_methods/random_value.rb +37 -0
  114. data/lib/colours/toplevel_methods/remove_escape_sequence.rb +112 -0
  115. data/lib/colours/toplevel_methods/set_last_colour_used.rb +32 -0
  116. data/lib/colours/toplevel_methods/show_basic_colour_palette.rb +36 -0
  117. data/lib/colours/toplevel_methods/underline.rb +114 -0
  118. data/lib/colours/toplevel_methods/use_colours.rb +290 -0
  119. data/lib/colours/utility_scripts/README.md +2 -0
  120. data/lib/colours/utility_scripts/autogenerate.rb +291 -0
  121. data/lib/colours/version/version.rb +25 -0
  122. data/lib/colours/yaml/256_colours.yml +277 -0
  123. data/lib/colours/yaml/basic_colours.yml +23 -0
  124. data/lib/colours/yaml/html_colours.yml +835 -0
  125. data/lib/colours/yaml/kde_colour_palette.yml +183 -0
  126. data/lib/colours/yaml/prefer_this_colour_schemata.yml +15 -0
  127. data/lib/colours/yaml/use_these_values_for_the_colour_methods.yml +13 -0
  128. data/lib/colours.rb +5 -0
  129. data/test/test.html +18 -0
  130. data/test/testing_256_colours_support.rb +29 -0
  131. data/test/testing_col.rb +10 -0
  132. data/test/testing_colours.rb +95 -0
  133. data/test/testing_colours_e.rb +13 -0
  134. data/test/testing_eparse.rb +13 -0
  135. data/test/testing_kde_colour_palette.rb +30 -0
  136. data/test/testing_konsole_submodule.rb +226 -0
  137. data/test/testing_map_symbol_to_corresponding_colour.rb +14 -0
  138. data/test/testing_rgb_to_hex.rb +32 -0
  139. data/test/testing_the_basic_colours_of_the_colours_project.rb +58 -0
  140. data/test/testing_the_colour_methods.rb +36 -0
  141. data/test/testing_the_constants_of_the_colours_project.rb +9 -0
  142. data/test/testing_the_html_colours_of_the_colours_project.rb +37 -0
  143. data/test/testing_whether_colours_will_be_used.rb +7 -0
  144. metadata +226 -0
@@ -0,0 +1,80 @@
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
+ require 'colours/html_colours/add_html_colours_onto_the_toplevel_namespace.rb'
8
+ require 'colours/autogenerated/support_for_html_colours.rb'
9
+
10
+ module Colours
11
+
12
+ # ========================================================================= #
13
+ # === @prefer_this_colour_schemata
14
+ #
15
+ # The following Array ranks which colour schemata we will try to use.
16
+ # More important entries should come on top.
17
+ #
18
+ # Konsole will be the default, normally, followed by the 256 colours; and
19
+ # then the basic colours.
20
+ #
21
+ # Of course you can decide on your own via the .yml file, and other
22
+ # methods that allow us to change this setting, but when it comes
23
+ # to implementations such as for simp() or sfancy() then we will
24
+ # honour the setting in the yaml file (if we use any colours at all,
25
+ # that is). The yaml file is typically called
26
+ # "prefer_this_colour_schemata.yml".
27
+ # ========================================================================= #
28
+ @prefer_this_colour_schemata = YAML.load_file(FILE_PREFER_THIS_COLOUR_SCHEMATA)
29
+
30
+ # ========================================================================= #
31
+ # === @use_html_colours
32
+ #
33
+ # If the following variable is set to true then the HTML colours will
34
+ # be used, if available. These are colours such as 'slateblue' or
35
+ # 'crimson'.
36
+ # ========================================================================= #
37
+ @use_html_colours = false
38
+
39
+ # ========================================================================= #
40
+ # === @use_256_colours
41
+ # ========================================================================= #
42
+ @use_256_colours = false
43
+
44
+ # ========================================================================= #
45
+ # === @use_basic_colours
46
+ # ========================================================================= #
47
+ @use_basic_colours = false
48
+
49
+ # ========================================================================= #
50
+ # Next, we will set some other toplevel instance variables based on
51
+ # the value of this yaml file.
52
+ # ========================================================================= #
53
+ first_entry = @prefer_this_colour_schemata[1]
54
+ _second_entry = @prefer_this_colour_schemata[2]
55
+ _third_entry = @prefer_this_colour_schemata[3]
56
+
57
+ case first_entry
58
+ when :html_colours
59
+ @use_html_colours = true
60
+ when :support_for_256_colours
61
+ @use_256_colours = true
62
+ when :basic_colours
63
+ @use_basic_colours = true
64
+ end
65
+
66
+ # ========================================================================= #
67
+ # === Colours.prefer_which_colour_schemata?
68
+ # ========================================================================= #
69
+ def self.prefer_which_colour_schemata?
70
+ @prefer_this_colour_schemata[1]
71
+ end; self.instance_eval { alias prefer_which_colour_scheme? prefer_which_colour_schemata? } # === Colours.prefer_which_colour_scheme
72
+
73
+ # ========================================================================= #
74
+ # Designate @use_256_colours to true:
75
+ # ========================================================================= #
76
+ if prefer_which_colour_schemata? == :support_for_256_colours
77
+ @use_256_colours = true
78
+ end
79
+
80
+ end
@@ -0,0 +1,44 @@
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
+ require 'colours/html_colours/misc.rb'
8
+
9
+ module Colours
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
+ # Colours.random_colour? # => "teal"
22
+ # Colours.random_colour? # => "blueviolet"
23
+ # =========================================================================== #
24
+ def self.random_html_colour
25
+ ::Colours::HtmlColours.random_colour?
26
+ end; self.instance_eval { alias random_colour? random_html_colour } # === Colours.random_colour?
27
+ self.instance_eval { alias return_random_html_colour random_html_colour } # === Colours.return_random_html_colour
28
+
29
+ # =========================================================================== #
30
+ # === random_colour?
31
+ # =========================================================================== #
32
+ def random_colour?
33
+ ::Colours::HtmlColours.random_colour?
34
+ end; alias random_colour random_colour? # === random_colour
35
+ alias random random_colour? # === random
36
+ alias sample random_colour? # === sample
37
+ alias random_html_colour random_colour? # === random_html_colour
38
+ alias return_random_html_colour random_colour? # === return_random_html_colour
39
+
40
+ end
41
+
42
+ if __FILE__ == $PROGRAM_NAME
43
+ puts Colours.random_colour? # => "teal"
44
+ 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,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