colours 0.8.12
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.
- checksums.yaml +7 -0
- data/LICENCE.md +22 -0
- data/README.md +1152 -0
- data/bin/colours +7 -0
- data/bin/egreen +7 -0
- data/bin/fancy_parse +7 -0
- data/bin/html_colour_to_hex_value +7 -0
- data/bin/html_colourize +7 -0
- data/bin/orange +7 -0
- data/bin/print_rainbow_line +7 -0
- data/bin/rainbow_colours +7 -0
- data/bin/remove_ansii_escape_sequences +7 -0
- data/bin/steelblue +7 -0
- data/colours.gemspec +74 -0
- data/doc/COLOUR_CODES_CHART.md +27 -0
- data/doc/HOW_TO_PICK_YOUR_OWN_COLOURS.md +28 -0
- data/doc/README.gen +1105 -0
- data/doc/todo/todo.md +25 -0
- data/lib/colours/256_colours/support_for_256_colours.rb +196 -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 +7001 -0
- data/lib/colours/autoinclude.rb +14 -0
- data/lib/colours/base/base.rb +29 -0
- data/lib/colours/basic_colours/README.md +4 -0
- data/lib/colours/basic_colours/basic_colours.rb +334 -0
- data/lib/colours/class/colours.rb +537 -0
- data/lib/colours/colour_methods/README.md +11 -0
- data/lib/colours/colour_methods/colour_methods.rb +685 -0
- data/lib/colours/colour_table/README.md +2 -0
- data/lib/colours/colour_table/colour_table.rb +282 -0
- data/lib/colours/colours_e_autoinclude.rb +9 -0
- data/lib/colours/commandline/README.md +2 -0
- data/lib/colours/commandline/commandline.rb +58 -0
- data/lib/colours/commandline/menu.rb +122 -0
- data/lib/colours/constants/constants.rb +9 -0
- data/lib/colours/constants/escape.rb +22 -0
- data/lib/colours/constants/file_constants.rb +73 -0
- data/lib/colours/constants/hash_ansi_colours.rb +39 -0
- data/lib/colours/constants/hash_simple_colours.rb +148 -0
- data/lib/colours/constants/misc.rb +361 -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 +114 -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/html_colours.rb +424 -0
- data/lib/colours/kde_colour_palette/kde_colour_palette.rb +132 -0
- data/lib/colours/map_symbol_to_corresponding_colour/map_symbol_to_corresponding_colour.rb +224 -0
- data/lib/colours/module.rb +11 -0
- data/lib/colours/project/project.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_autogenerated_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_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_constants.rb +5 -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_project.rb +53 -0
- data/lib/colours/requires/require_the_toplevel_methods.rb +42 -0
- data/lib/colours/requires/require_yaml.rb +9 -0
- data/lib/colours/rgb/rgb.rb +550 -0
- data/lib/colours/testing/README.md +2 -0
- data/lib/colours/testing/testing.rb +168 -0
- data/lib/colours/toplevel_methods/autogenerate.rb +310 -0
- data/lib/colours/toplevel_methods/bold.rb +41 -0
- data/lib/colours/toplevel_methods/bold_and_italic.rb +38 -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 +17 -0
- data/lib/colours/toplevel_methods/col.rb +54 -0
- data/lib/colours/toplevel_methods/e.rb +69 -0
- data/lib/colours/toplevel_methods/esystem.rb +19 -0
- data/lib/colours/toplevel_methods/html_colour_to_hex_value.rb +41 -0
- data/lib/colours/toplevel_methods/html_colourize.rb +69 -0
- data/lib/colours/toplevel_methods/is_on_roebe.rb +16 -0
- data/lib/colours/toplevel_methods/italic.rb +110 -0
- data/lib/colours/toplevel_methods/make_colour.rb +28 -0
- data/lib/colours/toplevel_methods/methods_related_to_html_colours.rb +336 -0
- data/lib/colours/toplevel_methods/misc.rb +226 -0
- data/lib/colours/toplevel_methods/open_this_file.rb +26 -0
- data/lib/colours/toplevel_methods/prefer_this_colour_schemata.rb +88 -0
- data/lib/colours/toplevel_methods/random_value.rb +37 -0
- data/lib/colours/toplevel_methods/remove_escape_sequence.rb +112 -0
- data/lib/colours/toplevel_methods/revert.rb +104 -0
- data/lib/colours/toplevel_methods/set_last_colour_used.rb +32 -0
- data/lib/colours/toplevel_methods/shell_file_containing_the_html_colours.sh +148 -0
- data/lib/colours/toplevel_methods/show_basic_colour_palette.rb +36 -0
- data/lib/colours/toplevel_methods/underline.rb +130 -0
- data/lib/colours/toplevel_methods/use_colours.rb +290 -0
- data/lib/colours/version/version.rb +25 -0
- data/lib/colours/yaml/256_colours.yml +279 -0
- data/lib/colours/yaml/basic_colours.yml +25 -0
- data/lib/colours/yaml/html_colours.yml +837 -0
- data/lib/colours/yaml/kde_colour_palette.yml +183 -0
- data/lib/colours/yaml/prefer_this_colour_schemata.yml +17 -0
- data/lib/colours/yaml/use_these_values_for_the_colour_methods.yml +15 -0
- data/lib/colours.rb +1 -0
- data/test/test.html +18 -0
- data/test/testing_256_colours_support.rb +29 -0
- data/test/testing_bold_italic_underline.rb +26 -0
- data/test/testing_class_colours.rb +46 -0
- data/test/testing_col.rb +10 -0
- data/test/testing_colours.rb +96 -0
- data/test/testing_colours_e.rb +13 -0
- data/test/testing_eparse.rb +13 -0
- data/test/testing_italic.rb +28 -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_replace_number_words_with_the_corresponding_html_colour.rb +39 -0
- data/test/testing_rgb_to_hex.rb +32 -0
- data/test/testing_the_basic_colours_of_the_colours_project.rb +62 -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_ecomment_method.rb +11 -0
- data/test/testing_the_html_colours_of_the_colours_project.rb +37 -0
- data/test/testing_the_regex_for_capturing_the_commandline_coloured_content.rb +112 -0
- data/test/testing_whether_colours_will_be_used.rb +7 -0
- metadata +225 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/ruby -w
|
|
2
|
+
# Encoding: UTF-8
|
|
3
|
+
# frozen_string_literal: true
|
|
4
|
+
# =========================================================================== #
|
|
5
|
+
# require 'colours/toplevel_methods/random_value.rb'
|
|
6
|
+
# =========================================================================== #
|
|
7
|
+
module Colours
|
|
8
|
+
|
|
9
|
+
# ========================================================================= #
|
|
10
|
+
# === Colours.random_value?
|
|
11
|
+
#
|
|
12
|
+
# We will obtain a random value between 0 and 255, hence why we will
|
|
13
|
+
# use rand(256).
|
|
14
|
+
# ========================================================================= #
|
|
15
|
+
def self.random_value?
|
|
16
|
+
rand(256)
|
|
17
|
+
end; self.instance_eval { alias random_value random_value? } # === Colours.random_value
|
|
18
|
+
self.instance_eval { alias rvalue random_value? } # === Colours.rvalue
|
|
19
|
+
self.instance_eval { alias r? random_value? } # === Colours.r?
|
|
20
|
+
self.instance_eval { alias g? random_value? } # === Colours.g?
|
|
21
|
+
self.instance_eval { alias b? random_value? } # === Colours.b?
|
|
22
|
+
|
|
23
|
+
# ========================================================================= #
|
|
24
|
+
# === random_value
|
|
25
|
+
#
|
|
26
|
+
# We will obtain a random value between 0 and 255, hence why we will
|
|
27
|
+
# use rand(256).
|
|
28
|
+
# ========================================================================= #
|
|
29
|
+
def random_value?
|
|
30
|
+
Colours.random_value?
|
|
31
|
+
end; alias rvalue random_value? # === rvalue
|
|
32
|
+
alias random_value random_value? # === random_value
|
|
33
|
+
alias r? random_value? # === r?
|
|
34
|
+
alias g? random_value? # === g?
|
|
35
|
+
alias b? random_value? # === b?
|
|
36
|
+
|
|
37
|
+
end
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
#!/usr/bin/ruby -w
|
|
2
|
+
# Encoding: UTF-8
|
|
3
|
+
# frozen_string_literal: true
|
|
4
|
+
# =========================================================================== #
|
|
5
|
+
# require 'colours/toplevel_methods/remove_escape_sequence.rb'
|
|
6
|
+
# Colours.remove_escape_sequence
|
|
7
|
+
# =========================================================================== #
|
|
8
|
+
module Colours
|
|
9
|
+
|
|
10
|
+
require 'colours/constants/misc.rb'
|
|
11
|
+
|
|
12
|
+
# ========================================================================= #
|
|
13
|
+
# === Colours.remove_escape_sequence
|
|
14
|
+
#
|
|
15
|
+
# The method Colours.remove_escape_sequence() will remove all Ansi
|
|
16
|
+
# Escape sequences from a given string.
|
|
17
|
+
# ========================================================================= #
|
|
18
|
+
def self.remove_escape_sequence(i = ARGV)
|
|
19
|
+
if i.is_a? Array
|
|
20
|
+
i = i.join("\n")
|
|
21
|
+
end
|
|
22
|
+
i = i.to_s.dup
|
|
23
|
+
# ======================================================================= #
|
|
24
|
+
# Iterate over the registered ansi-colours next.
|
|
25
|
+
# ======================================================================= #
|
|
26
|
+
ARRAY_REGISTERED_ANSI_COLOURS.each {|entry|
|
|
27
|
+
if i.include? entry
|
|
28
|
+
entry = Regexp.quote(entry)
|
|
29
|
+
i.sub!(/#{entry}/, '')
|
|
30
|
+
end
|
|
31
|
+
# ===================================================================== #
|
|
32
|
+
# Next, check for KDE konsole colours. We must use "" there, not ''.
|
|
33
|
+
# ===================================================================== #
|
|
34
|
+
if i.include?("\e[") and i =~ /\d+m/ # Such as: "\e[38;2;220;20;60m|"
|
|
35
|
+
# =================================================================== #
|
|
36
|
+
# The next regex will (hopefully) remove all escape-characters
|
|
37
|
+
# from the given String.
|
|
38
|
+
# =================================================================== #
|
|
39
|
+
regex_for_html_colours = # Detect entries such as: \e[38;2;106;90;205m
|
|
40
|
+
/(\e\[\d{2};\d{1};\d{3};\d{1,2};\d{3}m)/ # See: https://rubular.com/r/tG3XeOK5NPsfmI
|
|
41
|
+
i.gsub!(regex_for_html_colours, '')
|
|
42
|
+
# =================================================================== #
|
|
43
|
+
# See: https://rubular.com/r/SdS28fAGSxIELn
|
|
44
|
+
# =================================================================== #
|
|
45
|
+
# /(\\e\[\d{1,2};?\d{1,2};?\d{0,3};?\d{0,3};?\d{1,2}m|\\e\[\d{0,2}m|\\e\[K|\\e\[\d{0,2};\d{0,2}m|(\\e\[.+\dm)|\\e\[0;37m)/
|
|
46
|
+
[
|
|
47
|
+
/\e\[\d{1,2};?\d{1,2};?\d{0,3};?\d{0,3};?\d{1,2}m/,
|
|
48
|
+
/\\e\[\d{0,2}m|\\e\[K|\\e\[\d{0,2};\d{0,2}m/,
|
|
49
|
+
/\\e\[.+\dm/,
|
|
50
|
+
/\\e\[0;37m/
|
|
51
|
+
].each {|regex_to_use|
|
|
52
|
+
i.gsub!(regex_to_use, '')
|
|
53
|
+
}
|
|
54
|
+
end
|
|
55
|
+
}
|
|
56
|
+
return i
|
|
57
|
+
end; self.instance_eval { alias remove remove_escape_sequence } # === Colours.remove
|
|
58
|
+
self.instance_eval { alias remove_escape_sequences remove_escape_sequence } # === Colours.remove_escape_sequences
|
|
59
|
+
self.instance_eval { alias remove_colours remove_escape_sequence } # === Colours.remove_colours
|
|
60
|
+
self.instance_eval { alias escape remove_escape_sequence } # === Colours.escape
|
|
61
|
+
|
|
62
|
+
# ========================================================================= #
|
|
63
|
+
# === Colours.remove_trailing_end_from
|
|
64
|
+
#
|
|
65
|
+
# The second argument to this method can be the escape sequence that you
|
|
66
|
+
# wish to remove.
|
|
67
|
+
#
|
|
68
|
+
# Invocation example:
|
|
69
|
+
#
|
|
70
|
+
# x = Colours.remove_trailing_end_from("\e[38;2;70;130;180m\e[0;37m") # => "\e[38;2;70;130;180m"
|
|
71
|
+
#
|
|
72
|
+
# ========================================================================= #
|
|
73
|
+
def self.remove_trailing_end_from(
|
|
74
|
+
i,
|
|
75
|
+
remove_this_escape_sequence = revert?
|
|
76
|
+
)
|
|
77
|
+
quoted = Regexp.quote(remove_this_escape_sequence)
|
|
78
|
+
# ======================================================================= #
|
|
79
|
+
# Anchor it at the end via $.
|
|
80
|
+
# ======================================================================= #
|
|
81
|
+
return i.sub(
|
|
82
|
+
/#{quoted}$/, ''
|
|
83
|
+
)
|
|
84
|
+
end; self.instance_eval { alias remove_trailing_escape_part remove_trailing_end_from } # === Colours.remove_trailing_escape_part
|
|
85
|
+
self.instance_eval { alias remove_trailing_ansii_escape_code remove_trailing_end_from } # === Colours.remove_trailing_ansii_escape_code
|
|
86
|
+
self.instance_eval { alias remove_trailing_ANSII_escape_code remove_trailing_end_from } # === Colours.remove_trailing_ANSII_escape_code
|
|
87
|
+
self.instance_eval { alias remove_trailing_escape_code remove_trailing_end_from } # === Colours.remove_trailing_escape_code
|
|
88
|
+
self.instance_eval { alias remove_trailing_code remove_trailing_end_from } # === Colours.remove_trailing_code
|
|
89
|
+
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
if __FILE__ == $PROGRAM_NAME
|
|
93
|
+
alias e puts
|
|
94
|
+
begin
|
|
95
|
+
require 'colours/autoinclude'
|
|
96
|
+
rescue LoadError; e 'the colours gem is not available.'; end
|
|
97
|
+
include Colours
|
|
98
|
+
e
|
|
99
|
+
e 'Next testing an escape sequence (which will be shown via pp only):'
|
|
100
|
+
e
|
|
101
|
+
x = "\e[01m\e[Kcc1:\e[m\e[K \e[01;35m\e[Kwarning: \e[m\e[K-Wabi won't warn about anything [\e[01;35m\e[K-Wabi\e[m\e[K]
|
|
102
|
+
|
|
103
|
+
A\e[38;2;220;20;60m|AGCTT"
|
|
104
|
+
pp x
|
|
105
|
+
e
|
|
106
|
+
x = Colours.remove_escape_sequence(x)
|
|
107
|
+
e
|
|
108
|
+
pp x
|
|
109
|
+
e x
|
|
110
|
+
pp Colours.remove_escape_sequences(Colours.slateblue('Hello world!')) # => "\e[38;2;106;90;205mHello world!"
|
|
111
|
+
p Colours.slateblue('Hello world!') # => "\e[38;2;106;90;205mHello world!\e[0;37m"
|
|
112
|
+
end
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
#!/usr/bin/ruby -w
|
|
2
|
+
# Encoding: UTF-8
|
|
3
|
+
# frozen_string_literal = true
|
|
4
|
+
# =========================================================================== #
|
|
5
|
+
# require 'colours/toplevel_methods/revert.rb'
|
|
6
|
+
# =========================================================================== #
|
|
7
|
+
module Colours
|
|
8
|
+
|
|
9
|
+
require 'colours/constants/escape.rb'
|
|
10
|
+
|
|
11
|
+
# ========================================================================= #
|
|
12
|
+
# === Colours::COLOUR_NC
|
|
13
|
+
#
|
|
14
|
+
# Note that this will actually reset all attributes.
|
|
15
|
+
#
|
|
16
|
+
# The "\e[0m" sequence removes all attributes, including formatting
|
|
17
|
+
# and colours. It may be useful to add it to the end of each colour
|
|
18
|
+
# text - and this is what the Colours project is essentially doing.
|
|
19
|
+
#
|
|
20
|
+
# An alternative may be to assign REVERT to WHITE, but this seems
|
|
21
|
+
# to be incorrect according to the specification.
|
|
22
|
+
# ========================================================================= #
|
|
23
|
+
COLOUR_NC = "#{ESC}0m" # No Colour.
|
|
24
|
+
REVERT = COLOUR_NC # === REVERT
|
|
25
|
+
REV = COLOUR_NC # === REV
|
|
26
|
+
CLOSING_TAG = COLOUR_NC # === CLOSING_TAG (also represented as "#{ESC}0m")
|
|
27
|
+
RESET = COLOUR_NC # === RESET
|
|
28
|
+
RESET_TERMINAL = COLOUR_NC # === RESET_TERMINAL
|
|
29
|
+
CLEAR = COLOUR_NC # === CLEAR
|
|
30
|
+
COLOUR_RESET = COLOUR_NC # === COLOUR_RESET
|
|
31
|
+
DEFAULT_COLOUR = COLOUR_RESET # === DEFAULT_COLOUR
|
|
32
|
+
|
|
33
|
+
# ========================================================================= #
|
|
34
|
+
# === RESET_ALL_ATTRIBUTES
|
|
35
|
+
#
|
|
36
|
+
# This is essentially the same as COLOUR_NC / RESET.
|
|
37
|
+
# ========================================================================= #
|
|
38
|
+
RESET_ALL_ATTRIBUTES = "\x1b[0m"
|
|
39
|
+
|
|
40
|
+
# ========================================================================= #
|
|
41
|
+
# === @revert
|
|
42
|
+
#
|
|
43
|
+
# We need a variable here in order to be able to change this.
|
|
44
|
+
# ========================================================================= #
|
|
45
|
+
@revert = "\e[0;37m"
|
|
46
|
+
|
|
47
|
+
# ========================================================================= #
|
|
48
|
+
# === Colours.set_revert
|
|
49
|
+
# ========================================================================= #
|
|
50
|
+
def self.set_revert(i = :default)
|
|
51
|
+
case i
|
|
52
|
+
# ======================================================================= #
|
|
53
|
+
# === :default
|
|
54
|
+
# ======================================================================= #
|
|
55
|
+
when :default
|
|
56
|
+
i = REVERT
|
|
57
|
+
end
|
|
58
|
+
@revert = i
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# ========================================================================= #
|
|
62
|
+
# === Colours.rev
|
|
63
|
+
#
|
|
64
|
+
# We use this method to revert to the old default, that is, the prior
|
|
65
|
+
# state for ANSI colours. It should be equivalent to: "\x1b[0m" e. g.
|
|
66
|
+
# REVERT = "\x1b[0m" # "\x1b[39;49m" <--- This here seems to fail for Konsole.underline, though.
|
|
67
|
+
#
|
|
68
|
+
# An alternative could be DEFAULT_COLOUR.
|
|
69
|
+
# ========================================================================= #
|
|
70
|
+
def self.rev
|
|
71
|
+
# REVERT # <- This used to be: "\e[0;37m"
|
|
72
|
+
@revert # This is light white. I prefer this colour actually.
|
|
73
|
+
end; self.instance_eval { alias revert rev } # === Colours.revert
|
|
74
|
+
self.instance_eval { alias revert? rev } # === Colours.revert?
|
|
75
|
+
self.instance_eval { alias restore? rev } # === Colours.restore?
|
|
76
|
+
|
|
77
|
+
# ========================================================================= #
|
|
78
|
+
# === rev
|
|
79
|
+
#
|
|
80
|
+
# Use this method to "revert" to the old default colour again, by
|
|
81
|
+
# delegating towards the Colours.rev() method defined above.
|
|
82
|
+
#
|
|
83
|
+
# From this point on, we use methods that can be toggled.
|
|
84
|
+
# ========================================================================= #
|
|
85
|
+
def rev(i = '')
|
|
86
|
+
::Colours.rev # This will refer to the Colours.rev() module method.
|
|
87
|
+
end; alias revert rev # === revert
|
|
88
|
+
# alias default_colour rev
|
|
89
|
+
|
|
90
|
+
# ========================================================================= #
|
|
91
|
+
# === restore?
|
|
92
|
+
#
|
|
93
|
+
# This will restore to the default again.
|
|
94
|
+
# ========================================================================= #
|
|
95
|
+
def restore?
|
|
96
|
+
Colours.restore?
|
|
97
|
+
end; alias revert restore? # === revert
|
|
98
|
+
alias rev? restore? # === rev?
|
|
99
|
+
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
if __FILE__ == $PROGRAM_NAME
|
|
103
|
+
pp Colours.rev
|
|
104
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/ruby -w
|
|
2
|
+
# Encoding: UTF-8
|
|
3
|
+
# frozen_string_literal: true
|
|
4
|
+
# =========================================================================== #
|
|
5
|
+
# require 'colours/toplevel_methods/set_last_colour_used.rb'
|
|
6
|
+
# =========================================================================== #
|
|
7
|
+
module Colours
|
|
8
|
+
|
|
9
|
+
# ========================================================================= #
|
|
10
|
+
# === @last_colour_used
|
|
11
|
+
#
|
|
12
|
+
# This instance variable keeps track what the last colour used was.
|
|
13
|
+
# ========================================================================= #
|
|
14
|
+
@last_colour_used = nil
|
|
15
|
+
|
|
16
|
+
# ========================================================================= #
|
|
17
|
+
# === last_colour_used?
|
|
18
|
+
#
|
|
19
|
+
# Tell us which colour was used last.
|
|
20
|
+
# ========================================================================= #
|
|
21
|
+
def last_colour_used?
|
|
22
|
+
@last_colour_used.to_s # Always required a string.
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# ========================================================================= #
|
|
26
|
+
# === Colours.set_last_colour_used
|
|
27
|
+
# ========================================================================= #
|
|
28
|
+
def self.set_last_colour_used(i)
|
|
29
|
+
@last_colour_used = i
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# This is a shell file that contains the HTML colours
|
|
2
|
+
export ALICEBLUE="\e[38;2;240;248;255m"
|
|
3
|
+
export ANTIQUEWHITE="\e[38;2;250;235;215m"
|
|
4
|
+
export AQUA="\e[38;2;0;255;255m"
|
|
5
|
+
export AQUAMARINE="\e[38;2;127;255;212m"
|
|
6
|
+
export AZURE="\e[38;2;240;255;255m"
|
|
7
|
+
export BEIGE="\e[38;2;245;245;220m"
|
|
8
|
+
export BISQUE="\e[38;2;255;228;196m"
|
|
9
|
+
export BLACK="\e[38;2;0;0;0m"
|
|
10
|
+
export BLANCHEDALMOND="\e[38;2;255;235;205m"
|
|
11
|
+
export BLUE="\e[38;2;0;0;255m"
|
|
12
|
+
export BLUEVIOLET="\e[38;2;138;43;226m"
|
|
13
|
+
export BROWN="\e[38;2;165;42;42m"
|
|
14
|
+
export BURLYWOOD="\e[38;2;222;184;135m"
|
|
15
|
+
export CADETBLUE="\e[38;2;95;158;160m"
|
|
16
|
+
export CHARTREUSE="\e[38;2;127;255;0m"
|
|
17
|
+
export CHOCOLATE="\e[38;2;210;105;30m"
|
|
18
|
+
export CORAL="\e[38;2;255;127;80m"
|
|
19
|
+
export CORNFLOWERBLUE="\e[38;2;100;149;237m"
|
|
20
|
+
export CORNSILK="\e[38;2;255;248;220m"
|
|
21
|
+
export CRIMSON="\e[38;2;220;20;60m"
|
|
22
|
+
export CYAN="\e[38;2;0;255;255m"
|
|
23
|
+
export DARKBLUE="\e[38;2;0;0;139m"
|
|
24
|
+
export DARKCYAN="\e[38;2;0;139;139m"
|
|
25
|
+
export DARKGOLDENROD="\e[38;2;184;134;11m"
|
|
26
|
+
export DARKGRAY="\e[38;2;169;169;169m"
|
|
27
|
+
export DARKGREEN="\e[38;2;0;100;0m"
|
|
28
|
+
export DARKGREY="\e[38;2;169;169;169m"
|
|
29
|
+
export DARKKHAKI="\e[38;2;189;183;107m"
|
|
30
|
+
export DARKMAGENTA="\e[38;2;139;0;139m"
|
|
31
|
+
export DARKOLIVEGREEN="\e[38;2;85;107;47m"
|
|
32
|
+
export DARKORANGE="\e[38;2;255;140;0m"
|
|
33
|
+
export DARKORCHID="\e[38;2;153;50;204m"
|
|
34
|
+
export DARKRED="\e[38;2;139;0;0m"
|
|
35
|
+
export DARKSALMON="\e[38;2;233;150;122m"
|
|
36
|
+
export DARKSEAGREEN="\e[38;2;143;188;143m"
|
|
37
|
+
export DARKSLATEBLUE="\e[38;2;72;61;139m"
|
|
38
|
+
export DARKSLATEGRAY="\e[38;2;47;79;79m"
|
|
39
|
+
export DARKSLATEGREY="\e[38;2;47;79;79m"
|
|
40
|
+
export DARKTURQUOISE="\e[38;2;0;206;209m"
|
|
41
|
+
export DARKVIOLET="\e[38;2;148;0;211m"
|
|
42
|
+
export DEEPPINK="\e[38;2;255;20;147m"
|
|
43
|
+
export DEEPSKYBLUE="\e[38;2;0;191;255m"
|
|
44
|
+
export DIMGRAY="\e[38;2;105;105;105m"
|
|
45
|
+
export DIMGREY="\e[38;2;105;105;105m"
|
|
46
|
+
export DODGERBLUE="\e[38;2;30;144;255m"
|
|
47
|
+
export FIREBRICK="\e[38;2;178;34;34m"
|
|
48
|
+
export FLORALWHITE="\e[38;2;255;250;240m"
|
|
49
|
+
export FORESTGREEN="\e[38;2;34;139;34m"
|
|
50
|
+
export FUCHSIA="\e[38;2;255;0;255m"
|
|
51
|
+
export GAINSBORO="\e[38;2;220;220;220m"
|
|
52
|
+
export GHOSTWHITE="\e[38;2;248;248;255m"
|
|
53
|
+
export GOLD="\e[38;2;255;215;0m"
|
|
54
|
+
export GOLDENROD="\e[38;2;218;165;32m"
|
|
55
|
+
export GRAY="\e[38;2;128;128;128m"
|
|
56
|
+
export GREY="\e[38;2;128;128;128m"
|
|
57
|
+
export GREEN="\e[38;2;0;128;0m"
|
|
58
|
+
export GREENYELLOW="\e[38;2;173;255;47m"
|
|
59
|
+
export HONEYDEW="\e[38;2;240;255;240m"
|
|
60
|
+
export HOTPINK="\e[38;2;255;105;180m"
|
|
61
|
+
export INDIANRED="\e[38;2;205;92;92m"
|
|
62
|
+
export INDIGO="\e[38;2;75;0;130m"
|
|
63
|
+
export IVORY="\e[38;2;255;255;240m"
|
|
64
|
+
export KHAKI="\e[38;2;240;230;140m"
|
|
65
|
+
export LAVENDER="\e[38;2;230;230;250m"
|
|
66
|
+
export LAVENDERBLUSH="\e[38;2;255;240;245m"
|
|
67
|
+
export LAWNGREEN="\e[38;2;124;252;0m"
|
|
68
|
+
export LEMONCHIFFON="\e[38;2;255;250;205m"
|
|
69
|
+
export LIGHTBLUE="\e[38;2;173;216;230m"
|
|
70
|
+
export LIGHTCORAL="\e[38;2;240;128;128m"
|
|
71
|
+
export LIGHTCYAN="\e[38;2;224;255;255m"
|
|
72
|
+
export LIGHTGOLDENRODYELLOW="\e[38;2;250;250;210m"
|
|
73
|
+
export LIGHTGRAY="\e[38;2;211;211;211m"
|
|
74
|
+
export LIGHTGREY="\e[38;2;211;211;211m"
|
|
75
|
+
export LIGHTGREEN="\e[38;2;144;238;144m"
|
|
76
|
+
export LIGHTPINK="\e[38;2;255;182;193m"
|
|
77
|
+
export LIGHTSALMON="\e[38;2;255;160;122m"
|
|
78
|
+
export LIGHTSEAGREEN="\e[38;2;32;178;170m"
|
|
79
|
+
export LIGHTSKYBLUE="\e[38;2;135;206;250m"
|
|
80
|
+
export LIGHTSLATEGRAY="\e[38;2;119;136;153m"
|
|
81
|
+
export LIGHTSLATEGREY="\e[38;2;119;136;153m"
|
|
82
|
+
export LIGHTSTEELBLUE="\e[38;2;176;196;222m"
|
|
83
|
+
export LIGHTYELLOW="\e[38;2;255;255;224m"
|
|
84
|
+
export LIME="\e[38;2;0;255;0m"
|
|
85
|
+
export LIMEGREEN="\e[38;2;50;205;50m"
|
|
86
|
+
export LINEN="\e[38;2;250;240;230m"
|
|
87
|
+
export MAGENTA="\e[38;2;255;0;255m"
|
|
88
|
+
export MAROON="\e[38;2;128;0;0m"
|
|
89
|
+
export MEDIUMAQUAMARINE="\e[38;2;102;205;170m"
|
|
90
|
+
export MEDIUMBLUE="\e[38;2;0;0;205m"
|
|
91
|
+
export MEDIUMORCHID="\e[38;2;186;85;211m"
|
|
92
|
+
export MEDIUMPURPLE="\e[38;2;147;112;219m"
|
|
93
|
+
export MEDIUMSEAGREEN="\e[38;2;60;179;113m"
|
|
94
|
+
export MEDIUMSLATEBLUE="\e[38;2;123;104;238m"
|
|
95
|
+
export MEDIUMSPRINGGREEN="\e[38;2;0;250;154m"
|
|
96
|
+
export MEDIUMTURQUOISE="\e[38;2;72;209;204m"
|
|
97
|
+
export MEDIUMVIOLETRED="\e[38;2;199;21;133m"
|
|
98
|
+
export MIDNIGHTBLUE="\e[38;2;25;25;112m"
|
|
99
|
+
export MINTCREAM="\e[38;2;245;255;250m"
|
|
100
|
+
export MISTYROSE="\e[38;2;255;228;225m"
|
|
101
|
+
export MOCCASIN="\e[38;2;255;228;181m"
|
|
102
|
+
export NAVAJOWHITE="\e[38;2;255;222;173m"
|
|
103
|
+
export NAVY="\e[38;2;0;0;128m"
|
|
104
|
+
export OLDLACE="\e[38;2;253;245;230m"
|
|
105
|
+
export OLIVE="\e[38;2;128;128;0m"
|
|
106
|
+
export OLIVEDRAB="\e[38;2;107;142;35m"
|
|
107
|
+
export ORANGE="\e[38;2;255;165;0m"
|
|
108
|
+
export ORANGERED="\e[38;2;255;69;0m"
|
|
109
|
+
export ORCHID="\e[38;2;218;112;214m"
|
|
110
|
+
export PALEGOLDENROD="\e[38;2;238;232;170m"
|
|
111
|
+
export PALEGREEN="\e[38;2;152;251;152m"
|
|
112
|
+
export PALETURQUOISE="\e[38;2;175;238;238m"
|
|
113
|
+
export PALEVIOLETRED="\e[38;2;219;112;147m"
|
|
114
|
+
export PAPAYAWHIP="\e[38;2;255;239;213m"
|
|
115
|
+
export PEACHPUFF="\e[38;2;255;218;185m"
|
|
116
|
+
export PERU="\e[38;2;205;133;63m"
|
|
117
|
+
export PINK="\e[38;2;255;192;203m"
|
|
118
|
+
export PLUM="\e[38;2;221;160;221m"
|
|
119
|
+
export POWDERBLUE="\e[38;2;176;224;230m"
|
|
120
|
+
export PURPLE="\e[38;2;128;0;128m"
|
|
121
|
+
export RED="\e[38;2;255;0;0m"
|
|
122
|
+
export ROSYBROWN="\e[38;2;188;143;143m"
|
|
123
|
+
export ROYALBLUE="\e[38;2;65;105;225m"
|
|
124
|
+
export SADDLEBROWN="\e[38;2;139;69;19m"
|
|
125
|
+
export SALMON="\e[38;2;250;128;114m"
|
|
126
|
+
export SANDYBROWN="\e[38;2;244;164;96m"
|
|
127
|
+
export SEAGREEN="\e[38;2;46;139;87m"
|
|
128
|
+
export SEASHELL="\e[38;2;255;245;238m"
|
|
129
|
+
export SIENNA="\e[38;2;160;82;45m"
|
|
130
|
+
export SILVER="\e[38;2;192;192;192m"
|
|
131
|
+
export SKYBLUE="\e[38;2;135;206;235m"
|
|
132
|
+
export SLATEBLUE="\e[38;2;106;90;205m"
|
|
133
|
+
export SLATEGRAY="\e[38;2;112;128;144m"
|
|
134
|
+
export SLATEGREY="\e[38;2;112;128;144m"
|
|
135
|
+
export SNOW="\e[38;2;255;250;250m"
|
|
136
|
+
export SPRINGGREEN="\e[38;2;0;255;127m"
|
|
137
|
+
export STEELBLUE="\e[38;2;70;130;180m"
|
|
138
|
+
export TAN="\e[38;2;210;180;140m"
|
|
139
|
+
export TEAL="\e[38;2;0;128;128m"
|
|
140
|
+
export THISTLE="\e[38;2;216;191;216m"
|
|
141
|
+
export TOMATO="\e[38;2;255;99;71m"
|
|
142
|
+
export TURQUOISE="\e[38;2;64;224;208m"
|
|
143
|
+
export VIOLET="\e[38;2;238;130;238m"
|
|
144
|
+
export WHEAT="\e[38;2;245;222;179m"
|
|
145
|
+
export WHITE="\e[38;2;255;255;255m"
|
|
146
|
+
export WHITESMOKE="\e[38;2;245;245;245m"
|
|
147
|
+
export YELLOW="\e[38;2;255;255;0m"
|
|
148
|
+
export YELLOWGREEN="\e[38;2;154;205;50m"
|
|
@@ -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
|
+
module Colours
|
|
8
|
+
|
|
9
|
+
require 'colours/constants/hash_simple_colours.rb'
|
|
10
|
+
require 'colours/toplevel_methods/cliner.rb'
|
|
11
|
+
require 'colours/toplevel_methods/e.rb'
|
|
12
|
+
require 'colours/toplevel_methods/make_colour.rb'
|
|
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 # showbasiccolourpalette
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
#!/usr/bin/ruby -w
|
|
2
|
+
# Encoding: UTF-8
|
|
3
|
+
# frozen_string_literal: true
|
|
4
|
+
# =========================================================================== #
|
|
5
|
+
# This file will handline underline-functionality in a terminal. It
|
|
6
|
+
# supports basic colours and the HTML colours.
|
|
7
|
+
# =========================================================================== #
|
|
8
|
+
# require 'colours/toplevel_methods/underline.rb'
|
|
9
|
+
# Colours.return_underline
|
|
10
|
+
# =========================================================================== #
|
|
11
|
+
module Colours
|
|
12
|
+
|
|
13
|
+
require 'colours/toplevel_methods/revert.rb'
|
|
14
|
+
require 'colours/toplevel_methods/e.rb'
|
|
15
|
+
require 'colours/rgb/rgb.rb'
|
|
16
|
+
|
|
17
|
+
# ========================================================================= #
|
|
18
|
+
# === UNDERLINE_CODE
|
|
19
|
+
#
|
|
20
|
+
# To quickly test the underline-functionality, you can try:
|
|
21
|
+
#
|
|
22
|
+
# echo -e "\e[4mone two three\e[23m"
|
|
23
|
+
#
|
|
24
|
+
# ========================================================================= #
|
|
25
|
+
UNDERLINE_CODE = '4'
|
|
26
|
+
|
|
27
|
+
# ========================================================================= #
|
|
28
|
+
# === Colours.underline
|
|
29
|
+
#
|
|
30
|
+
# This method will "puts" the result of applying underline to a string,
|
|
31
|
+
# on the console/terminal. If you wish to do the output on your own
|
|
32
|
+
# then you have to use the method Colours.return_underline or its
|
|
33
|
+
# alias called Colours.string_underline.
|
|
34
|
+
#
|
|
35
|
+
# To test this, try:
|
|
36
|
+
#
|
|
37
|
+
# Colours.underline('Hello world!')
|
|
38
|
+
#
|
|
39
|
+
# ========================================================================= #
|
|
40
|
+
def self.underline(
|
|
41
|
+
i = '',
|
|
42
|
+
make_newline = false,
|
|
43
|
+
&block
|
|
44
|
+
)
|
|
45
|
+
e return_underline(i, make_newline, &block)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# ========================================================================= #
|
|
49
|
+
# === underline
|
|
50
|
+
# ========================================================================= #
|
|
51
|
+
def underline(
|
|
52
|
+
i = '',
|
|
53
|
+
make_newline = false
|
|
54
|
+
)
|
|
55
|
+
Colours.underline(i, make_newline)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# ========================================================================= #
|
|
59
|
+
# === Colours.return_underline
|
|
60
|
+
#
|
|
61
|
+
# The point of this method here is to make a given text (String) appear
|
|
62
|
+
# "underlined", via ANSI escape sequences. For underline the String
|
|
63
|
+
# that should be used is "\u001b[4m".
|
|
64
|
+
#
|
|
65
|
+
# This can be tested on the commandline such as via:
|
|
66
|
+
#
|
|
67
|
+
# echoen "\u001b[4m Underline \u001b[0m"
|
|
68
|
+
#
|
|
69
|
+
# Usage examples:
|
|
70
|
+
#
|
|
71
|
+
# puts ' ok | '+Colours.return_underline('Hello world!')+' | ok'
|
|
72
|
+
# puts ' ok | '+Colours.return_underline('Hello world!') { :slateblue }+' | ok'
|
|
73
|
+
#
|
|
74
|
+
# In January 2022 the second variant was removed, though. Let's keep things
|
|
75
|
+
# simple for now - perhaps in the future this may be re-enabled.
|
|
76
|
+
# ========================================================================= #
|
|
77
|
+
def self.return_underline(
|
|
78
|
+
show_this_text = 'This must be underline.',
|
|
79
|
+
make_newline = false,
|
|
80
|
+
use_this_as_revert_code = REVERT
|
|
81
|
+
)
|
|
82
|
+
# ===================================================================== #
|
|
83
|
+
# Build up our main string that codes for underline.
|
|
84
|
+
# ===================================================================== #
|
|
85
|
+
result = "\u001b[#{UNDERLINE_CODE}m".dup
|
|
86
|
+
# if block_given?
|
|
87
|
+
# # ===================================================================== #
|
|
88
|
+
# # Right now we assume that this must be a colour if it is supplied
|
|
89
|
+
# # via a block. However had, in January 2022 I realised that this
|
|
90
|
+
# # assumption is not always correct, so this was disabled for now.
|
|
91
|
+
# # At a later moment in time we may reconsider this.
|
|
92
|
+
# # ===================================================================== #
|
|
93
|
+
# result << ";38;2;"
|
|
94
|
+
# colour_replacement = colour_to_rgb_value(yield)
|
|
95
|
+
# result << colour_replacement
|
|
96
|
+
# end
|
|
97
|
+
# result << 'm'
|
|
98
|
+
if make_newline # Append a newline in this case.
|
|
99
|
+
show_this_text = "#{show_this_text}\n"
|
|
100
|
+
end
|
|
101
|
+
result << show_this_text
|
|
102
|
+
result << use_this_as_revert_code
|
|
103
|
+
return result
|
|
104
|
+
end; self.instance_eval { alias string_underline return_underline } # === Colours.string_underline
|
|
105
|
+
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
if __FILE__ == $PROGRAM_NAME
|
|
109
|
+
alias e puts
|
|
110
|
+
if ARGV.empty?
|
|
111
|
+
e Colours.underline('Hello world!')
|
|
112
|
+
e 'Hello world!'
|
|
113
|
+
# ======================================================================= #
|
|
114
|
+
# And then run some more tests:
|
|
115
|
+
# ======================================================================= #
|
|
116
|
+
require 'colours/toplevel_methods/use_colours.rb'
|
|
117
|
+
Colours.enable_html_colours
|
|
118
|
+
e Colours.palegreen('in palegreen:')
|
|
119
|
+
print ' '; print Colours.underline(txt) { :palegreen }
|
|
120
|
+
e Colours.slateblue('in slateblue:')
|
|
121
|
+
print ' '; print Colours.underline(txt) { :slateblue }
|
|
122
|
+
e Colours.orange('in orange:')
|
|
123
|
+
print ' '; print Colours.underline(txt) { :orange }
|
|
124
|
+
e Colours.crimson('in crimson:')
|
|
125
|
+
print ' '; print Colours.underline(txt) { :crimson }
|
|
126
|
+
else
|
|
127
|
+
puts Colours.underline(ARGV.join(' ').strip)
|
|
128
|
+
puts Colours.underline(ARGV.join(' ').strip) { :crimson }
|
|
129
|
+
end
|
|
130
|
+
end # underline one TWO three
|