colours 0.5.52

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 (143) hide show
  1. checksums.yaml +7 -0
  2. data/LICENCE.md +22 -0
  3. data/README.md +889 -0
  4. data/bin/colours +7 -0
  5. data/bin/html_colour_to_hex_value +7 -0
  6. data/bin/html_colourize +7 -0
  7. data/bin/print_rainbow_line +7 -0
  8. data/bin/rainbow_colours +7 -0
  9. data/colours.gemspec +76 -0
  10. data/doc/COLOUR_CODES_CHART.md +28 -0
  11. data/doc/HOW_TO_PICK_YOUR_OWN_COLOURS.md +29 -0
  12. data/doc/README.gen +862 -0
  13. data/lib/colours.rb +5 -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.rb +5 -0
  48. data/lib/colours/e/README.md +13 -0
  49. data/lib/colours/e/autoinclude.rb +11 -0
  50. data/lib/colours/e/e.rb +35 -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 +108 -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/test/test.html +18 -0
  129. data/test/testing_256_colours_support.rb +29 -0
  130. data/test/testing_col.rb +10 -0
  131. data/test/testing_colours.rb +95 -0
  132. data/test/testing_colours_e.rb +13 -0
  133. data/test/testing_eparse.rb +13 -0
  134. data/test/testing_kde_colour_palette.rb +30 -0
  135. data/test/testing_konsole_submodule.rb +226 -0
  136. data/test/testing_map_symbol_to_corresponding_colour.rb +14 -0
  137. data/test/testing_rgb_to_hex.rb +32 -0
  138. data/test/testing_the_basic_colours_of_the_colours_project.rb +58 -0
  139. data/test/testing_the_colour_methods.rb +36 -0
  140. data/test/testing_the_constants_of_the_colours_project.rb +9 -0
  141. data/test/testing_the_html_colours_of_the_colours_project.rb +37 -0
  142. data/test/testing_whether_colours_will_be_used.rb +7 -0
  143. metadata +225 -0
