colours 0.8.12 → 0.9.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +331 -200
- data/bin/colours +2 -2
- data/bin/show_basic_colour_palette +7 -0
- data/colours.gemspec +1 -2
- data/doc/README.gen +294 -178
- data/doc/how_to_pick_your_own_colours/how_to_pick_your_own_colours.md +33 -0
- data/lib/colours/autoalias_e.rb +4 -1
- data/lib/colours/autogenerated/256_colours_instance_methods.rb +1429 -0
- data/lib/colours/autogenerated/256_colours_methods.rb +1429 -0
- data/lib/colours/autogenerated/html_colours_instance_methods.rb +1191 -0
- data/lib/colours/autogenerated/html_colours_methods.rb +1191 -0
- data/lib/colours/base/base.rb +61 -13
- data/lib/colours/class/colours.rb +8 -6
- data/lib/colours/{toplevel_methods/use_colours.rb → colour/colour.rb} +4 -125
- data/lib/colours/commandline/README.md +2 -1
- data/lib/colours/commandline/commandline.rb +177 -34
- data/lib/colours/constants/constants.rb +752 -6
- data/lib/colours/e/README.md +6 -6
- data/lib/colours/eparse/eparse.rb +2 -1
- data/lib/colours/essentials/README.md +5 -0
- data/lib/colours/{basic_colours/basic_colours.rb → essentials/essentials.rb} +87 -85
- data/lib/colours/html_colours/README.md +2 -1
- data/lib/colours/html_colours/hash_html_colours.rb +168 -0
- data/lib/colours/html_colours/html_colours.rb +226 -244
- data/lib/colours/html_colours/push_the_html_colours_methods_onto_the_toplevel_namespace.rb +30 -0
- data/lib/colours/html_colours/random_html_colour.rb +67 -0
- data/lib/colours/{requires/require_the_basic_colours.rb → html_colours.rb} +4 -2
- data/lib/colours/map_symbol_to_corresponding_colour/map_symbol_to_corresponding_colour.rb +12 -10
- data/lib/colours/module_256_colours/module_256_colours.rb +465 -0
- data/lib/colours/project/project.rb +3 -1
- data/lib/colours/rainbow_colours/check_for_trollop_being_available_or_exit.rb +4 -0
- data/lib/colours/rainbow_colours/constants.rb +3 -3
- data/lib/colours/rainbow_colours/do_parse_via_rainbow_colours.rb +9 -10
- data/lib/colours/rainbow_colours/print_rainbow_line.rb +4 -4
- data/lib/colours/rainbow_colours/println_ani.rb +7 -7
- data/lib/colours/rainbow_colours/println_plain.rb +2 -2
- data/lib/colours/rainbow_colours/rainbow.rb +31 -1
- data/lib/colours/rainbow_colours/report_errors.rb +7 -7
- data/lib/colours/rainbow_colours/returnln_plain.rb +3 -3
- data/lib/colours/replace_tokens_with_colour_code/replace_tokens_with_colour_code.rb +409 -0
- data/lib/colours/requires/require_autogenerated_colour_methods.rb +4 -1
- data/lib/colours/requires/{require_the_colour_table.rb → require_essentials.rb} +2 -2
- data/lib/colours/requires/require_save_file.rb +11 -0
- data/lib/colours/requires/require_the_256_colours_module.rb +1 -3
- data/lib/colours/requires/require_the_colour_methods.rb +1 -22
- data/lib/colours/requires/require_the_project.rb +31 -29
- data/lib/colours/requires/require_the_toplevel_methods.rb +2 -20
- data/lib/colours/rgb/rgb.rb +107 -89
- data/lib/colours/{colour_methods/colour_methods.rb → sfile_sdir_sfancy_swarn_simp_scomments_and_ssymlink/sfile_sdir_sfancy_swarn_simp_scomments_and_ssymlink.rb} +467 -405
- data/lib/colours/testing/testing.rb +1 -3
- data/lib/colours/toplevel_methods/e.rb +9 -13
- data/lib/colours/toplevel_methods/map_this_symbol_to_that_html_colour.rb +57 -0
- data/lib/colours/toplevel_methods/{revert.rb → rev.rb} +5 -48
- data/lib/colours/toplevel_methods/toplevel_methods.rb +1204 -0
- data/lib/colours/version/version.rb +2 -2
- data/lib/colours/yaml/256_colours.yml +776 -257
- data/lib/colours/yaml/html_colours.yml +1 -1
- data/lib/colours/yaml/prefer_this_colour_schemata.yml +1 -1
- data/lib/colours/yaml/use_these_values_for_the_colour_methods.yml +5 -1
- data/lib/colours.rb +1 -1
- data/test/testing_256_colours_support.rb +10 -1
- data/test/testing_replace_number_words_with_the_corresponding_html_colour.rb +15 -9
- data/test/testing_the_colour_methods_such_as_simp_sdir_sfile_swarn_sfancy_sargument_and_ssymlink.rb +53 -0
- metadata +30 -57
- data/doc/HOW_TO_PICK_YOUR_OWN_COLOURS.md +0 -28
- data/lib/colours/256_colours/support_for_256_colours.rb +0 -196
- data/lib/colours/autogenerated/support_for_256_colours.rb +0 -2235
- data/lib/colours/autogenerated/support_for_html_colours.rb +0 -1778
- data/lib/colours/autogenerated/toplevel_basic_colour_methods.rb +0 -7001
- data/lib/colours/basic_colours/README.md +0 -4
- data/lib/colours/colour_methods/README.md +0 -11
- data/lib/colours/colour_table/README.md +0 -2
- data/lib/colours/colour_table/colour_table.rb +0 -282
- data/lib/colours/commandline/menu.rb +0 -122
- data/lib/colours/constants/escape.rb +0 -22
- data/lib/colours/constants/file_constants.rb +0 -73
- data/lib/colours/constants/hash_ansi_colours.rb +0 -39
- data/lib/colours/constants/hash_simple_colours.rb +0 -148
- data/lib/colours/constants/misc.rb +0 -361
- data/lib/colours/constants/newline.rb +0 -14
- data/lib/colours/constants/registered_colour_methods.rb +0 -53
- data/lib/colours/html_colours/add_html_colours_onto_the_toplevel_namespace.rb +0 -22
- data/lib/colours/toplevel_methods/autogenerate.rb +0 -310
- data/lib/colours/toplevel_methods/bold.rb +0 -41
- data/lib/colours/toplevel_methods/bold_and_italic.rb +0 -38
- data/lib/colours/toplevel_methods/cat.rb +0 -39
- data/lib/colours/toplevel_methods/clear_screen.rb +0 -18
- data/lib/colours/toplevel_methods/cliner.rb +0 -17
- data/lib/colours/toplevel_methods/col.rb +0 -54
- data/lib/colours/toplevel_methods/esystem.rb +0 -19
- data/lib/colours/toplevel_methods/html_colour_to_hex_value.rb +0 -41
- data/lib/colours/toplevel_methods/html_colourize.rb +0 -69
- data/lib/colours/toplevel_methods/is_on_roebe.rb +0 -16
- data/lib/colours/toplevel_methods/italic.rb +0 -110
- data/lib/colours/toplevel_methods/make_colour.rb +0 -28
- data/lib/colours/toplevel_methods/methods_related_to_html_colours.rb +0 -336
- data/lib/colours/toplevel_methods/misc.rb +0 -226
- data/lib/colours/toplevel_methods/open_this_file.rb +0 -26
- data/lib/colours/toplevel_methods/prefer_this_colour_schemata.rb +0 -88
- data/lib/colours/toplevel_methods/random_value.rb +0 -37
- data/lib/colours/toplevel_methods/remove_escape_sequence.rb +0 -112
- data/lib/colours/toplevel_methods/set_last_colour_used.rb +0 -32
- data/lib/colours/toplevel_methods/shell_file_containing_the_html_colours.sh +0 -148
- data/lib/colours/toplevel_methods/show_basic_colour_palette.rb +0 -36
- data/lib/colours/toplevel_methods/underline.rb +0 -130
- data/test/testing_the_colour_methods.rb +0 -36
- /data/doc/{COLOUR_CODES_CHART.md → colour_codes_chart/colour_codes_chart.md} +0 -0
@@ -1,9 +1,755 @@
|
|
1
1
|
#!/usr/bin/ruby -w
|
2
2
|
# Encoding: UTF-8
|
3
|
-
# frozen_string_literal
|
3
|
+
# frozen_string_literal = true
|
4
|
+
# =========================================================================== #
|
5
|
+
# This file primarily stores constants, including AnsiColours-related
|
6
|
+
# escape sequences. Additionally it will also store methods can refer
|
7
|
+
# or make use of these constants, such as Colours.teal(), and so forth.
|
8
|
+
#
|
9
|
+
# The different escape sequences can be combined into a single escape
|
10
|
+
# sequence by separating them via semicolons. For example, to create
|
11
|
+
# a section of text that is bold text with a yellow foreground and
|
12
|
+
# blue background, the escape sequence would be:
|
13
|
+
#
|
14
|
+
# ^[[1;33;44m
|
15
|
+
#
|
16
|
+
# Keep in mind that in bash the ESC code can be either of the following:
|
17
|
+
#
|
18
|
+
# \e
|
19
|
+
# \033 (octal)
|
20
|
+
# \x1B (hexadecimal)
|
21
|
+
#
|
22
|
+
# BOLD colour constants will have a "1" as part of their escape sequence.
|
23
|
+
# Note that the bold colours are sometimes also called the "bright colours".
|
24
|
+
# =========================================================================== #
|
25
|
+
# To see which colours are supported/supportable, for each terminal,
|
26
|
+
# have a look at this link:
|
27
|
+
#
|
28
|
+
# https://misc.flogisoft.com/bash/tip_colors_and_formatting#terminals_compatibility
|
29
|
+
#
|
30
|
+
# This wikipedia link is also somewhat useful for ANSI escape sequences
|
31
|
+
# in general:
|
32
|
+
#
|
33
|
+
# http://en.wikipedia.org/wiki/ANSI_escape_code#Colors
|
34
|
+
#
|
35
|
+
# =========================================================================== #
|
36
|
+
# This file is tested in the file
|
37
|
+
# colours/test/testing_the_basic_colours_of_the_colours_project.rb
|
4
38
|
# =========================================================================== #
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
39
|
+
# The following table shows the colour-codes for the terminal:
|
40
|
+
#
|
41
|
+
# Black 0;30 Dark Gray 1;30
|
42
|
+
# Red 0;31 Light Red 1;31
|
43
|
+
# Green 0;32 Light Green 1;32
|
44
|
+
# Yellow 0;33 Brown 1;33
|
45
|
+
# Blue 0;34 Light Blue 1;34
|
46
|
+
# Magenta 0;35 Light Magenta 1;35
|
47
|
+
# Cyan 0;36 Light Cyan 1;36
|
48
|
+
# Light Gray 0;37 White 1;37
|
49
|
+
#
|
50
|
+
# These are also stored in the Hash called HASH_SIMPLE_COLOURS.
|
51
|
+
#
|
52
|
+
# =========================================================================== #
|
53
|
+
# require 'colours/constants/constants.rb'
|
54
|
+
# Colours.file_html_colours
|
55
|
+
# Colours.file_html_colours_to_rgb?
|
56
|
+
# =========================================================================== #
|
57
|
+
module Colours
|
58
|
+
|
59
|
+
require 'colours/project/project.rb'
|
60
|
+
|
61
|
+
# ========================================================================= #
|
62
|
+
# === Colours::N
|
63
|
+
# ========================================================================= #
|
64
|
+
N = "\n"
|
65
|
+
|
66
|
+
# ========================================================================= #
|
67
|
+
# === Colours::USE_THIS_COLOUR_FOR_THE_DEFAULT_COLOUR
|
68
|
+
#
|
69
|
+
# Here we specify the default colour to be used, in order to revert
|
70
|
+
# to the prior colour in use. This can be modified by the user,
|
71
|
+
# in order to conform to other colours if said user wishes to
|
72
|
+
# do so.
|
73
|
+
# ========================================================================= #
|
74
|
+
USE_THIS_COLOUR_FOR_THE_DEFAULT_COLOUR = :grey
|
75
|
+
|
76
|
+
# ========================================================================= #
|
77
|
+
# === Colours::ESC
|
78
|
+
#
|
79
|
+
# Escape sequences start with the character ESC (ASCII decimal 27/hex
|
80
|
+
# 0x1B/octal 033).
|
81
|
+
#
|
82
|
+
# The characters ESC and [ (left bracket) are called CSI, for "Control
|
83
|
+
# Sequence Initiator".
|
84
|
+
#
|
85
|
+
# Keep in mind that "\e" can be represented via "\u001b" in Ruby, too.
|
86
|
+
# ========================================================================= #
|
87
|
+
ESC = "\e["
|
88
|
+
|
89
|
+
# ========================================================================= #
|
90
|
+
# === Colours::COLOUR_NC
|
91
|
+
#
|
92
|
+
# Note that this will actually reset all attributes.
|
93
|
+
#
|
94
|
+
# The "\e[0m" sequence removes all attributes, including formatting
|
95
|
+
# and colours. It may be useful to add it to the end of each colour
|
96
|
+
# text - and this is what the Colours project is essentially doing.
|
97
|
+
#
|
98
|
+
# An alternative may be to assign REVERT to WHITE, but this seems
|
99
|
+
# to be incorrect according to the specification.
|
100
|
+
# ========================================================================= #
|
101
|
+
COLOUR_NC = "#{ESC}0m" # No Colour. This is the reset code, aka \033[0m
|
102
|
+
REVERT = COLOUR_NC # === REVERT
|
103
|
+
REV = COLOUR_NC # === REV
|
104
|
+
CLOSING_TAG = COLOUR_NC # === CLOSING_TAG (also represented as "#{ESC}0m")
|
105
|
+
RESET = COLOUR_NC # === RESET
|
106
|
+
RESET_TERMINAL = COLOUR_NC # === RESET_TERMINAL
|
107
|
+
CLEAR = COLOUR_NC # === CLEAR
|
108
|
+
COLOUR_RESET = COLOUR_NC # === COLOUR_RESET
|
109
|
+
DEFAULT_COLOUR = COLOUR_RESET # === DEFAULT_COLOUR
|
110
|
+
|
111
|
+
# ========================================================================= #
|
112
|
+
# === RESET_ALL_ATTRIBUTES
|
113
|
+
#
|
114
|
+
# This is essentially the same as COLOUR_NC / RESET.
|
115
|
+
# ========================================================================= #
|
116
|
+
RESET_ALL_ATTRIBUTES = "\x1b[0m"
|
117
|
+
|
118
|
+
# ========================================================================= #
|
119
|
+
# === Colours::HASH_ANSI_COLOURS
|
120
|
+
# ========================================================================= #
|
121
|
+
HASH_ANSI_COLOURS = {
|
122
|
+
black: '30',
|
123
|
+
red: '31',
|
124
|
+
green: '32',
|
125
|
+
brown: '33', # This is also known as yellow.
|
126
|
+
yellow: '33',
|
127
|
+
blue: '34',
|
128
|
+
purple: '35', # Also known as magenta.
|
129
|
+
magenta: '35',
|
130
|
+
light_magenta: '35',
|
131
|
+
cyan: '36',
|
132
|
+
light_gray: '37',
|
133
|
+
grey: '37',
|
134
|
+
white: '37',
|
135
|
+
light_red: '41',
|
136
|
+
background_black: '40',
|
137
|
+
background_red: '41',
|
138
|
+
background_green: '42',
|
139
|
+
background_brown: '43',
|
140
|
+
background_yellow: '43',
|
141
|
+
background_blue: '44',
|
142
|
+
light_blue: '44', # Alias to the above ^^^.
|
143
|
+
background_purple: '45',
|
144
|
+
background_cyan: '46',
|
145
|
+
background_white: '47'
|
146
|
+
}
|
147
|
+
|
148
|
+
# ========================================================================= #
|
149
|
+
# === REGEX_REMOVE_ANSI_ESCAPE_CHARACTERS
|
150
|
+
#
|
151
|
+
# This regex can be used to get rid of (some) AnsiEscape characters.
|
152
|
+
# ========================================================================= #
|
153
|
+
REGEX_REMOVE_ANSI_ESCAPE_CHARACTERS =
|
154
|
+
/\033\[.*?m/
|
155
|
+
REMOVE_ANSI_ESCAPE_CHARACTERS = REGEX_REMOVE_ANSI_ESCAPE_CHARACTERS # === REMOVE_ANSI_ESCAPE_CHARACTERS
|
156
|
+
|
157
|
+
# ========================================================================= #
|
158
|
+
# === REGEX_FOR_HTML_COLOURS
|
159
|
+
#
|
160
|
+
# This regex supports the use case where we can match against HTML
|
161
|
+
# colours. (The name is a bit of a misnomer, though.)
|
162
|
+
#
|
163
|
+
# For the following regex, see this entry at rubular:
|
164
|
+
#
|
165
|
+
# https://rubular.com/r/o5r4DneMTGOsbX
|
166
|
+
#
|
167
|
+
# ========================================================================= #
|
168
|
+
REGEX_FOR_HTML_COLOURS =
|
169
|
+
/<([()a-zA-Z0-9²→\n]+?)>/
|
170
|
+
|
171
|
+
# ========================================================================= #
|
172
|
+
# === GENERIC_RUBY_HEADER
|
173
|
+
# ========================================================================= #
|
174
|
+
GENERIC_RUBY_HEADER = '#!/usr/bin/ruby -w
|
175
|
+
# Encoding: UTF-8
|
176
|
+
# frozen_string_literal: true
|
177
|
+
# =========================================================================== #'
|
178
|
+
RUBY_HEADER = GENERIC_RUBY_HEADER # === RUBY_HEADER
|
179
|
+
|
180
|
+
# ========================================================================= #
|
181
|
+
# === UNDERLINE_CODE
|
182
|
+
#
|
183
|
+
# To quickly test the underline-functionality, you can try:
|
184
|
+
#
|
185
|
+
# echo -e "\e[4mone two three\e[23m"
|
186
|
+
#
|
187
|
+
# ========================================================================= #
|
188
|
+
UNDERLINE_CODE = '4'
|
189
|
+
|
190
|
+
# ========================================================================= #
|
191
|
+
# === ITALIC_CODE
|
192
|
+
#
|
193
|
+
# If you wish to test italic output quickly on the terminal, then you
|
194
|
+
# can use something like this:
|
195
|
+
#
|
196
|
+
# echo -e "\e[3mone two three\e[23m and this is not in italic"
|
197
|
+
#
|
198
|
+
# ========================================================================= #
|
199
|
+
ITALIC_CODE = '3'
|
200
|
+
|
201
|
+
# ========================================================================= #
|
202
|
+
# === Colours::FILE_HTML_COLOURS
|
203
|
+
# ========================================================================= #
|
204
|
+
FILE_HTML_COLOURS =
|
205
|
+
"#{PROJECT_BASE_DIRECTORY}yaml/html_colours.yml"
|
206
|
+
|
207
|
+
# ========================================================================= #
|
208
|
+
# === Colours::FILE_KDE_COLOUR_PALETTE
|
209
|
+
# ========================================================================= #
|
210
|
+
FILE_KDE_COLOUR_PALETTE =
|
211
|
+
"#{PROJECT_BASE_DIRECTORY}yaml/kde_colour_palette.yml"
|
212
|
+
|
213
|
+
# ========================================================================= #
|
214
|
+
# === Colours::FILE_256_COLOURS
|
215
|
+
# ========================================================================= #
|
216
|
+
FILE_256_COLOURS =
|
217
|
+
"#{PROJECT_BASE_DIRECTORY}yaml/256_colours.yml"
|
218
|
+
|
219
|
+
# ========================================================================= #
|
220
|
+
# === Colours::FILE_BASIC_COLOURS
|
221
|
+
# ========================================================================= #
|
222
|
+
FILE_BASIC_COLOURS =
|
223
|
+
"#{PROJECT_BASE_DIRECTORY}yaml/basic_colours.yml"
|
224
|
+
|
225
|
+
# ========================================================================= #
|
226
|
+
# === Colours::FILE_USE_THESE_VALUES_FOR_THE_COLOUR_METHODS
|
227
|
+
# ========================================================================= #
|
228
|
+
FILE_USE_THESE_VALUES_FOR_THE_COLOUR_METHODS =
|
229
|
+
"#{PROJECT_BASE_DIRECTORY}yaml/use_these_values_for_the_colour_methods.yml"
|
230
|
+
|
231
|
+
# ========================================================================= #
|
232
|
+
# === Colours::FILE_PREFER_THIS_COLOUR_SCHEMATA
|
233
|
+
# ========================================================================= #
|
234
|
+
FILE_PREFER_THIS_COLOUR_SCHEMATA =
|
235
|
+
"#{PROJECT_BASE_DIRECTORY}yaml/prefer_this_colour_schemata.yml"
|
236
|
+
|
237
|
+
# ========================================================================= #
|
238
|
+
# === Colours.file_html_colours_to_rgb?
|
239
|
+
#
|
240
|
+
# Easier toplevel-getter method to determine where the file for
|
241
|
+
# the html-colours-to-rgb conversion resides.
|
242
|
+
# ========================================================================= #
|
243
|
+
def self.file_html_colours_to_rgb?
|
244
|
+
"#{PROJECT_BASE_DIRECTORY}yaml/html_colours.yml"
|
245
|
+
end; self.instance_eval { alias file_html_colours file_html_colours_to_rgb? } # === Colours.file_html_colours
|
246
|
+
self.instance_eval { alias file_html_colours? file_html_colours_to_rgb? } # === Colours.file_html_colours?
|
247
|
+
|
248
|
+
# ========================================================================= #
|
249
|
+
# === Colours.available_file_constants
|
250
|
+
# ========================================================================= #
|
251
|
+
def self.available_file_constants
|
252
|
+
[
|
253
|
+
FILE_HTML_COLOURS, # colours/yaml/html_colours.yml
|
254
|
+
FILE_KDE_COLOUR_PALETTE, # colours/yaml/kde_colour_palette.yml
|
255
|
+
FILE_256_COLOURS # colours/yaml/256_colours.yml
|
256
|
+
]
|
257
|
+
end
|
258
|
+
|
259
|
+
# ========================================================================= #
|
260
|
+
# === Colours::REGISTERED_COLOUR_METHODS
|
261
|
+
#
|
262
|
+
# These methods constitute the registered colour methods.
|
263
|
+
#
|
264
|
+
# These have a corresponding method, such as snormal() or sdir() or
|
265
|
+
# sfile().
|
266
|
+
#
|
267
|
+
# snormal() stands for the "normal" colour, aka the "default
|
268
|
+
# colour".
|
269
|
+
# ========================================================================= #
|
270
|
+
REGISTERED_COLOUR_METHODS = %i(
|
271
|
+
snormal
|
272
|
+
sargument
|
273
|
+
scomments
|
274
|
+
ssymlink
|
275
|
+
sdir
|
276
|
+
sfile
|
277
|
+
sfancy
|
278
|
+
simportant
|
279
|
+
swarn
|
280
|
+
)
|
281
|
+
|
282
|
+
# ========================================================================= #
|
283
|
+
# === Colours::REGISTERED_COLOUR_METHODS_ALIASES
|
284
|
+
#
|
285
|
+
# This Array should hold all aliases to the main colour-methods,
|
286
|
+
# such as simportant() or sargument().
|
287
|
+
# ========================================================================= #
|
288
|
+
REGISTERED_COLOUR_METHODS_ALIASES = %i(
|
289
|
+
argument
|
290
|
+
ssym
|
291
|
+
simp
|
292
|
+
sarg
|
293
|
+
normal
|
294
|
+
comments
|
295
|
+
symlink
|
296
|
+
dir
|
297
|
+
file
|
298
|
+
fancy
|
299
|
+
important
|
300
|
+
warn
|
301
|
+
)
|
302
|
+
|
303
|
+
# ========================================================================= #
|
304
|
+
# === Colours::HASH_SIMPLE_COLOURS
|
305
|
+
#
|
306
|
+
# This hash will only store one name for the corresponding colour code.
|
307
|
+
# ========================================================================= #
|
308
|
+
HASH_SIMPLE_COLOURS = {
|
309
|
+
black: '0;30',
|
310
|
+
red: '0;31',
|
311
|
+
green: '0;32',
|
312
|
+
yellow: '0;33',
|
313
|
+
blue: '0;34',
|
314
|
+
magenta: '0;35',
|
315
|
+
cyan: '0;36',
|
316
|
+
light_gray: '0;37',
|
317
|
+
# ======================================================================= #
|
318
|
+
# Next, the secondary-colours:
|
319
|
+
# ======================================================================= #
|
320
|
+
dark_gray: '1;30',
|
321
|
+
light_red: '1;31',
|
322
|
+
light_green: '1;32',
|
323
|
+
brown: '1;33',
|
324
|
+
light_blue: '1;34',
|
325
|
+
light_magenta: '1;35',
|
326
|
+
light_cyan: '1;36',
|
327
|
+
white: '1;37'
|
328
|
+
}
|
329
|
+
|
330
|
+
# ========================================================================= #
|
331
|
+
# === Colours::MAIN_COLOURS
|
332
|
+
#
|
333
|
+
# The main colours come next.
|
334
|
+
#
|
335
|
+
# Eight main colours are currently defined, according to:
|
336
|
+
#
|
337
|
+
# http://en.wikipedia.org/wiki/ANSI_escape_code#Colors
|
338
|
+
#
|
339
|
+
# The range is:
|
340
|
+
#
|
341
|
+
# Intensity: 0 1 2 3 4 5 6 7
|
342
|
+
# Normal: Black Red Green Yellow Blue Magenta Cyan White
|
343
|
+
#
|
344
|
+
# Yellow, in my opinion, looks more like brown.
|
345
|
+
# ========================================================================= #
|
346
|
+
MAIN_COLOURS = %i(
|
347
|
+
black red green yellow blue magenta teal white
|
348
|
+
) # ^^^ An Array of Symbols.
|
349
|
+
|
350
|
+
# ========================================================================= #
|
351
|
+
# === Colours.available_main_colours?
|
352
|
+
#
|
353
|
+
# Feedback which main colours are available.
|
354
|
+
# ========================================================================= #
|
355
|
+
def self.available_main_colours?
|
356
|
+
MAIN_COLOURS
|
357
|
+
end; self.instance_eval { alias available_basic_colours? available_main_colours? } # === Colours.available_basic_colours?
|
358
|
+
|
359
|
+
# ========================================================================= #
|
360
|
+
# === main_colours
|
361
|
+
#
|
362
|
+
# This will return an Array with the symbols such as
|
363
|
+
# :black, :red etc..
|
364
|
+
# ========================================================================= #
|
365
|
+
def main_colours
|
366
|
+
::Colours.available_main_colours?
|
367
|
+
end
|
368
|
+
|
369
|
+
# ========================================================================= #
|
370
|
+
# === Colours::SECONDARY_COLOURS
|
371
|
+
#
|
372
|
+
# The secondary Colours.
|
373
|
+
#
|
374
|
+
# Colours which are not part of the MAIN_COLOURS Array.
|
375
|
+
#
|
376
|
+
# The secondary colours are:
|
377
|
+
#
|
378
|
+
# Bright Black
|
379
|
+
# Bright Red
|
380
|
+
# Bright Green
|
381
|
+
# Bright Yellow
|
382
|
+
# Bright Blue
|
383
|
+
# Bright Magenta
|
384
|
+
# Bright Cyan
|
385
|
+
# Bright White
|
386
|
+
#
|
387
|
+
# ========================================================================= #
|
388
|
+
SECONDARY_COLOURS = [
|
389
|
+
:bright_black,
|
390
|
+
:bright_red,
|
391
|
+
:bright_green,
|
392
|
+
:bright_yellow,
|
393
|
+
:bright_blue,
|
394
|
+
:bright_magenta,
|
395
|
+
:bright_cyan,
|
396
|
+
:bright_white
|
397
|
+
]
|
398
|
+
|
399
|
+
# ========================================================================= #
|
400
|
+
# === ALL_COLOURS
|
401
|
+
#
|
402
|
+
# Simply combine the two Arrays, MAIN_COLOURS and SECONDARY_COLOURS,
|
403
|
+
# into one aggregate Array.
|
404
|
+
# ========================================================================= #
|
405
|
+
ALL_COLOURS = MAIN_COLOURS +
|
406
|
+
SECONDARY_COLOURS
|
407
|
+
|
408
|
+
# ========================================================================= #
|
409
|
+
# === Colours.really_all_colours
|
410
|
+
#
|
411
|
+
# This method will return an Array that may look like this:
|
412
|
+
#
|
413
|
+
# [:black, :red, :green, :yellow, :blue, :magenta, :teal,
|
414
|
+
# :white, :bright_black, :bright_red, :bright_green,
|
415
|
+
# :bright_yellow, :bright_blue, :bright_magenta,
|
416
|
+
# :bright_cyan, :bright_white]
|
417
|
+
#
|
418
|
+
# ========================================================================= #
|
419
|
+
def self.really_all_colours
|
420
|
+
ALL_COLOURS # This is the conjoint Array.
|
421
|
+
end; self.instance_eval { alias all_available_colours really_all_colours } # === Colours.all_available_colours
|
422
|
+
|
423
|
+
# ========================================================================= #
|
424
|
+
# === Colours.is_a_valid_colour?
|
425
|
+
#
|
426
|
+
# This method allows you to check if a given input-string is a
|
427
|
+
# valid colour.
|
428
|
+
#
|
429
|
+
# A "valid" colour is one that the colours project supports.
|
430
|
+
#
|
431
|
+
# For example, the string "lightblue" is a valid colour.
|
432
|
+
#
|
433
|
+
# Usage example:
|
434
|
+
#
|
435
|
+
# Colours.is_a_valid_colour? 'lightblue'
|
436
|
+
#
|
437
|
+
# ========================================================================= #
|
438
|
+
def self.is_a_valid_colour?(i)
|
439
|
+
ALL_COLOURS.include? i.to_sym
|
440
|
+
end
|
441
|
+
|
442
|
+
# ========================================================================= #
|
443
|
+
# === Colours::REDRAW_THE_PROMPT
|
444
|
+
#
|
445
|
+
# The following constant is necessary in order for the background colour
|
446
|
+
# to apply to the whole line and in order for the foreground colour to
|
447
|
+
# apply to the cursor.
|
448
|
+
# ========================================================================= #
|
449
|
+
REDRAW_THE_PROMPT = "\e[K"
|
450
|
+
|
451
|
+
# ========================================================================= #
|
452
|
+
# === Colours::HOME_DIRECTORY_OF_USER_X
|
453
|
+
#
|
454
|
+
# This constant is only useful on my home system.
|
455
|
+
# ========================================================================= #
|
456
|
+
HOME_DIRECTORY_OF_USER_X = '/home/x/'
|
457
|
+
|
458
|
+
# ========================================================================= #
|
459
|
+
# === Colours::DEFAULT_TEXT
|
460
|
+
# ========================================================================= #
|
461
|
+
DEFAULT_TEXT = 'Hello World!'
|
462
|
+
|
463
|
+
# ========================================================================= #
|
464
|
+
# === Colours::IS_A_TEST
|
465
|
+
# ========================================================================= #
|
466
|
+
IS_A_TEST = ' This is just a simple colour test.'
|
467
|
+
|
468
|
+
# ========================================================================= #
|
469
|
+
# === Colours::TEST_FILE
|
470
|
+
# ========================================================================= #
|
471
|
+
TEST_FILE =
|
472
|
+
"#{HOME_DIRECTORY_OF_USER_X}programming/ruby/src/colours/test/testing_konsole_submodule.rb"
|
473
|
+
|
474
|
+
# ========================================================================= #
|
475
|
+
# === LEFT
|
476
|
+
#
|
477
|
+
# Leading on the left side, for RGB value setting. This is the beginning
|
478
|
+
# of a special instruction. Note that "\e[38" should be equal to "\x1b",
|
479
|
+
# but IRB reports that this is not the case so.
|
480
|
+
#
|
481
|
+
# Examples on the www show usage such as this:
|
482
|
+
#
|
483
|
+
# printf "\x1b[${bg};2;${red};${green};${blue}m\n"
|
484
|
+
# printf "\x1b[38;2;255;100;0mTRUECOLOR\x1b[0m\n"
|
485
|
+
#
|
486
|
+
# ========================================================================= #
|
487
|
+
LEFT = "\e[38;2;".dup
|
488
|
+
|
489
|
+
# ========================================================================= #
|
490
|
+
# === Colours.left?
|
491
|
+
# ========================================================================= #
|
492
|
+
def self.left?
|
493
|
+
LEFT
|
494
|
+
end
|
495
|
+
|
496
|
+
# ========================================================================= #
|
497
|
+
# === left?
|
498
|
+
# ========================================================================= #
|
499
|
+
def left?
|
500
|
+
Colours.left?
|
501
|
+
end
|
502
|
+
|
503
|
+
# ========================================================================= #
|
504
|
+
# === COLOUR_BLACK
|
505
|
+
# ========================================================================= #
|
506
|
+
COLOUR_BLACK = "#{ESC}0;30m"
|
507
|
+
COLOUR_GRAY = COLOUR_BLACK # === COLOUR_GRAY
|
508
|
+
BLACK = COLOUR_BLACK # === BLACK
|
509
|
+
|
510
|
+
# ========================================================================= #
|
511
|
+
# === COLOUR_LIGHT_CYAN
|
512
|
+
# ========================================================================= #
|
513
|
+
COLOUR_LIGHT_CYAN = "#{ESC}1;36m"
|
514
|
+
BOLD_CYAN = COLOUR_LIGHT_CYAN # === BOLD_CYAN
|
515
|
+
COLOUR_BOLD_TEAL = COLOUR_LIGHT_CYAN # === COLOUR_BOLD_TEAL
|
516
|
+
BRIGHT_CYAN = COLOUR_LIGHT_CYAN # === BRIGHT_CYAN
|
517
|
+
BRIGHT_TEAL = COLOUR_LIGHT_CYAN # === BRIGHT_TEAL
|
518
|
+
CYANB = COLOUR_LIGHT_CYAN # === CYANB
|
519
|
+
BOLD_TEAL = COLOUR_LIGHT_CYAN # === BOLD_TEAL
|
520
|
+
|
521
|
+
# ========================================================================= #
|
522
|
+
# === COLOUR_CYAN
|
523
|
+
#
|
524
|
+
# This is also called TEAL, sort of.
|
525
|
+
# ========================================================================= #
|
526
|
+
COLOUR_CYAN = "#{ESC}0;36m"
|
527
|
+
TEAL = COLOUR_CYAN # === TEAL
|
528
|
+
CYAN = COLOUR_CYAN # === CYAN
|
529
|
+
COLOUR_TEAL = COLOUR_CYAN # === COLOUR_TEAL
|
530
|
+
|
531
|
+
# ========================================================================= #
|
532
|
+
# === COLOUR_BROWN
|
533
|
+
# ========================================================================= #
|
534
|
+
COLOUR_BROWN = "#{ESC}1;33m"
|
535
|
+
BOLD_YELLOW = COLOUR_BROWN # === BOLD_YELLOW
|
536
|
+
GOLD = COLOUR_BROWN # === GOLD
|
537
|
+
BRIGHT_BROWN = COLOUR_BROWN # === BRIGHT_BROWN
|
538
|
+
BRIGHT_YELLOW = COLOUR_BROWN # === BRIGHT_YELLOW
|
539
|
+
BOLDYELLOW = COLOUR_BROWN # === BOLDYELLOW
|
540
|
+
BYEL = COLOUR_BROWN # === BYEL
|
541
|
+
BYELLOW = COLOUR_BROWN # === BYELLOW
|
542
|
+
COLOUR_BOLD_YELLOW = COLOUR_BROWN # === COLOUR_BOLD_YELLOW
|
543
|
+
|
544
|
+
# ========================================================================= #
|
545
|
+
# === COLOUR_LIGHT_GRAY
|
546
|
+
#
|
547
|
+
# This is also known as white.
|
548
|
+
# ========================================================================= #
|
549
|
+
COLOUR_LIGHT_GRAY = "#{ESC}0;37m"
|
550
|
+
WHITE = COLOUR_LIGHT_GRAY # === WHITE
|
551
|
+
COLOUR_LIGHT_GREY = COLOUR_LIGHT_GRAY # === COLOUR_LIGHT_GREY
|
552
|
+
|
553
|
+
# ========================================================================= #
|
554
|
+
# === COLOUR_WHITE
|
555
|
+
#
|
556
|
+
# This is bold white, actually.
|
557
|
+
# ========================================================================= #
|
558
|
+
COLOUR_WHITE = "#{ESC}1;37m"
|
559
|
+
BOLD_WHITE = COLOUR_WHITE # === BOLD_WHITE
|
560
|
+
BRIGHT_WHITE = COLOUR_WHITE # === BRIGHT_WHITE
|
561
|
+
BWHITE = COLOUR_WHITE # === BWHITE
|
562
|
+
COLOUR_BOLD_WHITE = COLOUR_WHITE # === COLOUR_BOLD_WHITE
|
563
|
+
|
564
|
+
# ========================================================================= #
|
565
|
+
# === COLOUR_DARK_GRAY
|
566
|
+
#
|
567
|
+
# This is also called "black bold".
|
568
|
+
# ========================================================================= #
|
569
|
+
COLOUR_DARK_GRAY = "#{ESC}1;30m"
|
570
|
+
GREY = COLOUR_DARK_GRAY # === GREY
|
571
|
+
GRAY = COLOUR_DARK_GRAY # === GRAY
|
572
|
+
CGREY = COLOUR_DARK_GRAY # === CGREY
|
573
|
+
BRIGHT_BLACK = COLOUR_DARK_GRAY # === BRIGHT_BLACK
|
574
|
+
BOLD_BLACK = COLOUR_DARK_GRAY # === BOLD_BLACK
|
575
|
+
|
576
|
+
# ========================================================================= #
|
577
|
+
# == COLOUR_RED (red tag)
|
578
|
+
# ========================================================================= #
|
579
|
+
COLOUR_RED = "#{ESC}0;31m" # This is thin, darkred.
|
580
|
+
RED = COLOUR_RED # === RED
|
581
|
+
CRED = COLOUR_RED # === CRED
|
582
|
+
|
583
|
+
# ========================================================================= #
|
584
|
+
# === COLOUR_GREEN
|
585
|
+
# ========================================================================= #
|
586
|
+
COLOUR_GREEN = "#{ESC}0;32m" # This is lightgreen.
|
587
|
+
GREEN = COLOUR_GREEN # === GREEN
|
588
|
+
CGREEN = COLOUR_GREEN # === CGREEN
|
589
|
+
DARKGREEN = COLOUR_GREEN # === DARKGREEN
|
590
|
+
|
591
|
+
# ========================================================================= #
|
592
|
+
# === COLOUR_BLUE
|
593
|
+
# ========================================================================= #
|
594
|
+
COLOUR_BLUE = "#{ESC}0;34m"
|
595
|
+
BLUE = COLOUR_BLUE # === BLUE
|
596
|
+
|
597
|
+
# ========================================================================= #
|
598
|
+
# === COLOUR_LIGHT_GREEN
|
599
|
+
# ========================================================================= #
|
600
|
+
COLOUR_LIGHT_GREEN = "#{ESC}1;32m"
|
601
|
+
BOLD_GREEN = COLOUR_LIGHT_GREEN # === BOLD_GREEN
|
602
|
+
COLOUR_BOLD_GREEN = COLOUR_LIGHT_GREEN # === COLOUR_BOLD_GREEN
|
603
|
+
BRIGHT_GREEN = COLOUR_LIGHT_GREEN # === BRIGHT_GREEN
|
604
|
+
LIGHTGREEN = COLOUR_LIGHT_GREEN # === LIGHTGREEN
|
605
|
+
BGREEN = COLOUR_LIGHT_GREEN # === BGREEN
|
606
|
+
|
607
|
+
# ========================================================================= #
|
608
|
+
# === COLOUR_MAGENTA
|
609
|
+
# ========================================================================= #
|
610
|
+
COLOUR_MAGENTA = "#{ESC}0;35m"
|
611
|
+
PURPLE = COLOUR_MAGENTA # === PURPLE
|
612
|
+
COLOUR_PURPLE = COLOUR_MAGENTA # === COLOUR_PURPLE
|
613
|
+
MAGENTA = COLOUR_MAGENTA # === MAGENTA
|
614
|
+
|
615
|
+
# ========================================================================= #
|
616
|
+
# === COLOUR_LIGHT_BLUE
|
617
|
+
#
|
618
|
+
# This is also known as "bold blue".
|
619
|
+
# ========================================================================= #
|
620
|
+
COLOUR_LIGHT_BLUE = "#{ESC}1;34m"
|
621
|
+
BOLD_BLUE = COLOUR_LIGHT_BLUE # === BOLD_BLUE
|
622
|
+
COLOUR_BOLD_BLUE = COLOUR_LIGHT_BLUE # === COLOUR_BOLD_BLUE
|
623
|
+
BRIGHT_BLUE = COLOUR_LIGHT_BLUE # === BRIGHT_BLUE
|
624
|
+
LIGHT_BLUE = COLOUR_LIGHT_BLUE # === LIGHT_BLUE
|
625
|
+
LIGHTBLUE = COLOUR_LIGHT_BLUE # === LIGHTBLUE
|
626
|
+
BBLUE = COLOUR_LIGHT_BLUE # === BBLUE
|
627
|
+
BOLDBLUE = COLOUR_LIGHT_BLUE # === BOLDBLUE
|
628
|
+
|
629
|
+
# ========================================================================= #
|
630
|
+
# === Colours::BLACK_ON_WHITE_BACKGROUND
|
631
|
+
#
|
632
|
+
# Usage example:
|
633
|
+
#
|
634
|
+
# puts Colours::BLACK_ON_WHITE_BACKGROUND+'Hello world!'+Colours::RESET
|
635
|
+
#
|
636
|
+
# ========================================================================= #
|
637
|
+
BLACK_ON_WHITE_BACKGROUND = "#{ESC}0;30;47m"
|
638
|
+
BLACK_ON_WHITE_BG = BLACK_ON_WHITE_BACKGROUND # === BLACK_ON_WHITE_BG
|
639
|
+
|
640
|
+
# ========================================================================= #
|
641
|
+
# === COLOUR_YELLOW
|
642
|
+
# ========================================================================= #
|
643
|
+
COLOUR_YELLOW = "#{ESC}0;33m"
|
644
|
+
BROWN = COLOUR_YELLOW # === BROWN
|
645
|
+
YEL = COLOUR_YELLOW # === YEL
|
646
|
+
YELLOW = COLOUR_YELLOW # === YELLOW
|
647
|
+
BOLD_BROWN = COLOUR_YELLOW # === BOLD_BROWN
|
648
|
+
|
649
|
+
# ========================================================================= #
|
650
|
+
# === COLOUR_LIGHT_MAGENTA
|
651
|
+
#
|
652
|
+
# This is not the "normal" magenta, but the light variant; also
|
653
|
+
# called light purple.
|
654
|
+
# ========================================================================= #
|
655
|
+
COLOUR_LIGHT_MAGENTA = "#{ESC}1;35m"
|
656
|
+
LIGHT_PURPLE = COLOUR_LIGHT_MAGENTA # === LIGHT_PURPLE
|
657
|
+
COLOUR_LIGHT_PURPLE = COLOUR_LIGHT_MAGENTA # === COLOUR_LIGHT_PURPLE
|
658
|
+
PINK = COLOUR_LIGHT_MAGENTA # === PINK
|
659
|
+
COLOUR_PINK = COLOUR_LIGHT_MAGENTA # === COLOUR_PINK
|
660
|
+
BRIGHT_PINK = COLOUR_LIGHT_MAGENTA # === BRIGHT_PINK
|
661
|
+
BRIGHT_MAGENTA = COLOUR_LIGHT_MAGENTA # === BRIGHT_MAGENTA
|
662
|
+
|
663
|
+
# ========================================================================= #
|
664
|
+
# === Colours::COLOUR_LIGHT_RED
|
665
|
+
# ========================================================================= #
|
666
|
+
COLOUR_LIGHT_RED = "#{ESC}1;31m"
|
667
|
+
LIGHT_RED = COLOUR_LIGHT_RED # === LIGHT_RED
|
668
|
+
BOLD_RED = COLOUR_LIGHT_RED # === BOLD_RED
|
669
|
+
COLOUR_BOLD_RED = COLOUR_LIGHT_RED # === COLOUR_BOLD_RED
|
670
|
+
BRIGHT_RED = COLOUR_LIGHT_RED # === BRIGHT_RED
|
671
|
+
BOLDRED = COLOUR_LIGHT_RED # === BOLDRED
|
672
|
+
REDB = COLOUR_LIGHT_RED # === REDB
|
673
|
+
BRED = COLOUR_LIGHT_RED # === BRED
|
674
|
+
|
675
|
+
# ========================================================================= #
|
676
|
+
# === ARRAY_REGISTERED_ANSI_COLOURS
|
677
|
+
#
|
678
|
+
# This array exists mostly for testing-purposes.
|
679
|
+
# ========================================================================= #
|
680
|
+
ARRAY_REGISTERED_ANSI_COLOURS = [
|
681
|
+
|
682
|
+
COLOUR_BLACK,
|
683
|
+
COLOUR_RED,
|
684
|
+
COLOUR_GREEN,
|
685
|
+
COLOUR_YELLOW,
|
686
|
+
COLOUR_BLUE,
|
687
|
+
COLOUR_MAGENTA,
|
688
|
+
COLOUR_TEAL,
|
689
|
+
COLOUR_LIGHT_GREY,
|
690
|
+
|
691
|
+
COLOUR_BOLD_RED,
|
692
|
+
COLOUR_BOLD_GREEN,
|
693
|
+
COLOUR_BOLD_YELLOW,
|
694
|
+
COLOUR_BOLD_BLUE,
|
695
|
+
COLOUR_PINK,
|
696
|
+
COLOUR_BOLD_TEAL,
|
697
|
+
COLOUR_BOLD_WHITE,
|
698
|
+
|
699
|
+
COLOUR_RESET
|
700
|
+
|
701
|
+
]
|
702
|
+
|
703
|
+
# ========================================================================= #
|
704
|
+
# === Colours.file_256_colours
|
705
|
+
#
|
706
|
+
# This method will return the path to the .yml file containing the
|
707
|
+
# data for the 256-colours variant.
|
708
|
+
# ========================================================================= #
|
709
|
+
def self.file_256_colours
|
710
|
+
FILE_256_COLOURS
|
711
|
+
end
|
712
|
+
|
713
|
+
end
|
714
|
+
|
715
|
+
if __FILE__ == $PROGRAM_NAME
|
716
|
+
alias e puts
|
717
|
+
include Colours
|
718
|
+
e
|
719
|
+
# pp Colours::COLOUR_NC == "\033[0m" # yup, this is true, as confirmed in November 2023.
|
720
|
+
pp Colours.available_file_constants
|
721
|
+
e
|
722
|
+
e 'The registered colour methods are:'
|
723
|
+
e
|
724
|
+
pp Colours::REGISTERED_COLOUR_METHODS
|
725
|
+
e
|
726
|
+
e 'My home directory: '+Colours::HOME_DIRECTORY_OF_USER_X
|
727
|
+
e
|
728
|
+
e Colours::COLOUR_LIGHT_RED+'Testing light red here.'
|
729
|
+
e
|
730
|
+
e CYAN+'Hi there.'+RESET
|
731
|
+
e BWHITE+'Hi there.'+BBLUE+' Yo there.'+RESET
|
732
|
+
e WHITE+'Hi there.'+BBLUE+' Yo there.'+RESET
|
733
|
+
e BLACK_ON_WHITE_BACKGROUND+'Hello world!'+RESET
|
734
|
+
e BRIGHT_RED+'Hi there.'+BBLUE+' Yo there.'+RESET
|
735
|
+
e BRIGHT_BLUE+'Hi there.'+BWHITE+' Yo there.'+RESET
|
736
|
+
e
|
737
|
+
e 'And testing individual colours for the characters next:'
|
738
|
+
e
|
739
|
+
e BLACK+' A '+
|
740
|
+
RED+' B '+
|
741
|
+
GREEN+' C '+
|
742
|
+
BROWN+' D '+
|
743
|
+
BLUE+' E '+
|
744
|
+
MAGENTA+' F '+
|
745
|
+
TEAL+' G '+
|
746
|
+
WHITE+' H '+
|
747
|
+
RESET
|
748
|
+
e
|
749
|
+
e 'Same as above but with the bright colours instead:'
|
750
|
+
e
|
751
|
+
e BRIGHT_BLACK+' A '+BRIGHT_RED+' B '+BRIGHT_GREEN+' C '+
|
752
|
+
BRIGHT_BROWN+' D '+BRIGHT_BLUE+' E '+BRIGHT_MAGENTA+
|
753
|
+
' F '+BRIGHT_TEAL+' G '+BRIGHT_WHITE+' H '+RESET
|
754
|
+
e
|
755
|
+
end
|