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.

Files changed (143) hide show
  1. checksums.yaml +7 -0
  2. data/LICENCE.md +22 -0
  3. data/README.md +867 -0
  4. data/bin/colours +7 -0
  5. data/bin/html_colour_to_hex_value +7 -0
  6. data/bin/html_colourize +7 -0
  7. data/bin/print_rainbow_line +7 -0
  8. data/bin/rainbow_colours +7 -0
  9. data/colours.gemspec +75 -0
  10. data/doc/COLOUR_CODES_CHART.md +28 -0
  11. data/doc/HOW_TO_PICK_YOUR_OWN_COLOURS.md +29 -0
  12. data/doc/README.gen +850 -0
  13. data/lib/colours.rb +5 -0
  14. data/lib/colours/256_colours/support_for_256_colours.rb +180 -0
  15. data/lib/colours/autoalias_e.rb +10 -0
  16. data/lib/colours/autogenerated/README.md +2 -0
  17. data/lib/colours/autogenerated/support_for_256_colours.rb +2235 -0
  18. data/lib/colours/autogenerated/support_for_html_colours.rb +1778 -0
  19. data/lib/colours/autogenerated/toplevel_basic_colour_methods.rb +6366 -0
  20. data/lib/colours/autoinclude.rb +14 -0
  21. data/lib/colours/base/base.rb +23 -0
  22. data/lib/colours/basic_colours/README.md +4 -0
  23. data/lib/colours/basic_colours/basic_colours.rb +279 -0
  24. data/lib/colours/colour_methods/README.md +11 -0
  25. data/lib/colours/colour_methods/default_colour.rb +66 -0
  26. data/lib/colours/colour_methods/sargument.rb +70 -0
  27. data/lib/colours/colour_methods/scomments.rb +105 -0
  28. data/lib/colours/colour_methods/sdir.rb +66 -0
  29. data/lib/colours/colour_methods/sfancy.rb +84 -0
  30. data/lib/colours/colour_methods/sfile.rb +71 -0
  31. data/lib/colours/colour_methods/simportant.rb +92 -0
  32. data/lib/colours/colour_methods/snormal.rb +66 -0
  33. data/lib/colours/colour_methods/ssymlink.rb +102 -0
  34. data/lib/colours/colour_methods/swarn.rb +76 -0
  35. data/lib/colours/colour_table/README.md +3 -0
  36. data/lib/colours/colour_table/colour_table.rb +275 -0
  37. data/lib/colours/colours_e_autoinclude.rb +9 -0
  38. data/lib/colours/commandline/README.md +2 -0
  39. data/lib/colours/commandline/commandline.rb +44 -0
  40. data/lib/colours/commandline/menu.rb +111 -0
  41. data/lib/colours/constants/colour_constants.rb +299 -0
  42. data/lib/colours/constants/file_constants.rb +72 -0
  43. data/lib/colours/constants/hash_simple_colours.rb +146 -0
  44. data/lib/colours/constants/misc.rb +59 -0
  45. data/lib/colours/constants/newline.rb +14 -0
  46. data/lib/colours/constants/registered_colour_methods.rb +53 -0
  47. data/lib/colours/e.rb +5 -0
  48. data/lib/colours/e/README.md +13 -0
  49. data/lib/colours/e/autoinclude.rb +11 -0
  50. data/lib/colours/e/e.rb +35 -0
  51. data/lib/colours/eparse/eparse.rb +77 -0
  52. data/lib/colours/everything/autoinclude.rb +11 -0
  53. data/lib/colours/html_colours/README.md +1 -0
  54. data/lib/colours/html_colours/add_html_colours_onto_the_toplevel_namespace.rb +22 -0
  55. data/lib/colours/html_colours/hash_html_colours.rb +63 -0
  56. data/lib/colours/html_colours/html_colourize.rb +48 -0
  57. data/lib/colours/html_colours/is_this_html_colour_included.rb +64 -0
  58. data/lib/colours/html_colours/misc.rb +186 -0
  59. data/lib/colours/html_colours/show_html_colours.rb +85 -0
  60. data/lib/colours/kde_colour_palette/kde_colour_palette.rb +128 -0
  61. data/lib/colours/map_symbol_to_corresponding_colour/map_symbol_to_corresponding_colour.rb +219 -0
  62. data/lib/colours/module.rb +11 -0
  63. data/lib/colours/project/project_base_directory.rb +22 -0
  64. data/lib/colours/rainbow_colours/README.md +2 -0
  65. data/lib/colours/rainbow_colours/check_for_trollop_being_available_or_exit.rb +26 -0
  66. data/lib/colours/rainbow_colours/constants.rb +30 -0
  67. data/lib/colours/rainbow_colours/do_parse_via_rainbow_colours.rb +164 -0
  68. data/lib/colours/rainbow_colours/paint_detected_mode.rb +20 -0
  69. data/lib/colours/rainbow_colours/print_rainbow_line.rb +68 -0
  70. data/lib/colours/rainbow_colours/println_ani.rb +32 -0
  71. data/lib/colours/rainbow_colours/println_plain.rb +36 -0
  72. data/lib/colours/rainbow_colours/rainbow.rb +38 -0
  73. data/lib/colours/rainbow_colours/report_errors.rb +32 -0
  74. data/lib/colours/rainbow_colours/returnln_plain.rb +63 -0
  75. data/lib/colours/rainbow_colours/set_mode.rb +24 -0
  76. data/lib/colours/requires/require_all_colour_methods.rb +5 -0
  77. data/lib/colours/requires/require_commandline.rb +7 -0
  78. data/lib/colours/requires/require_eparse.rb +11 -0
  79. data/lib/colours/requires/require_rgb.rb +5 -0
  80. data/lib/colours/requires/require_sdir.rb +5 -0
  81. data/lib/colours/requires/require_sfile.rb +5 -0
  82. data/lib/colours/requires/require_the_256_colours_module.rb +16 -0
  83. data/lib/colours/requires/require_the_basic_colours.rb +7 -0
  84. data/lib/colours/requires/require_the_colour_methods.rb +34 -0
  85. data/lib/colours/requires/require_the_colour_table.rb +7 -0
  86. data/lib/colours/requires/require_the_colours_project.rb +52 -0
  87. data/lib/colours/requires/require_the_constants.rb +11 -0
  88. data/lib/colours/requires/require_the_html_colours.rb +11 -0
  89. data/lib/colours/requires/require_the_kde_colour_palette.rb +7 -0
  90. data/lib/colours/requires/require_the_toplevel_methods.rb +42 -0
  91. data/lib/colours/revert/revert.rb +106 -0
  92. data/lib/colours/rgb/rgb.rb +547 -0
  93. data/lib/colours/testing/README.md +2 -0
  94. data/lib/colours/testing/testing.rb +157 -0
  95. data/lib/colours/toplevel_methods/bold.rb +35 -0
  96. data/lib/colours/toplevel_methods/bold_and_italic.rb +36 -0
  97. data/lib/colours/toplevel_methods/cat.rb +39 -0
  98. data/lib/colours/toplevel_methods/clear_screen.rb +18 -0
  99. data/lib/colours/toplevel_methods/cliner.rb +19 -0
  100. data/lib/colours/toplevel_methods/col.rb +56 -0
  101. data/lib/colours/toplevel_methods/e.rb +63 -0
  102. data/lib/colours/toplevel_methods/esystem.rb +19 -0
  103. data/lib/colours/toplevel_methods/fancy_parse.rb +79 -0
  104. data/lib/colours/toplevel_methods/html_colourize.rb +64 -0
  105. data/lib/colours/toplevel_methods/is_on_roebe.rb +16 -0
  106. data/lib/colours/toplevel_methods/italic.rb +104 -0
  107. data/lib/colours/toplevel_methods/make_colour.rb +29 -0
  108. data/lib/colours/toplevel_methods/methods_related_to_html_colours.rb +325 -0
  109. data/lib/colours/toplevel_methods/misc.rb +95 -0
  110. data/lib/colours/toplevel_methods/open_this_file.rb +26 -0
  111. data/lib/colours/toplevel_methods/prefer_this_colour_schemata.rb +80 -0
  112. data/lib/colours/toplevel_methods/random_html_colour.rb +44 -0
  113. data/lib/colours/toplevel_methods/random_value.rb +37 -0
  114. data/lib/colours/toplevel_methods/remove_escape_sequence.rb +107 -0
  115. data/lib/colours/toplevel_methods/set_last_colour_used.rb +32 -0
  116. data/lib/colours/toplevel_methods/show_basic_colour_palette.rb +36 -0
  117. data/lib/colours/toplevel_methods/underline.rb +114 -0
  118. data/lib/colours/toplevel_methods/use_colours.rb +290 -0
  119. data/lib/colours/utility_scripts/README.md +2 -0
  120. data/lib/colours/utility_scripts/autogenerate.rb +291 -0
  121. data/lib/colours/version/version.rb +25 -0
  122. data/lib/colours/yaml/256_colours.yml +277 -0
  123. data/lib/colours/yaml/basic_colours.yml +23 -0
  124. data/lib/colours/yaml/html_colours.yml +835 -0
  125. data/lib/colours/yaml/kde_colour_palette.yml +183 -0
  126. data/lib/colours/yaml/prefer_this_colour_schemata.yml +15 -0
  127. data/lib/colours/yaml/use_these_values_for_the_colour_methods.yml +13 -0
  128. data/test/test.html +18 -0
  129. data/test/testing_256_colours_support.rb +29 -0
  130. data/test/testing_col.rb +10 -0
  131. data/test/testing_colours.rb +95 -0
  132. data/test/testing_colours_e.rb +13 -0
  133. data/test/testing_eparse.rb +13 -0
  134. data/test/testing_kde_colour_palette.rb +30 -0
  135. data/test/testing_konsole_submodule.rb +226 -0
  136. data/test/testing_map_symbol_to_corresponding_colour.rb +14 -0
  137. data/test/testing_rgb_to_hex.rb +32 -0
  138. data/test/testing_the_basic_colours_of_the_colours_project.rb +58 -0
  139. data/test/testing_the_colour_methods.rb +36 -0
  140. data/test/testing_the_constants_of_the_colours_project.rb +9 -0
  141. data/test/testing_the_html_colours_of_the_colours_project.rb +37 -0
  142. data/test/testing_whether_colours_will_be_used.rb +7 -0
  143. 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