@@ -0,0 +1,129 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'colours/toplevel_methods/misc.rb'
6
+ # =========================================================================== #
7
+ module Colours
8
+
9
+ require 'colours/toplevel_methods/esystem.rb'
10
+ require 'colours/toplevel_methods/open_this_file.rb'
11
+ require 'colours/html_colours/misc.rb'
12
+
13
+ # ========================================================================= #
14
+ # === Colours.sanitize_line
15
+ #
16
+ # This method will replace one line with the proper R,G,B valid entries.
17
+ # ========================================================================= #
18
+ def self.sanitize_line(entry)
19
+ all_potential_matches = entry.scan(/<(\w+)>/).flatten
20
+ all_potential_matches.each {|substring|
21
+ entry.gsub!(/<\/>/, rev)
22
+ entry.gsub!(/<#{substring}>/, rgb_format(substring))
23
+ }
24
+ begin
25
+ require 'roebe/modules/remove_html.rb'
26
+ rescue LoadError; end
27
+ if Object.const_defined?(:Roebe) and
28
+ Roebe.respond_to?(:remove_html)
29
+ entry = Roebe.remove_html[entry]
30
+ end
31
+ return entry
32
+ end
33
+
34
+ # ========================================================================= #
35
+ # === Colours.read_and_display_this_file
36
+ #
37
+ # This method accepts a file path - in other words, the input should be
38
+ # the location of a specific file on your filesystem - and then simply
39
+ # reads in the content of said file via File.readlines().
40
+ #
41
+ # Content such as <slateblue> found in this file will be replaced
42
+ # with the respective R,G,B substring value.
43
+ #
44
+ # In the test/ subdirectory there is an example file for this - have
45
+ # a look there for more information.
46
+ # ========================================================================= #
47
+ def self.read_and_display_this_file(
48
+ i = TEST_FILE
49
+ )
50
+ i = i.to_s
51
+ if File.exist? i
52
+ new_array = []
53
+ data = File.readlines(i)
54
+ data.each {|entry|
55
+ # ======================================================================= #
56
+ # Check whether the entry has a <> tag:
57
+ # ======================================================================= #
58
+ if entry.include?('<') and entry.include?('>') and
59
+ entry.include?('</>')
60
+ # ================================================================= #
61
+ # Ok, we may assume that something like <slateblue> is there.
62
+ # ================================================================= #
63
+ entry = sanitize_line(entry)
64
+ end
65
+ new_array << entry
66
+ }
67
+ e new_array # For now we will simply output that modified Array.
68
+ else
69
+ e "Notice: The file at `#{sfile(i)}` does not exist."
70
+ end
71
+ end; self.instance_eval { alias read_file read_and_display_this_file } # === Colours.read_file
72
+
73
+ # ========================================================================= #
74
+ # === Colours.does_this_line_include_a_html_colour?
75
+ #
76
+ # This method can be used to determine whether the given input-string
77
+ # contains a valid HTML colour or whether it does not.
78
+ #
79
+ # Returns: a boolean.
80
+ #
81
+ # Invocation examples:
82
+ #
83
+ # Colours.does_this_line_include_a_html_colour? "<green>yo there</green> <orange>getline() function</orange>" # => true
84
+ # Colours.does_this_line_include_a_html_colour? "foo bar" # => false
85
+ #
86
+ # ========================================================================= #
87
+ def self.does_this_line_include_a_html_colour?(
88
+ line
89
+ )
90
+ Colours.html_colours?.any? {|entry|
91
+ line.include? entry
92
+ }
93
+ end
94
+
95
+ # ========================================================================= #
96
+ # === Colours.convert_hex_to_rgb
97
+ #
98
+ # This method will convert e. g. #baf185 to [186, 241, 133]. Thus it
99
+ # will return an Array, denoting the R, G, B values.
100
+ #
101
+ # How to do this conversion on your own?
102
+ #
103
+ # (1) Get the 2 left digits of the hex color code and convert
104
+ # to decimal value to get the red color level.
105
+ # (2) Get the 2 middle digits of the hex color code and
106
+ # convert to decimal value to get the green color level.
107
+ # (3) Get the 2 right digits of the hex color code and
108
+ # convert to decimal value to get the blue color level.
109
+ #
110
+ # Usage example:
111
+ #
112
+ # Colours.convert_hex_to_rgb('#baf185') # => [186, 241, 133]
113
+ #
114
+ # ========================================================================= #
115
+ def self.convert_hex_to_rgb(hex)
116
+ if hex.is_a? Array
117
+ hex = hex.first
118
+ end
119
+ hex = hex.to_s.dup
120
+ hex.delete!('#') if hex.include? '#'
121
+ array = [] # We will return this Array.
122
+ r = hex[0,2].to_i(16)
123
+ g = hex[2,2].to_i(16)
124
+ b = hex[4,2].to_i(16)
125
+ array << r << g << b
126
+ return array
127
+ end; self.instance_eval { alias hex_to_rgb convert_hex_to_rgb } # === Colours.hex_to_rgb
128
+
129
+ end
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'colours/toplevel_methods/open_this_file.rb'
6
+ # =========================================================================== #
7
+ require 'colours/toplevel_methods/esystem.rb'
8
+
9
+ module Colours
10
+
11
+ # ========================================================================= #
12
+ # === self.open_this_file
13
+ # ========================================================================= #
14
+ def open_this_file(
15
+ shall_we_exit = false
16
+ )
17
+ case shall_we_exit
18
+ when :then_exit
19
+ shall_we_exit = true
20
+ end
21
+ _ = "bluefish #{__FILE__}"
22
+ esystem(_)
23
+ exit if shall_we_exit
24
+ end
25
+
26
+ end
@@ -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,108 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'colours/toplevel_methods/remove_escape_sequence.rb'
6
+ # =========================================================================== #
7
+ module Colours
8
+
9
+ require 'colours/constants/colour_constants.rb'
10
+
11
+ # ========================================================================= #
12
+ # === Colours.remove_escape_sequence
13
+ #
14
+ # The method Colours.remove_escape_sequence() will remove all Ansi
15
+ # Escape sequences from a given string.
16
+ # ========================================================================= #
17
+ def self.remove_escape_sequence(i)
18
+ i = i.to_s.dup
19
+ # ======================================================================= #
20
+ # Iterate over the registered ansi-colours next.
21
+ # ======================================================================= #
22
+ ARRAY_REGISTERED_ANSI_COLOURS.each {|entry|
23
+ if i.include? entry
24
+ entry = Regexp.quote(entry)
25
+ i.sub!(/#{entry}/, '')
26
+ end
27
+ # ===================================================================== #
28
+ # Next, check for KDE konsole colours. We must use "" there, not ''.
29
+ # ===================================================================== #
30
+ if i.include?("\e[") and i =~ /\d+m/ # Such as: "\e[38;2;220;20;60m|"
31
+ # =================================================================== #
32
+ # The next regex will (hopefully) remove all escape-characters
33
+ # from the given String.
34
+ # =================================================================== #
35
+ regex_for_html_colours = # Detect entries such as: \e[38;2;106;90;205m
36
+ /(\e\[\d{2};\d{1};\d{3};\d{1,2};\d{3}m)/ # See: https://rubular.com/r/tG3XeOK5NPsfmI
37
+ i.gsub!(regex_for_html_colours, '')
38
+ # =================================================================== #
39
+ # See: https://rubular.com/r/SdS28fAGSxIELn
40
+ # =================================================================== #
41
+ # /(\\e\[\d{1,2};?\d{1,2};?\d{0,3};?\d{0,3};?\d{1,2}m|\\e\[\d{0,2}m|\\e\[K|\\e\[\d{0,2};\d{0,2}m|(\\e\[.+\dm)|\\e\[0;37m)/
42
+ [
43
+ /\e\[\d{1,2};?\d{1,2};?\d{0,3};?\d{0,3};?\d{1,2}m/,
44
+ /\\e\[\d{0,2}m|\\e\[K|\\e\[\d{0,2};\d{0,2}m/,
45
+ /\\e\[.+\dm/,
46
+ /\\e\[0;37m/
47
+ ].each {|regex_to_use|
48
+ i.gsub!(regex_to_use, '')
49
+ }
50
+ end
51
+ }
52
+ return i
53
+ end; self.instance_eval { alias remove remove_escape_sequence } # === Colours.remove
54
+ self.instance_eval { alias remove_escape_sequences remove_escape_sequence } # === Colours.remove_escape_sequences
55
+ self.instance_eval { alias remove_colours remove_escape_sequence } # === Colours.remove_colours
56
+ self.instance_eval { alias escape remove_escape_sequence } # === Colours.escape
57
+
58
+ # ========================================================================= #
59
+ # === Colours.remove_trailing_end_from
60
+ #
61
+ # The second argument to this method can be the escape sequence that you
62
+ # wish to remove.
63
+ #
64
+ # Invocation example:
65
+ #
66
+ # x = Colours.remove_trailing_end_from("\e[38;2;70;130;180m\e[0;37m") # => "\e[38;2;70;130;180m"
67
+ #
68
+ # ========================================================================= #
69
+ def self.remove_trailing_end_from(
70
+ i,
71
+ remove_this_escape_sequence = Colours.revert?
72
+ )
73
+ quoted = Regexp.quote(remove_this_escape_sequence)
74
+ # ======================================================================= #
75
+ # Anchor it at the end via $.
76
+ # ======================================================================= #
77
+ return i.sub(
78
+ /#{quoted}$/, ''
79
+ )
80
+ end; self.instance_eval { alias remove_trailing_escape_part remove_trailing_end_from } # === Colours.remove_trailing_escape_part
81
+ self.instance_eval { alias remove_trailing_ansii_escape_code remove_trailing_end_from } # === Colours.remove_trailing_ansii_escape_code
82
+ self.instance_eval { alias remove_trailing_ANSII_escape_code remove_trailing_end_from } # === Colours.remove_trailing_ANSII_escape_code
83
+ self.instance_eval { alias remove_trailing_escape_code remove_trailing_end_from } # === Colours.remove_trailing_escape_code
84
+ self.instance_eval { alias remove_trailing_code remove_trailing_end_from } # === Colours.remove_trailing_code
85
+
86
+ end
87
+
88
+ if __FILE__ == $PROGRAM_NAME
89
+ alias e puts
90
+ begin
91
+ require 'colours/autoinclude'
92
+ rescue LoadError; e 'the colours gem is not available.'; end
93
+ include Colours
94
+ e
95
+ e 'Next testing an escape sequence (which will be shown via pp only):'
96
+ e
97
+ 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]
98
+
99
+ A\e[38;2;220;20;60m|AGCTT"
100
+ pp x
101
+ e
102
+ x = Colours.remove_escape_sequence(x)
103
+ e
104
+ pp x
105
+ e x
106
+ pp Colours.remove_escape_sequences(Colours.slateblue('Hello world!')) # => "\e[38;2;106;90;205mHello world!"
107
+ p Colours.slateblue('Hello world!') # => "\e[38;2;106;90;205mHello world!\e[0;37m"
108
+ 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