colours 0.5.48
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 +867 -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 +850 -0
- data/lib/colours.rb +5 -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.rb +5 -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/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 +79 -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 +104 -0
- data/lib/colours/toplevel_methods/make_colour.rb +29 -0
- data/lib/colours/toplevel_methods/methods_related_to_html_colours.rb +325 -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/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 +114 -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 +13 -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,164 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# === Colours::RainbowColours
|
6
|
+
# =========================================================================== #
|
7
|
+
# require 'colours/rainbow_colours/do_parse_via_rainbow_colours.rb'
|
8
|
+
# =========================================================================== #
|
9
|
+
require 'colours/toplevel_methods/cat.rb'
|
10
|
+
require 'colours/toplevel_methods/clear_screen.rb'
|
11
|
+
require 'colours/toplevel_methods/e.rb'
|
12
|
+
# =========================================================================== #
|
13
|
+
# Require rainbow_colours specific code next:
|
14
|
+
# =========================================================================== #
|
15
|
+
require 'colours/rainbow_colours/check_for_trollop_being_available_or_exit.rb'
|
16
|
+
require 'colours/rainbow_colours/constants.rb'
|
17
|
+
require 'colours/rainbow_colours/paint_detected_mode.rb'
|
18
|
+
require 'colours/rainbow_colours/report_errors.rb'
|
19
|
+
|
20
|
+
module Colours
|
21
|
+
|
22
|
+
module RainbowColours
|
23
|
+
|
24
|
+
begin
|
25
|
+
require 'stringio'
|
26
|
+
rescue LoadError; end
|
27
|
+
|
28
|
+
begin
|
29
|
+
require 'trollop'
|
30
|
+
rescue LoadError; end
|
31
|
+
|
32
|
+
# ========================================================================= #
|
33
|
+
# === Colours::RainbowColours.do_parse_via_rainbow_colours
|
34
|
+
#
|
35
|
+
# This is the rainbow_colours initializer.
|
36
|
+
# ========================================================================= #
|
37
|
+
def self.do_parse_via_rainbow_colours(
|
38
|
+
i = ARGV
|
39
|
+
)
|
40
|
+
check_for_trollop_being_available_or_exit
|
41
|
+
# ======================================================================= #
|
42
|
+
# Setup the trollop-parser instance next.
|
43
|
+
# ======================================================================= #
|
44
|
+
trollop_parser = Trollop::Parser.new {
|
45
|
+
banner <<HEADER
|
46
|
+
|
47
|
+
Usage: rainbow_colours [OPTION]... [FILE]...
|
48
|
+
|
49
|
+
Display one or several files. Alternatively, obtain input via STDIN.
|
50
|
+
|
51
|
+
With no FILE, or when FILE is -, read standard input.
|
52
|
+
|
53
|
+
HEADER
|
54
|
+
banner ''
|
55
|
+
# ll | rainbowc -a
|
56
|
+
opt :animate, 'Enable psychedelics', short: 'a', :default => false
|
57
|
+
opt :spread, 'Rainbow spread', short: 'p', :default => DEFAULT_RAINBOW_SPREAD
|
58
|
+
opt :freq, 'Rainbow frequency', short: 'F', :default => 0.1
|
59
|
+
opt :seed, 'Rainbow seed, 0 = random', short: 'S', :default => 0
|
60
|
+
opt :duration, 'Animation duration', short: 'd', :default => 12
|
61
|
+
opt :speed, 'Animation speed', short: 's', :default => 20.0
|
62
|
+
opt :invert, 'Invert fg and bg', short: 'i', :default => false
|
63
|
+
opt :truecolor, '24-bit (truecolor)', short: 't', :default => false
|
64
|
+
opt :force, 'Force color even when stdout is not a tty', short: 'f', :default => false
|
65
|
+
opt :help, 'Show this help menu', short: 'h'
|
66
|
+
banner <<FOOTER
|
67
|
+
|
68
|
+
Examples:
|
69
|
+
|
70
|
+
rainbow_colours f - g Output f's contents, then stdin, then g's contents.
|
71
|
+
rainbow_colours Copy standard input to standard output.
|
72
|
+
fortune | rainbow_colours Display a rainbow cookie.
|
73
|
+
|
74
|
+
FOOTER
|
75
|
+
} # End of the help-banner.
|
76
|
+
# ======================================================================= #
|
77
|
+
# Keep the Trollop instance assigned to the variable opts.
|
78
|
+
# ======================================================================= #
|
79
|
+
opts = Trollop.with_standard_exception_handling(trollop_parser) {
|
80
|
+
begin
|
81
|
+
o = trollop_parser.parse(i) # Parse the given input here.
|
82
|
+
rescue Trollop::HelpNeeded # If we need some more help.
|
83
|
+
string_io_buffer = StringIO.new
|
84
|
+
trollop_parser.educate(string_io_buffer) # <- display the help message and then exit.
|
85
|
+
string_io_buffer.rewind
|
86
|
+
opts = {
|
87
|
+
animate: false,
|
88
|
+
speed: 20,
|
89
|
+
duration: 12,
|
90
|
+
os: rand(256),
|
91
|
+
spread: 8.0,
|
92
|
+
freq: 0.3
|
93
|
+
}
|
94
|
+
splitted = string_io_buffer.read.split("\n")
|
95
|
+
::Colours.cat(splitted, opts)
|
96
|
+
e
|
97
|
+
string_io_buffer.close # Close the buffer again.
|
98
|
+
exit 1
|
99
|
+
end
|
100
|
+
o
|
101
|
+
}
|
102
|
+
|
103
|
+
p.die(:spread, 'must be >= 0.1') if opts[:spread] < 0.1
|
104
|
+
p.die(:duration, 'must be >= 0.1') if opts[:duration] < 0.1
|
105
|
+
p.die(:speed, 'must be >= 0.1') if opts[:speed] < 0.1
|
106
|
+
|
107
|
+
# ======================================================================= #
|
108
|
+
# Build up the option-hash next.
|
109
|
+
# ======================================================================= #
|
110
|
+
opts[:os] = opts[:seed]
|
111
|
+
opts[:os] = rand(256) if opts[:os] == 0
|
112
|
+
|
113
|
+
begin
|
114
|
+
if ARGV.empty?
|
115
|
+
files = [:stdin]
|
116
|
+
else
|
117
|
+
files = ARGV[0..-1]
|
118
|
+
end
|
119
|
+
files.each { |file|
|
120
|
+
case file
|
121
|
+
when '-', :stdin
|
122
|
+
fd = ARGF
|
123
|
+
end
|
124
|
+
begin
|
125
|
+
fd = File.open(file) unless fd == ARGF
|
126
|
+
if $stdout.tty? or opts[:force]
|
127
|
+
# =============================================================== #
|
128
|
+
# Work on TTY terminals. This also includes terminals such
|
129
|
+
# as KDE Konsole. The second argument are the options passed
|
130
|
+
# towards Colours.cat().
|
131
|
+
# =============================================================== #
|
132
|
+
::Colours.cat(fd, opts)
|
133
|
+
else
|
134
|
+
until fd.eof? do
|
135
|
+
# ============================================================= #
|
136
|
+
# Keep on writing the input to $stdout here.
|
137
|
+
# ============================================================= #
|
138
|
+
$stdout.write(fd.read(8192))
|
139
|
+
end
|
140
|
+
end
|
141
|
+
rescue Errno::ENOENT
|
142
|
+
report_no_such_file_or_directory(file)
|
143
|
+
exit 1
|
144
|
+
rescue Errno::EACCES
|
145
|
+
report_permission_denied(file)
|
146
|
+
exit 1
|
147
|
+
rescue Errno::EISDIR
|
148
|
+
report_is_a_directory(file)
|
149
|
+
exit 1
|
150
|
+
rescue Errno::EPIPE
|
151
|
+
exit 1
|
152
|
+
end
|
153
|
+
}
|
154
|
+
rescue Interrupt
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
end; end
|
159
|
+
|
160
|
+
if __FILE__ == $PROGRAM_NAME
|
161
|
+
Colours::RainbowColours.do_parse_via_rainbow_colours(ARGV)
|
162
|
+
end # rainbow_colours
|
163
|
+
# ll | rainbow_colours
|
164
|
+
# ll | rainbow_colours -a
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'paint_detected_mode.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module Colours
|
8
|
+
|
9
|
+
module RainbowColours
|
10
|
+
|
11
|
+
# ========================================================================= #
|
12
|
+
# === @paint_detected_mode
|
13
|
+
# ========================================================================= #
|
14
|
+
if Object.const_defined? :Paint
|
15
|
+
@paint_detected_mode = Paint.detect_mode
|
16
|
+
else
|
17
|
+
@paint_detected_mode = nil
|
18
|
+
end
|
19
|
+
|
20
|
+
end; end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'colours/rainbow_colours/print_rainbow_line.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
require 'colours/toplevel_methods/e.rb'
|
8
|
+
require 'colours/rainbow_colours/constants.rb'
|
9
|
+
require 'colours/rainbow_colours/println_plain.rb'
|
10
|
+
|
11
|
+
module Colours
|
12
|
+
|
13
|
+
module RainbowColours
|
14
|
+
|
15
|
+
# ========================================================================= #
|
16
|
+
# === Colours::RainbowColours.e
|
17
|
+
# ========================================================================= #
|
18
|
+
def self.e(i = '')
|
19
|
+
::Colours.e(i)
|
20
|
+
end
|
21
|
+
|
22
|
+
# ========================================================================= #
|
23
|
+
# === Colours::RainbowColours.print_rainbow_line
|
24
|
+
#
|
25
|
+
# This line will do the colourizing part, on a per-line basis.
|
26
|
+
#
|
27
|
+
# The second and third arguments are Hashes.
|
28
|
+
#
|
29
|
+
# Simple invocation example:
|
30
|
+
#
|
31
|
+
# Colours::RainbowColours.print_rainbow_line("Hello world! \n" * 80)
|
32
|
+
#
|
33
|
+
# ========================================================================= #
|
34
|
+
def self.print_rainbow_line(
|
35
|
+
string = 'Hello world!',
|
36
|
+
defaults = {},
|
37
|
+
options_hash = {}
|
38
|
+
)
|
39
|
+
if string.is_a? Array
|
40
|
+
string = string.join(' ').strip
|
41
|
+
end
|
42
|
+
options_hash.merge!(defaults)
|
43
|
+
string = string.dup if string.frozen?
|
44
|
+
string.chomp! if string.include? N
|
45
|
+
# ======================================================================= #
|
46
|
+
# Next, get rid of ANSI colours, unless the string is nil.
|
47
|
+
# ======================================================================= #
|
48
|
+
if !string.nil? and ($stdout.tty? or options_hash[:force])
|
49
|
+
string.gsub!(STRIP_ANSI, '')
|
50
|
+
end
|
51
|
+
# ======================================================================= #
|
52
|
+
# Replace all tabs with 2 spaces.
|
53
|
+
# ======================================================================= #
|
54
|
+
string.gsub!("\t", ' ' * 2) if string.include? "\t"
|
55
|
+
if options_hash[:animate]
|
56
|
+
# ===================================================================== #
|
57
|
+
# Handle animated frames, as specified by the options-hash.
|
58
|
+
# ===================================================================== #
|
59
|
+
println_ani(string, options_hash)
|
60
|
+
else
|
61
|
+
RainbowColours.println_plain(string, options_hash)
|
62
|
+
end
|
63
|
+
e
|
64
|
+
end; self.instance_eval { alias print_line print_rainbow_line } # === Colours::RainbowColours.print_line
|
65
|
+
self.instance_eval { alias rainbow_line print_rainbow_line } # === Colours::RainbowColours.rainbow_line
|
66
|
+
self.instance_eval { alias say_in_rainbow_line print_rainbow_line } # === Colours::RainbowColours.say_in_rainbow_line
|
67
|
+
|
68
|
+
end; end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
require 'colours/rainbow_colours/println_plain.rb'
|
6
|
+
|
7
|
+
module Colours
|
8
|
+
|
9
|
+
module RainbowColours
|
10
|
+
|
11
|
+
# ========================================================================= #
|
12
|
+
# === Colours::RainbowColours.println_ani
|
13
|
+
#
|
14
|
+
# This method here will be called if the "animate option" was enabled,
|
15
|
+
# that is, set to true.
|
16
|
+
# ========================================================================= #
|
17
|
+
def self.println_ani(
|
18
|
+
str, opts = {}
|
19
|
+
)
|
20
|
+
return if str.empty? # Return early in this case.
|
21
|
+
(1..opts[:duration]).each { |irrelevant_variable|
|
22
|
+
print "\e[#{str.length}D"
|
23
|
+
opts[:os] += opts[:spread]
|
24
|
+
# ===================================================================== #
|
25
|
+
# Next, delegate to println_plain():
|
26
|
+
# ===================================================================== #
|
27
|
+
println_plain(str, opts)
|
28
|
+
sleep 1.0/opts[:speed]
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
end; end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'colours/rainbow_colours/println_plain.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
require 'colours/rainbow_colours/returnln_plain.rb'
|
8
|
+
|
9
|
+
module Colours
|
10
|
+
|
11
|
+
module RainbowColours
|
12
|
+
|
13
|
+
# ========================================================================= #
|
14
|
+
# === Colours::RainbowColours.println_plain
|
15
|
+
#
|
16
|
+
# This method will colourize the given input line.
|
17
|
+
#
|
18
|
+
# Usage example:
|
19
|
+
#
|
20
|
+
# Colours::RainbowColours.println_plain
|
21
|
+
# Colours::RainbowColours.println_plain 'one two three four five six seven eight'
|
22
|
+
#
|
23
|
+
# ========================================================================= #
|
24
|
+
def self.println_plain(
|
25
|
+
str = "Hello world! Good morning sunshine.\n",
|
26
|
+
defaults = {},
|
27
|
+
opts = {
|
28
|
+
spread: DEFAULT_RAINBOW_SPREAD,
|
29
|
+
os: rand(256),
|
30
|
+
truecolor: true
|
31
|
+
}
|
32
|
+
)
|
33
|
+
print returnln_plain(str, defaults, opts)
|
34
|
+
end
|
35
|
+
|
36
|
+
end; end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
module Colours
|
6
|
+
|
7
|
+
module RainbowColours
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === Colours::RainbowColours.rainbow
|
11
|
+
#
|
12
|
+
# Do the colour calculations next, via the rainbow() method.
|
13
|
+
#
|
14
|
+
# The frequency is typically a value such as 0.1.
|
15
|
+
#
|
16
|
+
# We will calculate the RGB values here (R, G, B).
|
17
|
+
#
|
18
|
+
# Invocation example:
|
19
|
+
#
|
20
|
+
# Colours::RainbowColours.rainbow(:default, 3) # => "#A5D604"
|
21
|
+
# Colours::RainbowColours.rainbow(:default, 12) # => "#F66C1C"
|
22
|
+
#
|
23
|
+
# ========================================================================= #
|
24
|
+
def self.rainbow(
|
25
|
+
frequency = 0.1, i
|
26
|
+
)
|
27
|
+
case frequency
|
28
|
+
when nil,
|
29
|
+
:default
|
30
|
+
frequency = 0.1
|
31
|
+
end
|
32
|
+
red = Math.sin(frequency * i + 0) * 127 + 128
|
33
|
+
green = Math.sin(frequency * i + 2 * Math::PI/3) * 127 + 128
|
34
|
+
blue = Math.sin(frequency * i + 4 * Math::PI/3) * 127 + 128
|
35
|
+
'#%02X%02X%02X' % [ red, green, blue ]
|
36
|
+
end
|
37
|
+
|
38
|
+
end; end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'colours/rainbow_colours/report_errors.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module Colours
|
8
|
+
|
9
|
+
module RainbowColours
|
10
|
+
|
11
|
+
# ========================================================================= #
|
12
|
+
# === Colours::RainbowColours.report_no_such_file_or_directory
|
13
|
+
# ========================================================================= #
|
14
|
+
def self.report_no_such_file_or_directory(file)
|
15
|
+
e "Colours::RainbowColours: #{file}: No such file or directory"
|
16
|
+
end
|
17
|
+
|
18
|
+
# ========================================================================= #
|
19
|
+
# === Colours::RainbowColours.report_is_a_directory
|
20
|
+
# ========================================================================= #
|
21
|
+
def self.report_is_a_directory(file)
|
22
|
+
e "Colours::RainbowColours: #{file}: Is a directory"
|
23
|
+
end
|
24
|
+
|
25
|
+
# ========================================================================= #
|
26
|
+
# === Colours::RainbowColours.report_permission_denied
|
27
|
+
# ========================================================================= #
|
28
|
+
def self.report_permission_denied(file)
|
29
|
+
e "Colours::RainbowColours: #{file}: Permission denied"
|
30
|
+
end
|
31
|
+
|
32
|
+
end; end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'colours/rainbow_colours/returnln_plain.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
require 'colours/rainbow_colours/rainbow.rb'
|
8
|
+
require 'colours/rainbow_colours/set_mode.rb'
|
9
|
+
|
10
|
+
module Colours
|
11
|
+
|
12
|
+
module RainbowColours
|
13
|
+
|
14
|
+
# ========================================================================= #
|
15
|
+
# === Colours::RainbowColours.returnln_plain
|
16
|
+
#
|
17
|
+
# This will return a rainbow-coloured text.
|
18
|
+
#
|
19
|
+
# The first argument is the text that you wish to display.
|
20
|
+
#
|
21
|
+
# Invocation example:
|
22
|
+
#
|
23
|
+
# puts Colours::RainbowColours.returnln_plain('abc def ' * 1000)
|
24
|
+
#
|
25
|
+
# ========================================================================= #
|
26
|
+
def self.returnln_plain(
|
27
|
+
str = "Hello world! Good morning sunshine.\n",
|
28
|
+
defaults = {},
|
29
|
+
options_hash = {
|
30
|
+
spread: DEFAULT_RAINBOW_SPREAD,
|
31
|
+
os: rand(256),
|
32
|
+
truecolor: true
|
33
|
+
}
|
34
|
+
)
|
35
|
+
options_hash.merge!(defaults)
|
36
|
+
RainbowColours.set_mode(options_hash[:truecolor])
|
37
|
+
the_chars = str.chomp.chars # We obtain the individual characters here.
|
38
|
+
# ======================================================================= #
|
39
|
+
# Iterate over the chars. i, aka the second argument, is the index.
|
40
|
+
# ======================================================================= #
|
41
|
+
result = ''.dup
|
42
|
+
the_chars.each_with_index { |character, index|
|
43
|
+
# ===================================================================== #
|
44
|
+
# Delegate towards the toplevel-method rainbow().
|
45
|
+
# ===================================================================== #
|
46
|
+
division_result = (
|
47
|
+
options_hash[:os]+index / options_hash[:spread]
|
48
|
+
)
|
49
|
+
# ===================================================================== #
|
50
|
+
# Next, we will obtain some ASCII value such as '#A5D604':
|
51
|
+
# ===================================================================== #
|
52
|
+
code = RainbowColours.rainbow(options_hash[:freq], division_result)
|
53
|
+
# ===================================================================== #
|
54
|
+
# Delegate towards Paint[] next. The painted character will be
|
55
|
+
# displayed one-per-char.
|
56
|
+
# This will yield a String such as "\e[38;2;16;236;130mo\e[0m".
|
57
|
+
# ===================================================================== #
|
58
|
+
result << Paint[character, *[ (:black if options_hash[:invert]), code ].compact ]
|
59
|
+
}
|
60
|
+
return result
|
61
|
+
end
|
62
|
+
|
63
|
+
end; end
|