colours 0.6.10
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of colours might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/LICENCE.md +22 -0
- data/README.md +970 -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/bin/remove_ansii_escape_sequences +7 -0
- data/colours.gemspec +76 -0
- data/doc/COLOUR_CODES_CHART.md +28 -0
- data/doc/HOW_TO_PICK_YOUR_OWN_COLOURS.md +29 -0
- data/doc/README.gen +927 -0
- data/doc/todo/todo.md +25 -0
- data/lib/colours/256_colours/support_for_256_colours.rb +190 -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 +6367 -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 +334 -0
- data/lib/colours/class/class.rb +125 -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 +301 -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 +547 -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 +83 -0
- data/lib/colours/toplevel_methods/html_colourize.rb +64 -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 +29 -0
- data/lib/colours/toplevel_methods/methods_related_to_html_colours.rb +350 -0
- data/lib/colours/toplevel_methods/misc.rb +156 -0
- data/lib/colours/toplevel_methods/open_this_file.rb +26 -0
- data/lib/colours/toplevel_methods/prefer_this_colour_schemata.rb +84 -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 +112 -0
- data/lib/colours/toplevel_methods/set_last_colour_used.rb +32 -0
- data/lib/colours/toplevel_methods/show_basic_colour_palette.rb +36 -0
- data/lib/colours/toplevel_methods/underline.rb +129 -0
- data/lib/colours/toplevel_methods/use_colours.rb +290 -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 +15 -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 +228 -0
@@ -0,0 +1,84 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'colours/toplevel_methods/prefer_this_colour_schemata.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module Colours
|
8
|
+
|
9
|
+
require 'colours/html_colours/add_html_colours_onto_the_toplevel_namespace.rb'
|
10
|
+
require 'colours/autogenerated/support_for_html_colours.rb'
|
11
|
+
|
12
|
+
# ========================================================================= #
|
13
|
+
# === @prefer_this_colour_schemata
|
14
|
+
#
|
15
|
+
# The following Array ranks which colour schemata we will try to use.
|
16
|
+
# More important entries should come on top.
|
17
|
+
#
|
18
|
+
# Konsole will be the default, normally, followed by the 256 colours; and
|
19
|
+
# then the basic colours.
|
20
|
+
#
|
21
|
+
# Of course you can decide on your own via the .yml file, and other
|
22
|
+
# methods that allow us to change this setting, but when it comes
|
23
|
+
# to implementations such as for simp() or sfancy() then we will
|
24
|
+
# honour the setting in the yaml file (if we use any colours at all,
|
25
|
+
# that is). The yaml file is typically called
|
26
|
+
# "prefer_this_colour_schemata.yml".
|
27
|
+
# ========================================================================= #
|
28
|
+
if File.exist? FILE_PREFER_THIS_COLOUR_SCHEMATA
|
29
|
+
@prefer_this_colour_schemata = YAML.load_file(FILE_PREFER_THIS_COLOUR_SCHEMATA)
|
30
|
+
end
|
31
|
+
|
32
|
+
# ========================================================================= #
|
33
|
+
# === @use_html_colours
|
34
|
+
#
|
35
|
+
# If the following variable is set to true then the HTML colours will
|
36
|
+
# be used, if available. These are colours such as 'slateblue' or
|
37
|
+
# 'crimson'.
|
38
|
+
# ========================================================================= #
|
39
|
+
@use_html_colours = false
|
40
|
+
|
41
|
+
# ========================================================================= #
|
42
|
+
# === @use_256_colours
|
43
|
+
# ========================================================================= #
|
44
|
+
@use_256_colours = false
|
45
|
+
|
46
|
+
# ========================================================================= #
|
47
|
+
# === @use_basic_colours
|
48
|
+
# ========================================================================= #
|
49
|
+
@use_basic_colours = false
|
50
|
+
|
51
|
+
# ========================================================================= #
|
52
|
+
# Next, we will set some other toplevel instance variables based on
|
53
|
+
# the value of this yaml file.
|
54
|
+
# ========================================================================= #
|
55
|
+
if @prefer_this_colour_schemata
|
56
|
+
first_entry = @prefer_this_colour_schemata[1]
|
57
|
+
_second_entry = @prefer_this_colour_schemata[2]
|
58
|
+
_third_entry = @prefer_this_colour_schemata[3]
|
59
|
+
|
60
|
+
case first_entry
|
61
|
+
when :html_colours
|
62
|
+
@use_html_colours = true
|
63
|
+
when :support_for_256_colours
|
64
|
+
@use_256_colours = true
|
65
|
+
when :basic_colours
|
66
|
+
@use_basic_colours = true
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
# ========================================================================= #
|
71
|
+
# === Colours.prefer_which_colour_schemata?
|
72
|
+
# ========================================================================= #
|
73
|
+
def self.prefer_which_colour_schemata?
|
74
|
+
@prefer_this_colour_schemata[1].to_sym if @prefer_this_colour_schemata
|
75
|
+
end; self.instance_eval { alias prefer_which_colour_scheme? prefer_which_colour_schemata? } # === Colours.prefer_which_colour_scheme
|
76
|
+
|
77
|
+
# ========================================================================= #
|
78
|
+
# Designate @use_256_colours to true:
|
79
|
+
# ========================================================================= #
|
80
|
+
if prefer_which_colour_schemata? == :support_for_256_colours
|
81
|
+
@use_256_colours = true
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'colours/toplevel_methods/random_html_colour.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
require 'colours/html_colours/misc.rb'
|
8
|
+
|
9
|
+
module Colours
|
10
|
+
|
11
|
+
# =========================================================================== #
|
12
|
+
# === Colours.random_html_colour
|
13
|
+
#
|
14
|
+
# This method will simply return a (one) random HTML colour, in long
|
15
|
+
# format, e. g. "teal" or "slateblue".
|
16
|
+
#
|
17
|
+
# If you wish to have it colourized properly, you need to use another
|
18
|
+
# method.
|
19
|
+
#
|
20
|
+
# Usage examples:
|
21
|
+
# Colours.random_colour? # => "teal"
|
22
|
+
# Colours.random_colour? # => "blueviolet"
|
23
|
+
# =========================================================================== #
|
24
|
+
def self.random_html_colour
|
25
|
+
::Colours::HtmlColours.random_colour?
|
26
|
+
end; self.instance_eval { alias random_colour? random_html_colour } # === Colours.random_colour?
|
27
|
+
self.instance_eval { alias return_random_html_colour random_html_colour } # === Colours.return_random_html_colour
|
28
|
+
|
29
|
+
# =========================================================================== #
|
30
|
+
# === random_colour?
|
31
|
+
# =========================================================================== #
|
32
|
+
def random_colour?
|
33
|
+
::Colours::HtmlColours.random_colour?
|
34
|
+
end; alias random_colour random_colour? # === random_colour
|
35
|
+
alias random random_colour? # === random
|
36
|
+
alias sample random_colour? # === sample
|
37
|
+
alias random_html_colour random_colour? # === random_html_colour
|
38
|
+
alias return_random_html_colour random_colour? # === return_random_html_colour
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
if __FILE__ == $PROGRAM_NAME
|
43
|
+
puts Colours.random_colour? # => "teal"
|
44
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'colours/toplevel_methods/random_value.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module Colours
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === Colours.random_value?
|
11
|
+
#
|
12
|
+
# We will obtain a random value between 0 and 255, hence why we will
|
13
|
+
# use rand(256).
|
14
|
+
# ========================================================================= #
|
15
|
+
def self.random_value?
|
16
|
+
rand(256)
|
17
|
+
end; self.instance_eval { alias random_value random_value? } # === Colours.random_value
|
18
|
+
self.instance_eval { alias rvalue random_value? } # === Colours.rvalue
|
19
|
+
self.instance_eval { alias r? random_value? } # === Colours.r?
|
20
|
+
self.instance_eval { alias g? random_value? } # === Colours.g?
|
21
|
+
self.instance_eval { alias b? random_value? } # === Colours.b?
|
22
|
+
|
23
|
+
# ========================================================================= #
|
24
|
+
# === random_value
|
25
|
+
#
|
26
|
+
# We will obtain a random value between 0 and 255, hence why we will
|
27
|
+
# use rand(256).
|
28
|
+
# ========================================================================= #
|
29
|
+
def random_value?
|
30
|
+
Colours.random_value?
|
31
|
+
end; alias rvalue random_value? # === rvalue
|
32
|
+
alias random_value random_value? # === random_value
|
33
|
+
alias r? random_value? # === r?
|
34
|
+
alias g? random_value? # === g?
|
35
|
+
alias b? random_value? # === b?
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'colours/toplevel_methods/remove_escape_sequence.rb'
|
6
|
+
# Colours.remove_escape_sequence
|
7
|
+
# =========================================================================== #
|
8
|
+
module Colours
|
9
|
+
|
10
|
+
require 'colours/constants/colour_constants.rb'
|
11
|
+
|
12
|
+
# ========================================================================= #
|
13
|
+
# === Colours.remove_escape_sequence
|
14
|
+
#
|
15
|
+
# The method Colours.remove_escape_sequence() will remove all Ansi
|
16
|
+
# Escape sequences from a given string.
|
17
|
+
# ========================================================================= #
|
18
|
+
def self.remove_escape_sequence(i = ARGV)
|
19
|
+
if i.is_a? Array
|
20
|
+
i = i.join("\n")
|
21
|
+
end
|
22
|
+
i = i.to_s.dup
|
23
|
+
# ======================================================================= #
|
24
|
+
# Iterate over the registered ansi-colours next.
|
25
|
+
# ======================================================================= #
|
26
|
+
ARRAY_REGISTERED_ANSI_COLOURS.each {|entry|
|
27
|
+
if i.include? entry
|
28
|
+
entry = Regexp.quote(entry)
|
29
|
+
i.sub!(/#{entry}/, '')
|
30
|
+
end
|
31
|
+
# ===================================================================== #
|
32
|
+
# Next, check for KDE konsole colours. We must use "" there, not ''.
|
33
|
+
# ===================================================================== #
|
34
|
+
if i.include?("\e[") and i =~ /\d+m/ # Such as: "\e[38;2;220;20;60m|"
|
35
|
+
# =================================================================== #
|
36
|
+
# The next regex will (hopefully) remove all escape-characters
|
37
|
+
# from the given String.
|
38
|
+
# =================================================================== #
|
39
|
+
regex_for_html_colours = # Detect entries such as: \e[38;2;106;90;205m
|
40
|
+
/(\e\[\d{2};\d{1};\d{3};\d{1,2};\d{3}m)/ # See: https://rubular.com/r/tG3XeOK5NPsfmI
|
41
|
+
i.gsub!(regex_for_html_colours, '')
|
42
|
+
# =================================================================== #
|
43
|
+
# See: https://rubular.com/r/SdS28fAGSxIELn
|
44
|
+
# =================================================================== #
|
45
|
+
# /(\\e\[\d{1,2};?\d{1,2};?\d{0,3};?\d{0,3};?\d{1,2}m|\\e\[\d{0,2}m|\\e\[K|\\e\[\d{0,2};\d{0,2}m|(\\e\[.+\dm)|\\e\[0;37m)/
|
46
|
+
[
|
47
|
+
/\e\[\d{1,2};?\d{1,2};?\d{0,3};?\d{0,3};?\d{1,2}m/,
|
48
|
+
/\\e\[\d{0,2}m|\\e\[K|\\e\[\d{0,2};\d{0,2}m/,
|
49
|
+
/\\e\[.+\dm/,
|
50
|
+
/\\e\[0;37m/
|
51
|
+
].each {|regex_to_use|
|
52
|
+
i.gsub!(regex_to_use, '')
|
53
|
+
}
|
54
|
+
end
|
55
|
+
}
|
56
|
+
return i
|
57
|
+
end; self.instance_eval { alias remove remove_escape_sequence } # === Colours.remove
|
58
|
+
self.instance_eval { alias remove_escape_sequences remove_escape_sequence } # === Colours.remove_escape_sequences
|
59
|
+
self.instance_eval { alias remove_colours remove_escape_sequence } # === Colours.remove_colours
|
60
|
+
self.instance_eval { alias escape remove_escape_sequence } # === Colours.escape
|
61
|
+
|
62
|
+
# ========================================================================= #
|
63
|
+
# === Colours.remove_trailing_end_from
|
64
|
+
#
|
65
|
+
# The second argument to this method can be the escape sequence that you
|
66
|
+
# wish to remove.
|
67
|
+
#
|
68
|
+
# Invocation example:
|
69
|
+
#
|
70
|
+
# x = Colours.remove_trailing_end_from("\e[38;2;70;130;180m\e[0;37m") # => "\e[38;2;70;130;180m"
|
71
|
+
#
|
72
|
+
# ========================================================================= #
|
73
|
+
def self.remove_trailing_end_from(
|
74
|
+
i,
|
75
|
+
remove_this_escape_sequence = Colours.revert?
|
76
|
+
)
|
77
|
+
quoted = Regexp.quote(remove_this_escape_sequence)
|
78
|
+
# ======================================================================= #
|
79
|
+
# Anchor it at the end via $.
|
80
|
+
# ======================================================================= #
|
81
|
+
return i.sub(
|
82
|
+
/#{quoted}$/, ''
|
83
|
+
)
|
84
|
+
end; self.instance_eval { alias remove_trailing_escape_part remove_trailing_end_from } # === Colours.remove_trailing_escape_part
|
85
|
+
self.instance_eval { alias remove_trailing_ansii_escape_code remove_trailing_end_from } # === Colours.remove_trailing_ansii_escape_code
|
86
|
+
self.instance_eval { alias remove_trailing_ANSII_escape_code remove_trailing_end_from } # === Colours.remove_trailing_ANSII_escape_code
|
87
|
+
self.instance_eval { alias remove_trailing_escape_code remove_trailing_end_from } # === Colours.remove_trailing_escape_code
|
88
|
+
self.instance_eval { alias remove_trailing_code remove_trailing_end_from } # === Colours.remove_trailing_code
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
if __FILE__ == $PROGRAM_NAME
|
93
|
+
alias e puts
|
94
|
+
begin
|
95
|
+
require 'colours/autoinclude'
|
96
|
+
rescue LoadError; e 'the colours gem is not available.'; end
|
97
|
+
include Colours
|
98
|
+
e
|
99
|
+
e 'Next testing an escape sequence (which will be shown via pp only):'
|
100
|
+
e
|
101
|
+
x = "\e[01m\e[Kcc1:\e[m\e[K \e[01;35m\e[Kwarning: \e[m\e[K-Wabi won't warn about anything [\e[01;35m\e[K-Wabi\e[m\e[K]
|
102
|
+
|
103
|
+
A\e[38;2;220;20;60m|AGCTT"
|
104
|
+
pp x
|
105
|
+
e
|
106
|
+
x = Colours.remove_escape_sequence(x)
|
107
|
+
e
|
108
|
+
pp x
|
109
|
+
e x
|
110
|
+
pp Colours.remove_escape_sequences(Colours.slateblue('Hello world!')) # => "\e[38;2;106;90;205mHello world!"
|
111
|
+
p Colours.slateblue('Hello world!') # => "\e[38;2;106;90;205mHello world!\e[0;37m"
|
112
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'colours/toplevel_methods/set_last_colour_used.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module Colours
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === @last_colour_used
|
11
|
+
#
|
12
|
+
# This instance variable keeps track what the last colour used was.
|
13
|
+
# ========================================================================= #
|
14
|
+
@last_colour_used = nil
|
15
|
+
|
16
|
+
# ========================================================================= #
|
17
|
+
# === last_colour_used?
|
18
|
+
#
|
19
|
+
# Tell us which colour was used last.
|
20
|
+
# ========================================================================= #
|
21
|
+
def last_colour_used?
|
22
|
+
@last_colour_used.to_s # Always required a string.
|
23
|
+
end
|
24
|
+
|
25
|
+
# ========================================================================= #
|
26
|
+
# === Colours.set_last_colour_used
|
27
|
+
# ========================================================================= #
|
28
|
+
def self.set_last_colour_used(i)
|
29
|
+
@last_colour_used = i
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal = true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'colours/toplevel_methods/show_basic_colour_palette.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
require 'colours/constants/hash_simple_colours.rb'
|
8
|
+
require 'colours/toplevel_methods/cliner.rb'
|
9
|
+
require 'colours/toplevel_methods/e.rb'
|
10
|
+
require 'colours/toplevel_methods/make_colour.rb'
|
11
|
+
|
12
|
+
module Colours
|
13
|
+
|
14
|
+
# ========================================================================= #
|
15
|
+
# === Colours.show_basic_colour_palette
|
16
|
+
#
|
17
|
+
# This will show a colour palette on the commandline.
|
18
|
+
# ========================================================================= #
|
19
|
+
def self.show_basic_colour_palette
|
20
|
+
e
|
21
|
+
MAIN_COLOURS.reject {|e| e == :black }.each { |entry|
|
22
|
+
make_colour(entry) # make_colour() is defined in this file here.
|
23
|
+
}
|
24
|
+
cliner
|
25
|
+
SECONDARY_COLOURS.each { |entry|
|
26
|
+
make_colour(entry)
|
27
|
+
}
|
28
|
+
e
|
29
|
+
end; self.instance_eval { alias show_palette show_basic_colour_palette } # === Colours.show_palette
|
30
|
+
self.instance_eval { alias show_colour_palette show_basic_colour_palette } # === Colours.show_colour_palette
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
if __FILE__ == $PROGRAM_NAME
|
35
|
+
Colours.show_basic_colour_palette
|
36
|
+
end # show_basic_colour_palette
|
@@ -0,0 +1,129 @@
|
|
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/revert/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[4m".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
|
+
result
|
104
|
+
end; self.instance_eval { alias string_underline return_underline } # === Colours.string_underline
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
if __FILE__ == $PROGRAM_NAME
|
109
|
+
if ARGV.empty?
|
110
|
+
puts Colours.underline('Hello world!')
|
111
|
+
puts 'Hello world!'
|
112
|
+
# ======================================================================= #
|
113
|
+
# And then run some more tests:
|
114
|
+
# ======================================================================= #
|
115
|
+
require 'colours/toplevel_methods/use_colours.rb'
|
116
|
+
Colours.enable_html_colours
|
117
|
+
e Colours.palegreen('in palegreen:')
|
118
|
+
print ' '; print Colours.underline(txt) { :palegreen }
|
119
|
+
e Colours.slateblue('in slateblue:')
|
120
|
+
print ' '; print Colours.underline(txt) { :slateblue }
|
121
|
+
e Colours.orange('in orange:')
|
122
|
+
print ' '; print Colours.underline(txt) { :orange }
|
123
|
+
e Colours.crimson('in crimson:')
|
124
|
+
print ' '; print Colours.underline(txt) { :crimson }
|
125
|
+
else
|
126
|
+
puts Colours.underline(ARGV.join(' ').strip)
|
127
|
+
puts Colours.underline(ARGV.join(' ').strip) { :crimson }
|
128
|
+
end
|
129
|
+
end # underline one TWO three
|