colours 0.5.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of colours might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/LICENCE.md +22 -0
- data/README.md +862 -0
- data/bin/colours +7 -0
- data/bin/html_colour_to_hex_value +7 -0
- data/bin/html_colourize +7 -0
- data/bin/print_rainbow_line +7 -0
- data/bin/rainbow_colours +7 -0
- data/colours.gemspec +75 -0
- data/doc/COLOUR_CODES_CHART.md +28 -0
- data/doc/HOW_TO_PICK_YOUR_OWN_COLOURS.md +29 -0
- data/doc/README.gen +845 -0
- data/lib/colours/256_colours/support_for_256_colours.rb +180 -0
- data/lib/colours/autoalias_e.rb +10 -0
- data/lib/colours/autogenerated/README.md +2 -0
- data/lib/colours/autogenerated/support_for_256_colours.rb +2235 -0
- data/lib/colours/autogenerated/support_for_html_colours.rb +1778 -0
- data/lib/colours/autogenerated/toplevel_basic_colour_methods.rb +6366 -0
- data/lib/colours/autoinclude.rb +14 -0
- data/lib/colours/base/base.rb +23 -0
- data/lib/colours/basic_colours/README.md +4 -0
- data/lib/colours/basic_colours/basic_colours.rb +279 -0
- data/lib/colours/colour_methods/README.md +11 -0
- data/lib/colours/colour_methods/default_colour.rb +66 -0
- data/lib/colours/colour_methods/sargument.rb +70 -0
- data/lib/colours/colour_methods/scomments.rb +105 -0
- data/lib/colours/colour_methods/sdir.rb +66 -0
- data/lib/colours/colour_methods/sfancy.rb +84 -0
- data/lib/colours/colour_methods/sfile.rb +71 -0
- data/lib/colours/colour_methods/simportant.rb +92 -0
- data/lib/colours/colour_methods/snormal.rb +66 -0
- data/lib/colours/colour_methods/ssymlink.rb +102 -0
- data/lib/colours/colour_methods/swarn.rb +76 -0
- data/lib/colours/colour_table/README.md +3 -0
- data/lib/colours/colour_table/colour_table.rb +275 -0
- data/lib/colours/colours_e_autoinclude.rb +9 -0
- data/lib/colours/commandline/README.md +2 -0
- data/lib/colours/commandline/commandline.rb +44 -0
- data/lib/colours/commandline/menu.rb +111 -0
- data/lib/colours/constants/colour_constants.rb +299 -0
- data/lib/colours/constants/file_constants.rb +72 -0
- data/lib/colours/constants/hash_simple_colours.rb +146 -0
- data/lib/colours/constants/misc.rb +59 -0
- data/lib/colours/constants/newline.rb +14 -0
- data/lib/colours/constants/registered_colour_methods.rb +53 -0
- data/lib/colours/e/README.md +13 -0
- data/lib/colours/e/autoinclude.rb +11 -0
- data/lib/colours/e/e.rb +35 -0
- data/lib/colours/e.rb +5 -0
- data/lib/colours/eparse/eparse.rb +77 -0
- data/lib/colours/everything/autoinclude.rb +11 -0
- data/lib/colours/html_colours/README.md +1 -0
- data/lib/colours/html_colours/add_html_colours_onto_the_toplevel_namespace.rb +22 -0
- data/lib/colours/html_colours/hash_html_colours.rb +63 -0
- data/lib/colours/html_colours/html_colourize.rb +48 -0
- data/lib/colours/html_colours/is_this_html_colour_included.rb +64 -0
- data/lib/colours/html_colours/misc.rb +186 -0
- data/lib/colours/html_colours/show_html_colours.rb +85 -0
- data/lib/colours/kde_colour_palette/kde_colour_palette.rb +128 -0
- data/lib/colours/map_symbol_to_corresponding_colour/map_symbol_to_corresponding_colour.rb +219 -0
- data/lib/colours/module.rb +11 -0
- data/lib/colours/project/project_base_directory.rb +22 -0
- data/lib/colours/rainbow_colours/README.md +2 -0
- data/lib/colours/rainbow_colours/check_for_trollop_being_available_or_exit.rb +26 -0
- data/lib/colours/rainbow_colours/constants.rb +30 -0
- data/lib/colours/rainbow_colours/do_parse_via_rainbow_colours.rb +164 -0
- data/lib/colours/rainbow_colours/paint_detected_mode.rb +20 -0
- data/lib/colours/rainbow_colours/print_rainbow_line.rb +68 -0
- data/lib/colours/rainbow_colours/println_ani.rb +32 -0
- data/lib/colours/rainbow_colours/println_plain.rb +36 -0
- data/lib/colours/rainbow_colours/rainbow.rb +38 -0
- data/lib/colours/rainbow_colours/report_errors.rb +32 -0
- data/lib/colours/rainbow_colours/returnln_plain.rb +63 -0
- data/lib/colours/rainbow_colours/set_mode.rb +24 -0
- data/lib/colours/requires/require_all_colour_methods.rb +5 -0
- data/lib/colours/requires/require_commandline.rb +7 -0
- data/lib/colours/requires/require_eparse.rb +11 -0
- data/lib/colours/requires/require_rgb.rb +5 -0
- data/lib/colours/requires/require_sdir.rb +5 -0
- data/lib/colours/requires/require_sfile.rb +5 -0
- data/lib/colours/requires/require_the_256_colours_module.rb +16 -0
- data/lib/colours/requires/require_the_basic_colours.rb +7 -0
- data/lib/colours/requires/require_the_colour_methods.rb +34 -0
- data/lib/colours/requires/require_the_colour_table.rb +7 -0
- data/lib/colours/requires/require_the_colours_project.rb +52 -0
- data/lib/colours/requires/require_the_constants.rb +11 -0
- data/lib/colours/requires/require_the_html_colours.rb +11 -0
- data/lib/colours/requires/require_the_kde_colour_palette.rb +7 -0
- data/lib/colours/requires/require_the_toplevel_methods.rb +42 -0
- data/lib/colours/revert/revert.rb +106 -0
- data/lib/colours/rgb/rgb.rb +538 -0
- data/lib/colours/testing/README.md +2 -0
- data/lib/colours/testing/testing.rb +157 -0
- data/lib/colours/toplevel_methods/bold.rb +35 -0
- data/lib/colours/toplevel_methods/bold_and_italic.rb +36 -0
- data/lib/colours/toplevel_methods/cat.rb +39 -0
- data/lib/colours/toplevel_methods/clear_screen.rb +18 -0
- data/lib/colours/toplevel_methods/cliner.rb +19 -0
- data/lib/colours/toplevel_methods/col.rb +56 -0
- data/lib/colours/toplevel_methods/e.rb +63 -0
- data/lib/colours/toplevel_methods/esystem.rb +19 -0
- data/lib/colours/toplevel_methods/fancy_parse.rb +79 -0
- data/lib/colours/toplevel_methods/html_colourize.rb +65 -0
- data/lib/colours/toplevel_methods/is_on_roebe.rb +16 -0
- data/lib/colours/toplevel_methods/italic.rb +104 -0
- data/lib/colours/toplevel_methods/make_colour.rb +29 -0
- data/lib/colours/toplevel_methods/methods_related_to_html_colours.rb +314 -0
- data/lib/colours/toplevel_methods/misc.rb +95 -0
- data/lib/colours/toplevel_methods/open_this_file.rb +26 -0
- data/lib/colours/toplevel_methods/prefer_this_colour_schemata.rb +80 -0
- data/lib/colours/toplevel_methods/random_html_colour.rb +44 -0
- data/lib/colours/toplevel_methods/random_value.rb +37 -0
- data/lib/colours/toplevel_methods/remove_escape_sequence.rb +107 -0
- data/lib/colours/toplevel_methods/show_basic_colour_palette.rb +36 -0
- data/lib/colours/toplevel_methods/underline.rb +114 -0
- data/lib/colours/toplevel_methods/use_colours.rb +311 -0
- data/lib/colours/utility_scripts/README.md +2 -0
- data/lib/colours/utility_scripts/autogenerate.rb +291 -0
- data/lib/colours/version/version.rb +25 -0
- data/lib/colours/yaml/256_colours.yml +277 -0
- data/lib/colours/yaml/basic_colours.yml +23 -0
- data/lib/colours/yaml/html_colours.yml +835 -0
- data/lib/colours/yaml/kde_colour_palette.yml +183 -0
- data/lib/colours/yaml/prefer_this_colour_schemata.yml +15 -0
- data/lib/colours/yaml/use_these_values_for_the_colour_methods.yml +13 -0
- data/lib/colours.rb +5 -0
- data/test/test.html +18 -0
- data/test/testing_256_colours_support.rb +29 -0
- data/test/testing_col.rb +10 -0
- data/test/testing_colours.rb +95 -0
- data/test/testing_colours_e.rb +13 -0
- data/test/testing_eparse.rb +13 -0
- data/test/testing_kde_colour_palette.rb +30 -0
- data/test/testing_konsole_submodule.rb +226 -0
- data/test/testing_map_symbol_to_corresponding_colour.rb +14 -0
- data/test/testing_rgb_to_hex.rb +32 -0
- data/test/testing_the_basic_colours_of_the_colours_project.rb +58 -0
- data/test/testing_the_colour_methods.rb +36 -0
- data/test/testing_the_constants_of_the_colours_project.rb +9 -0
- data/test/testing_the_html_colours_of_the_colours_project.rb +37 -0
- data/test/testing_whether_colours_will_be_used.rb +7 -0
- metadata +224 -0
|
@@ -0,0 +1,107 @@
|
|
|
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
|
+
require 'colours/constants/colour_constants.rb'
|
|
8
|
+
|
|
9
|
+
module Colours
|
|
10
|
+
|
|
11
|
+
# ========================================================================= #
|
|
12
|
+
# === Colours.remove_escape_sequence
|
|
13
|
+
#
|
|
14
|
+
# The method Colours.remove_escape_sequence() will remove all
|
|
15
|
+
# Ansi 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
|
+
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
if __FILE__ == $PROGRAM_NAME
|
|
88
|
+
alias e puts
|
|
89
|
+
begin
|
|
90
|
+
require 'colours/autoinclude'
|
|
91
|
+
rescue LoadError; e 'the colours gem is not available.'; end
|
|
92
|
+
include Colours
|
|
93
|
+
e
|
|
94
|
+
e 'Next testing an escape sequence (which will be shown via pp only):'
|
|
95
|
+
e
|
|
96
|
+
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]
|
|
97
|
+
|
|
98
|
+
A\e[38;2;220;20;60m|AGCTT"
|
|
99
|
+
pp x
|
|
100
|
+
e
|
|
101
|
+
x = Colours.remove_escape_sequence(x)
|
|
102
|
+
e
|
|
103
|
+
pp x
|
|
104
|
+
e x
|
|
105
|
+
pp Colours.remove_escape_sequences(Colours.slateblue('Hello world!')) # => "\e[38;2;106;90;205mHello world!"
|
|
106
|
+
p Colours.slateblue('Hello world!') # => "\e[38;2;106;90;205mHello world!\e[0;37m"
|
|
107
|
+
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
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
#!/usr/bin/ruby -w
|
|
2
|
+
# Encoding: UTF-8
|
|
3
|
+
# frozen_string_literal: true
|
|
4
|
+
# =========================================================================== #
|
|
5
|
+
# require 'colours/toplevel_methods/use_colours.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
|
+
# === @use_colours
|
|
18
|
+
#
|
|
19
|
+
# Whether we will use colours or whether we will not. This can be
|
|
20
|
+
# used to globally disable colours in every project using the
|
|
21
|
+
# Colours gem.
|
|
22
|
+
# ========================================================================= #
|
|
23
|
+
@use_colours = true
|
|
24
|
+
|
|
25
|
+
# ========================================================================= #
|
|
26
|
+
# === @use_html_colours
|
|
27
|
+
#
|
|
28
|
+
# This is a separate variable so that we can selectively disable or
|
|
29
|
+
# enable the colours for the Konsole submodule. Some terminals do
|
|
30
|
+
# not respond nicely to the R,G,B values that the Konsole submodule
|
|
31
|
+
# may require.
|
|
32
|
+
# ========================================================================= #
|
|
33
|
+
@use_html_colours = true
|
|
34
|
+
|
|
35
|
+
# ========================================================================= #
|
|
36
|
+
# === Colours.use_colours?
|
|
37
|
+
#
|
|
38
|
+
# Use this method to find out whether we wish to use colours or
|
|
39
|
+
# whether we do not.
|
|
40
|
+
# ========================================================================= #
|
|
41
|
+
def self.use_colours?
|
|
42
|
+
@use_colours
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# ========================================================================= #
|
|
46
|
+
# === Colours.enable_html_colours
|
|
47
|
+
#
|
|
48
|
+
# Use this method to specifically enable konsole-colours.
|
|
49
|
+
# ========================================================================= #
|
|
50
|
+
def self.enable_html_colours
|
|
51
|
+
@use_html_colours = true
|
|
52
|
+
end; self.instance_eval { alias enable_konsole_colours enable_html_colours } # === Colours.enable_konsole_colours
|
|
53
|
+
|
|
54
|
+
# ========================================================================= #
|
|
55
|
+
# === Colours.disable_konsole_colours
|
|
56
|
+
#
|
|
57
|
+
# Disable the KDE-Konsole colours.
|
|
58
|
+
# ========================================================================= #
|
|
59
|
+
def self.disable_konsole_colours
|
|
60
|
+
@use_html_colours = false
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# ========================================================================= #
|
|
64
|
+
# === Colours.use_html_colours?
|
|
65
|
+
#
|
|
66
|
+
# Query whether we will use the HTML colours or whether we will not.
|
|
67
|
+
# ========================================================================= #
|
|
68
|
+
def self.use_html_colours?
|
|
69
|
+
@use_html_colours
|
|
70
|
+
end; self.instance_eval { alias use_konsole? use_html_colours? } # === Colours.use_konsole?
|
|
71
|
+
self.instance_eval { alias use_konsole_colours? use_html_colours? } # === Colours.use_konsole_colours??
|
|
72
|
+
|
|
73
|
+
# ========================================================================= #
|
|
74
|
+
# === Colours.disable_colours
|
|
75
|
+
#
|
|
76
|
+
# This method can be used to disable the colours on the Colours
|
|
77
|
+
# namespace.
|
|
78
|
+
# ========================================================================= #
|
|
79
|
+
def self.disable_colours(
|
|
80
|
+
be_verbose = false
|
|
81
|
+
)
|
|
82
|
+
puts 'Disabling colours next.' if be_verbose
|
|
83
|
+
@use_colours = false
|
|
84
|
+
end; self.instance_eval { alias disable disable_colours } # === Colours.disable
|
|
85
|
+
|
|
86
|
+
# ========================================================================= #
|
|
87
|
+
# === Colours.enable_colours
|
|
88
|
+
#
|
|
89
|
+
# Use this method to enable colours for the whole Colours namespace.
|
|
90
|
+
# ========================================================================= #
|
|
91
|
+
def self.enable_colours(
|
|
92
|
+
be_verbose = false
|
|
93
|
+
)
|
|
94
|
+
puts 'Enabling colours next.' if be_verbose
|
|
95
|
+
@use_colours = true # Defined below.
|
|
96
|
+
end; self.instance_eval { alias enable enable_colours } # === Colours.enable
|
|
97
|
+
|
|
98
|
+
# ========================================================================= #
|
|
99
|
+
# === Colours.use_colours=
|
|
100
|
+
#
|
|
101
|
+
# Determine whether we will use colours or whether we will not.
|
|
102
|
+
#
|
|
103
|
+
# The first input argument to this method should be a Bool, such
|
|
104
|
+
# as true or false.
|
|
105
|
+
# ========================================================================= #
|
|
106
|
+
def self.use_colours=(
|
|
107
|
+
new_value = true
|
|
108
|
+
)
|
|
109
|
+
@use_colours = new_value
|
|
110
|
+
end; self.instance_eval { alias set_use_colours use_colours= } # === Colours.set_use_colours
|
|
111
|
+
|
|
112
|
+
# ========================================================================= #
|
|
113
|
+
# === use_colours?
|
|
114
|
+
#
|
|
115
|
+
# Delegate towards the class-method here. Unsure whether this method
|
|
116
|
+
# is really needed, but let's keep it for now. After all we can
|
|
117
|
+
# use "include Colours" to add that method.
|
|
118
|
+
# ========================================================================= #
|
|
119
|
+
def use_colours?
|
|
120
|
+
Colours.use_colours?
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# ========================================================================= #
|
|
124
|
+
# === Colours.report_whether_colours_will_be_used
|
|
125
|
+
# ========================================================================= #
|
|
126
|
+
def self.report_whether_colours_will_be_used
|
|
127
|
+
if @use_colours
|
|
128
|
+
puts 'Yes, colours will be used.'
|
|
129
|
+
else
|
|
130
|
+
puts 'Colours are currently disabled.'
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# ========================================================================= #
|
|
135
|
+
# === last_colour_used?
|
|
136
|
+
#
|
|
137
|
+
# Tell us which colour was used last.
|
|
138
|
+
# ========================================================================= #
|
|
139
|
+
def last_colour_used?
|
|
140
|
+
@last_colour_used.to_s # Always required a string.
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
# ========================================================================= #
|
|
144
|
+
# === Colours.set_last_colour_used
|
|
145
|
+
# ========================================================================= #
|
|
146
|
+
def self.set_last_colour_used(i)
|
|
147
|
+
@last_colour_used = i
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
# =========================================================================== #
|
|
151
|
+
# This file includes a standalone Colour class, as part of the
|
|
152
|
+
# Colours namespace.
|
|
153
|
+
# =========================================================================== #
|
|
154
|
+
class Colour # === Colours::Colour
|
|
155
|
+
|
|
156
|
+
# ========================================================================= #
|
|
157
|
+
# === initialize
|
|
158
|
+
# ========================================================================= #
|
|
159
|
+
def initialize(
|
|
160
|
+
optional_input = nil
|
|
161
|
+
)
|
|
162
|
+
reset
|
|
163
|
+
set_input(optional_input) if optional_input
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
# ========================================================================= #
|
|
167
|
+
# === set_r
|
|
168
|
+
# ========================================================================= #
|
|
169
|
+
def set_r(i = nil)
|
|
170
|
+
@r = i
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# ========================================================================= #
|
|
174
|
+
# === set_g
|
|
175
|
+
# ========================================================================= #
|
|
176
|
+
def set_g(i = nil)
|
|
177
|
+
@g = i
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
# ========================================================================= #
|
|
181
|
+
# === set_b
|
|
182
|
+
# ========================================================================= #
|
|
183
|
+
def set_b(i = nil)
|
|
184
|
+
@b = i
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
# ========================================================================= #
|
|
188
|
+
# === random_colour?
|
|
189
|
+
# ========================================================================= #
|
|
190
|
+
def random_colour?(
|
|
191
|
+
optional_text = nil
|
|
192
|
+
)
|
|
193
|
+
if optional_text
|
|
194
|
+
write_this_in_random_colour(optional_text)
|
|
195
|
+
else
|
|
196
|
+
::Colours.random_colour?
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
# ========================================================================= #
|
|
201
|
+
# === set_rgb
|
|
202
|
+
# ========================================================================= #
|
|
203
|
+
def set_rgb(r,g,b)
|
|
204
|
+
set_r(r)
|
|
205
|
+
set_g(g)
|
|
206
|
+
set_b(b)
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
# ========================================================================= #
|
|
210
|
+
# === set_input
|
|
211
|
+
# ========================================================================= #
|
|
212
|
+
def set_input(i = nil)
|
|
213
|
+
@input = i
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
# ========================================================================= #
|
|
217
|
+
# === reset
|
|
218
|
+
# ========================================================================= #
|
|
219
|
+
def reset
|
|
220
|
+
set_r
|
|
221
|
+
set_g
|
|
222
|
+
set_b
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
# ========================================================================= #
|
|
226
|
+
# === r?
|
|
227
|
+
# ========================================================================= #
|
|
228
|
+
def r?
|
|
229
|
+
@r
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
# ========================================================================= #
|
|
233
|
+
# === g?
|
|
234
|
+
# ========================================================================= #
|
|
235
|
+
def g?
|
|
236
|
+
@g
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
# ========================================================================= #
|
|
240
|
+
# === b?
|
|
241
|
+
# ========================================================================= #
|
|
242
|
+
def b?
|
|
243
|
+
@b
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
# ========================================================================= #
|
|
247
|
+
# === output_this_string
|
|
248
|
+
# ========================================================================= #
|
|
249
|
+
def output_this_string(
|
|
250
|
+
i = DEFAULT_TEXT+N,
|
|
251
|
+
r = r?,
|
|
252
|
+
g = g?,
|
|
253
|
+
b = b?
|
|
254
|
+
)
|
|
255
|
+
result = return_this_string(i,r,g,b)
|
|
256
|
+
e result
|
|
257
|
+
end; alias output_this output_this_string # === output_this
|
|
258
|
+
alias output output_this_string # === output
|
|
259
|
+
alias write_this_in_random_colour output_this_string # === write_this_in_random_colour
|
|
260
|
+
|
|
261
|
+
# ========================================================================= #
|
|
262
|
+
# === return_this_string
|
|
263
|
+
# ========================================================================= #
|
|
264
|
+
def return_this_string(
|
|
265
|
+
i = DEFAULT_TEXT+N,
|
|
266
|
+
r = r?,
|
|
267
|
+
g = g?,
|
|
268
|
+
b = b?
|
|
269
|
+
)
|
|
270
|
+
i = DEFAULT_TEXT if i == :default
|
|
271
|
+
i = i.join(' ') if i.is_a? Array
|
|
272
|
+
i = i.to_s.dup
|
|
273
|
+
i = build_this_rgb_string(r, g, b)+i
|
|
274
|
+
return i
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
# ========================================================================= #
|
|
278
|
+
# === build_this_rgb_string
|
|
279
|
+
# ========================================================================= #
|
|
280
|
+
def build_this_rgb_string(r, g, b)
|
|
281
|
+
Colours.build_this_rgb_string(r,g,b)
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
# ========================================================================= #
|
|
285
|
+
# === random_colour
|
|
286
|
+
#
|
|
287
|
+
# Return a random colour here.
|
|
288
|
+
# ========================================================================= #
|
|
289
|
+
def random_colour(this_string_to_display = 'test')
|
|
290
|
+
return_this_string(
|
|
291
|
+
this_string_to_display, random_value, random_value, random_value
|
|
292
|
+
)
|
|
293
|
+
end; alias return_random_colour random_colour # === return_random_colour
|
|
294
|
+
|
|
295
|
+
# ========================================================================= #
|
|
296
|
+
# === seed_rgb_values
|
|
297
|
+
#
|
|
298
|
+
# Use this method to randomly obtain R,G,B values.
|
|
299
|
+
# ========================================================================= #
|
|
300
|
+
def seed_rgb_values
|
|
301
|
+
set_rgb(random_value, random_value, random_value)
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
# ========================================================================= #
|
|
305
|
+
# === random_value
|
|
306
|
+
# ========================================================================= #
|
|
307
|
+
def random_value
|
|
308
|
+
rand(255)
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
end; end
|