opn 1.0.53

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: ad37cfbafba68b29322fb486e17f4e4f95106f887a7cb8073198f97953d878e4
4
+ data.tar.gz: f670ec3b38060b485f5ff4595db22f86c18aaa232de1cb144abdee515ab1d484
5
+ SHA512:
6
+ metadata.gz: fd799fcd0aec60508ca7ed1b8b30e6099c7042e44174e70e0ed0b6d81b05cc7248df44176e4f286b64df24bfd8347682e43f4a5f9dc435949ae21cc153032156
7
+ data.tar.gz: 00350c57d8b1ffb57c78f155d2687a13994c6548dbc97910d336342c82f3b742b7f5298579281e74eb77e2f89577e1ee55684ce00146fc45d46aa11953de2b94
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'opn/opn.rb'
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ module Opn
6
+
7
+ # ========================================================================= #
8
+ # === @use_colours
9
+ #
10
+ # Whether to use colours.
11
+ # ========================================================================= #
12
+ @use_colours = true
13
+
14
+ # ========================================================================= #
15
+ # === Opn.use_colours?
16
+ # ========================================================================= #
17
+ def self.use_colours?
18
+ @use_colours
19
+ end
20
+
21
+ # ========================================================================= #
22
+ # === Opn.disable_colours
23
+ #
24
+ # We can disable colours too.
25
+ # ========================================================================= #
26
+ def self.disable_colours
27
+ @use_colours = false
28
+ end
29
+
30
+ end
@@ -0,0 +1,331 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'opn/version/version.rb'
6
+ require 'opn/colours.rb'
7
+
8
+ module Opn
9
+
10
+ # ========================================================================= #
11
+ # === @be_verbose
12
+ #
13
+ # Whether we will be verbose or whether we will be not.
14
+ # ========================================================================= #
15
+ @be_verbose = true
16
+
17
+ # ========================================================================= #
18
+ # === Opn.be_verbose?
19
+ # ========================================================================= #
20
+ def self.be_verbose?
21
+ @be_verbose
22
+ end
23
+
24
+ # ========================================================================= #
25
+ # === Opn.namespace
26
+ #
27
+ # This is a simplified variant, if you just need the namespace.
28
+ #
29
+ # If you need more flexibility, then use Opn.opn() directly - it will
30
+ # support more arguments.
31
+ # ========================================================================= #
32
+ def self.namespace(
33
+ input, optional_extra_arguments = nil
34
+ )
35
+ Opn.opn(namespace: input) { optional_extra_arguments }
36
+ end
37
+
38
+ # ========================================================================= #
39
+ # === Opn.opn
40
+ #
41
+ # This is the main method of this project.
42
+ #
43
+ # If we wish to be silent or set other options, we can do this:
44
+ #
45
+ # Opn.opn :be_silent
46
+ # Opn.opn :no_newline
47
+ # Opn.opn :no_colours
48
+ # Opn.opn(namespace: 'YoThere')
49
+ # Opn.opn(namespace: '→')
50
+ # Opn.opn(namespace: 'YoThere', be_verbose: false)
51
+ #
52
+ # Since as of September 2017, we can also pad the output if a key called
53
+ # :padding is passed. The argument should be like this:
54
+ #
55
+ # padding: 18
56
+ #
57
+ # This means to use up to 18 characters, padding via ' '.
58
+ # ========================================================================= #
59
+ def self.opn(
60
+ use_colours = Opn.use_colours?,
61
+ be_verbose = be_verbose?,
62
+ use_this_as_namespace = ''
63
+ )
64
+ # ======================================================================= #
65
+ # === Default values
66
+ #
67
+ # First, some default variables for intrinsic behaviour of this method.
68
+ # ======================================================================= #
69
+ shall_we_append_a_colon_character = true # By default, we append ':'.
70
+ append_newline = false
71
+ use_padding = false
72
+ may_we_display_anything = true # If true then we will show output.
73
+
74
+ # ======================================================================= #
75
+ # Hardcoded colours follow next.
76
+ # ======================================================================= #
77
+ grey = "\e[1;30m"
78
+ green = "\e[0;32m"
79
+ # ======================================================================= #
80
+ # Next keep a link towards the colour that we will use.
81
+ # ======================================================================= #
82
+ use_this_colour = grey
83
+ reset_terminal = "\e[0;37m"
84
+
85
+ # ======================================================================= #
86
+ # Work on the first argument given to this method next:
87
+ # ======================================================================= #
88
+ case use_colours
89
+ when :default
90
+ use_colours = Opn.use_colours?
91
+ when :use_colours
92
+ use_colours = true
93
+ when :no_colours
94
+ use_colours = false
95
+ be_verbose = be_verbose?
96
+ when :no_newline # This is the default anyway.
97
+ when :newline
98
+ append_newline = true
99
+ when :be_silent, :be_quiet
100
+ use_colours = @use_colours # This is the default. We restore it here.
101
+ be_verbose = false
102
+ when :be_verbose
103
+ use_colours = Opn.use_colours?
104
+ be_verbose = be_verbose?
105
+ end
106
+ case be_verbose
107
+ when nil
108
+ be_verbose = be_verbose?
109
+ when :be_quiet
110
+ be_verbose = false
111
+ end
112
+ # ======================================================================= #
113
+ # use_this_as_namespace = File.basename(__FILE__) # Could use this here.
114
+ # use_this_as_namespace = caller[0]
115
+ # ======================================================================= #
116
+ the_caller = caller
117
+ if use_this_as_namespace.empty? # This is the default case then.
118
+ if the_caller.size > 1
119
+ use_this_as_namespace = the_caller[1]
120
+ else
121
+ use_this_as_namespace = the_caller.first
122
+ end
123
+ end
124
+ # ======================================================================= #
125
+ # === use_colours
126
+ #
127
+ # Next, we will handle the case when use_colours is a Hash. This may
128
+ # quite often be the case, as a Hash is more flexible than most other
129
+ # "types" in Ruby.
130
+ #
131
+ # This can be used for e. g. namespace: 'RBT::Compile'
132
+ # ======================================================================= #
133
+ if use_colours.is_a? Hash
134
+ copy = use_colours.dup # Keep a reference copy here.
135
+ # =================================================================== #
136
+ # === :append_colon
137
+ # =================================================================== #
138
+ if use_colours.has_key? :append_colon
139
+ shall_we_append_a_colon_character = use_colours.delete(:append_colon)
140
+ end
141
+ if use_colours.has_key? :use_this_as_namespace
142
+ use_this_as_namespace = use_colours.fetch(:use_this_as_namespace)
143
+ elsif use_colours.has_key? :use_this_namespace
144
+ use_this_as_namespace = use_colours.fetch(:use_this_namespace)
145
+ elsif use_colours.has_key? :namespace
146
+ use_this_as_namespace = use_colours.fetch(:namespace)
147
+ end
148
+ if use_colours.has_key? :use_opn
149
+ may_we_display_anything = use_colours.fetch(:use_opn)
150
+ end
151
+ if use_colours.has_key? :be_verbose
152
+ be_verbose = use_colours.delete(:be_verbose)
153
+ end
154
+ use_colours = true # Restore the default again here, since it was a Hash before.
155
+ # ===================================================================== #
156
+ # Check for more keys though:
157
+ # ===================================================================== #
158
+ if copy.has_key? :use_colours
159
+ use_colours = copy.delete(:use_colours)
160
+ end
161
+ # ===================================================================== #
162
+ # === :trailing_colon
163
+ # ===================================================================== #
164
+ if copy.has_key? :trailing_colon
165
+ shall_we_append_a_colon_character = copy.delete(:trailing_colon)
166
+ # ===================================================================== #
167
+ # === :no_trailing
168
+ # ===================================================================== #
169
+ elsif copy.has_key? :no_trailing
170
+ shall_we_append_a_colon_character = copy.delete(:no_trailing)
171
+ end
172
+ # ===================================================================== #
173
+ # === Check for :padding value
174
+ # ===================================================================== #
175
+ if copy.has_key? :padding
176
+ use_padding = true
177
+ use_this_padding = copy.delete(:padding).to_i # Must be an Integer.
178
+ end
179
+ end
180
+ # ======================================================================= #
181
+ # Check for Hash as namespace.
182
+ # ======================================================================= #
183
+ if use_this_as_namespace.is_a?(Hash) and use_this_as_namespace.has_key?(:namespace)
184
+ use_this_as_namespace = use_this_as_namespace.delete(:namespace)
185
+ end
186
+ # ======================================================================= #
187
+ # Next we split on the namespace, but this may be problematic when
188
+ # our input contains more than one ':' such as 'RBT::Compile'.
189
+ # In this case, we assume that the user is smarter than we are,
190
+ # and we will NOT split on such input provided.
191
+ # ======================================================================= #
192
+ if use_this_as_namespace.is_a? String
193
+ unless use_this_as_namespace.include? '::' # ^^^ See above for the explanation.
194
+ use_this_as_namespace = File.basename(use_this_as_namespace.split(':').first)
195
+ end
196
+ if use_this_as_namespace.include? '_' # Assume Camelcase provided here.
197
+ use_this_as_namespace = use_this_as_namespace.split('_').map(&:capitalize).join
198
+ else # Else upcase the first argument always.
199
+ if use_this_as_namespace.frozen?
200
+ use_this_as_namespace = use_this_as_namespace.dup
201
+ end
202
+ use_this_as_namespace[0,1] = use_this_as_namespace[0,1].upcase
203
+ end
204
+ # ======================================================================= #
205
+ # Do some sanitizing next, by getting rid of .rb entries.
206
+ # ======================================================================= #
207
+ use_this_as_namespace = use_this_as_namespace.sub(/\.rb/,'')
208
+ end
209
+ # ======================================================================= #
210
+ # Handle blocks next.
211
+ # ======================================================================= #
212
+ if block_given?
213
+ yielded = yield
214
+ case yielded
215
+ when :no_trailing_colon,
216
+ :no_trailing_character,
217
+ :no_trailing_char,
218
+ :no_trailing,
219
+ :no_colon,
220
+ :no_semicolon,
221
+ :short
222
+ shall_we_append_a_colon_character = false
223
+ when :show_only_the_name_of_the_class, :display_only_last_name
224
+ # =================================================================== #
225
+ # In this case, show only the name of the main class. But only
226
+ # if the namespace includes a '::'.
227
+ # =================================================================== #
228
+ if use_this_as_namespace.include? '::'
229
+ use_this_as_namespace = use_this_as_namespace.split('::').last
230
+ end
231
+ # ===================================================================== #
232
+ # === :no_colours
233
+ # ===================================================================== #
234
+ when :no_colours, :disable_colours
235
+ Opn.disable_colours
236
+ # ===================================================================== #
237
+ # Next, we ought to handle Hashes passed to this method via a block.
238
+ # ===================================================================== #
239
+ when Hash
240
+ # =================================================================== #
241
+ # === :append_colon
242
+ # =================================================================== #
243
+ if yielded.has_key? :append_colon
244
+ shall_we_append_a_colon_character = yielded.delete(:append_colon)
245
+ end
246
+ if yielded.has_key?(:use_this_as_namespace)
247
+ use_this_as_namespace = yielded.delete :use_this_as_namespace
248
+ elsif yielded.has_key?(:use_this_namespace)
249
+ use_this_as_namespace = yielded.delete :use_this_namespace
250
+ elsif yielded.has_key?(:namespace)
251
+ use_this_as_namespace = yielded.delete :namespace
252
+ elsif yielded.has_key?(:trailing_colon)
253
+ shall_we_append_a_colon_character = yielded.delete(:trailing_colon)
254
+ elsif yielded.has_key?(:use_colours)
255
+ use_colours = yielded.delete(:use_colours)
256
+ end
257
+ if yielded.has_key? :use_this_colour
258
+ use_this_colour = return_escape_sequence_for_this_colour(
259
+ yielded[:use_this_colour]
260
+ )
261
+ end
262
+ end
263
+ end
264
+ _ = ''.dup
265
+ if use_colours
266
+ _ << use_this_colour
267
+ end
268
+ # ======================================================================= #
269
+ # Determine whether we shall append a colon character next:
270
+ # ======================================================================= #
271
+ if shall_we_append_a_colon_character
272
+ unless use_this_as_namespace.end_with? '→' # The → is a general exception.
273
+ use_this_as_namespace << ':'
274
+ end
275
+ end
276
+ use_this_as_namespace << ' ' if use_this_as_namespace.end_with? ':'
277
+ # ======================================================================= #
278
+ # Honour padding-operations onto the main Namespace next.
279
+ # ======================================================================= #
280
+ if use_padding
281
+ use_this_as_namespace = use_this_as_namespace.ljust(use_this_padding)
282
+ end
283
+ # ======================================================================= #
284
+ # Add the separator here.
285
+ # ======================================================================= #
286
+ _ << use_this_as_namespace
287
+ _ << green+reset_terminal if use_colours
288
+ _ << "\n" if append_newline
289
+ if may_we_display_anything
290
+ print _ if be_verbose
291
+ end
292
+ return _
293
+ end
294
+
295
+ # ========================================================================= #
296
+ # === Opn.opne
297
+ #
298
+ # To test this, do:
299
+ # Opn.opne 'Hello world!'
300
+ # ========================================================================= #
301
+ def self.opne(i = '')
302
+ Opn.opn
303
+ puts i
304
+ end
305
+
306
+ # ========================================================================= #
307
+ # === opne
308
+ # ========================================================================= #
309
+ def opne(i = '')
310
+ Opn.opne(i)
311
+ end
312
+
313
+ # ========================================================================= #
314
+ # === Opn.return_escape_sequence_for_this_colour
315
+ #
316
+ # This method can return the proper colour code.
317
+ # ========================================================================= #
318
+ def self.return_escape_sequence_for_this_colour(
319
+ i = :green
320
+ )
321
+ i = i.to_sym
322
+ case i
323
+ when :grey
324
+ i = "\e[0;30m"
325
+ when :green
326
+ i = "\e[0;32m"
327
+ end
328
+ i
329
+ end
330
+
331
+ end
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'opn/module.rb'
6
+
7
+ # =========================================================================== #
8
+ # === opn (opn tag)
9
+ #
10
+ # This method will give the name of this script, with (optionally)
11
+ # colours.
12
+ # =========================================================================== #
13
+ def opn(
14
+ use_colours = :default,
15
+ be_verbose = true,
16
+ namespace = ''
17
+ )
18
+ Opn.opn(use_colours, be_verbose, namespace)
19
+ end; alias output_program_name opn # === output_program_name
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ module Opn
6
+
7
+ # ========================================================================= #
8
+ # === Opn::VERSION
9
+ # ========================================================================= #
10
+ VERSION = '1.0.53'
11
+
12
+ # ========================================================================= #
13
+ # === Opn::LAST_UPDATE
14
+ # ========================================================================= #
15
+ LAST_UPDATE = '20.01.2020'
16
+
17
+ end
@@ -0,0 +1,82 @@
1
+ # =========================================================================== #
2
+ # Gemspec for Project Opn.
3
+ # =========================================================================== #
4
+ require 'opn/version/version.rb'
5
+
6
+ Gem::Specification.new { |s|
7
+
8
+ s.name = 'opn'
9
+ s.version = Opn::VERSION
10
+ s.date = Time.now.strftime('%Y-%m-%d')
11
+
12
+ s.summary = <<-EOF
13
+
14
+ This library is called opn. It will simply output the
15
+ name of the class. Optionally, you can assign another
16
+ namespace to report with. For an explanation, just
17
+ look at the few examples under the test/ directory.
18
+
19
+ Why did I write it?
20
+
21
+ I wrote many different ruby classes, and sometimes they will
22
+ report information to me, but I don't know which file wrote
23
+ this. So I wanted to simply have output prefaced with the
24
+ name of the class in question, optionally to be colourized
25
+ as well, since that helps me on the commandline.
26
+
27
+ The name "opn" stands for "output program name".
28
+
29
+ Version 1.0.2 now has a proper module, called Opn,
30
+ and Opn has only one method called opn().
31
+
32
+ If you have specific suggestions to make this gem more
33
+ useful for others, please drop me an email at:
34
+
35
+ shevegen@gmail.com
36
+
37
+ Thank you.
38
+
39
+ EOF
40
+
41
+ s.description = <<-EOF
42
+
43
+ This library is called opn. It will simply output the
44
+ name of the class. Optionally, you can assign another
45
+ namespace to report with. For an explanation, just
46
+ look at the few examples under the test/ directory.
47
+
48
+ Why did I write it?
49
+
50
+ I wrote many different ruby classes, and sometimes they will
51
+ report information to me, but I don't know which file wrote
52
+ this. So I wanted to simply have output prefaced with the
53
+ name of the class in question, optionally to be colourized
54
+ as well, since that helps me on the commandline.
55
+
56
+ The name "opn" stands for "output program name".
57
+
58
+ Version 1.0.2 now has a proper module, called Opn,
59
+ and Opn has only one method called opn().
60
+
61
+ If you have specific suggestions to make this gem more
62
+ useful for others, please drop me an email at:
63
+
64
+ shevegen@gmail.com
65
+
66
+ Thank you.
67
+
68
+ EOF
69
+
70
+ s.extra_rdoc_files = %w()
71
+
72
+ s.authors = ['Robert A. Heiler']
73
+ s.email = 'shevegen@gmail.com'
74
+ s.files = Dir['**/*']
75
+ s.license = 'GPL-2.0'
76
+ s.homepage = 'http://rubygems.org/gems/opn'
77
+
78
+ s.required_ruby_version = '>= '+RUBY_VERSION
79
+ s.required_rubygems_version = '>= '+Gem::VERSION
80
+ s.rubygems_version = '>= '+Gem::VERSION
81
+
82
+ }
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # =========================================================================== #
4
+ require 'colour_e/autoinclude'
5
+ require 'opn/module'
6
+ require 'cliner'
7
+
8
+ NAMESPACE = inspect
9
+
10
+ # =========================================================================== #
11
+ # === palegoldenrod
12
+ # =========================================================================== #
13
+ def palegoldenrod(i)
14
+ ::Colours.palegoldenrod(i)
15
+ end
16
+ MAIN_NAMESPACE = { namespace: 'RBT::Compile' }
17
+ e ::Colours.slateblue('Seven (7)')+' examples for Opn.opn will come next -'
18
+ e 'and one example for Opn.namespace():'
19
+ cliner
20
+ e "(1) First, we test "+palegoldenrod("Opn.opn(namespace: 'YoThere')")
21
+ Opn.opn(namespace: 'YoThere'); e
22
+ cliner
23
+ e '(2) Next, we test '+palegoldenrod('Opn.opn(:no_colours)')
24
+ Opn.opn(:no_colours); e
25
+ cliner
26
+ e '(3) Next, we test '+palegoldenrod('Opn.opn')
27
+ Opn.opn; e
28
+ cliner
29
+ e '(4) Next, we test '+palegoldenrod('Opn.opn(use_colours: false)')
30
+ Opn.opn(use_colours: false); e
31
+ cliner
32
+ e '(5) Next, we test '+palegoldenrod('Opn.opn(MAIN_NAMESPACE)')+' - 4 times in total'
33
+ Opn.opn(MAIN_NAMESPACE); e
34
+ cliner
35
+ Opn.opn(MAIN_NAMESPACE); e
36
+ Opn.opn(MAIN_NAMESPACE); e
37
+ Opn.opn(MAIN_NAMESPACE); e
38
+ cliner
39
+ e '(6) Next, we will use the main namespace again but without '\
40
+ 'colours.'
41
+ e ' So: '+palegoldenrod('Opn.opn(namespace: MAIN_NAMESPACE, use_colours: false)')
42
+ Opn.opn(namespace: MAIN_NAMESPACE, use_colours: false); e
43
+ cliner
44
+ e '(7) Next, testing '+palegoldenrod('Opn.namespace NAMESPACE')
45
+ Opn.namespace NAMESPACE; e
46
+ cliner
47
+ e '(8) Next, testing '+palegoldenrod('Opn.namespace("→")')
48
+ Opn.namespace('→'); e 'Hello there!'
49
+ cliner
50
+ e '(9) Next, testing '+palegoldenrod('Opn.namespace("John→Doe")')
51
+ Opn.namespace('John→Doe'); e 'Hello there!'
52
+ cliner
53
+ e '(10) Next, testing '+palegoldenrod('Opn.opn(padding: 18)')
54
+ Opn.opn(padding: 18); e 'Hello there!'
55
+ Opn.opn(padding: 12); e 'Hello there!'
56
+ Opn.opn(padding: 22); e 'Hello there!'
57
+ cliner
58
+ e '(11) Next, testing '+palegoldenrod('Opn.opn({:namespace=>"RBT::CreateAppDirSkeleton", :use_colours=>true, :use_opn=>false})')
59
+ Opn.opn(
60
+ {:namespace=>"RBT::CreateProgram", :use_colours=>true, :use_opn=>false}
61
+ )
62
+ cliner
63
+ e '(12) Next testing '+palegoldenrod('Opn.opn {{ use_this_colour: :green }}')+':'
64
+ Opn.opn {{ use_this_colour: :green }}; e
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: opn
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.53
5
+ platform: ruby
6
+ authors:
7
+ - Robert A. Heiler
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-01-20 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: |2+
14
+
15
+ This library is called opn. It will simply output the
16
+ name of the class. Optionally, you can assign another
17
+ namespace to report with. For an explanation, just
18
+ look at the few examples under the test/ directory.
19
+
20
+ Why did I write it?
21
+
22
+ I wrote many different ruby classes, and sometimes they will
23
+ report information to me, but I don't know which file wrote
24
+ this. So I wanted to simply have output prefaced with the
25
+ name of the class in question, optionally to be colourized
26
+ as well, since that helps me on the commandline.
27
+
28
+ The name "opn" stands for "output program name".
29
+
30
+ Version 1.0.2 now has a proper module, called Opn,
31
+ and Opn has only one method called opn().
32
+
33
+ If you have specific suggestions to make this gem more
34
+ useful for others, please drop me an email at:
35
+
36
+ shevegen@gmail.com
37
+
38
+ Thank you.
39
+
40
+ email: shevegen@gmail.com
41
+ executables: []
42
+ extensions: []
43
+ extra_rdoc_files: []
44
+ files:
45
+ - lib/opn.rb
46
+ - lib/opn/colours.rb
47
+ - lib/opn/module.rb
48
+ - lib/opn/opn.rb
49
+ - lib/opn/version/version.rb
50
+ - opn.gemspec
51
+ - test/testing_opn.rb
52
+ homepage: http://rubygems.org/gems/opn
53
+ licenses:
54
+ - GPL-2.0
55
+ metadata: {}
56
+ post_install_message:
57
+ rdoc_options: []
58
+ require_paths:
59
+ - lib
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 2.7.0
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 3.1.2
70
+ requirements: []
71
+ rubygems_version: 3.1.2
72
+ signing_key:
73
+ specification_version: 4
74
+ summary: 'This library is called opn. It will simply output the name of the class.
75
+ Optionally, you can assign another namespace to report with. For an explanation,
76
+ just look at the few examples under the test/ directory. Why did I write it? I
77
+ wrote many different ruby classes, and sometimes they will report information to
78
+ me, but I don''t know which file wrote this. So I wanted to simply have output prefaced
79
+ with the name of the class in question, optionally to be colourized as well, since
80
+ that helps me on the commandline. The name "opn" stands for "output program name". Version
81
+ 1.0.2 now has a proper module, called Opn, and Opn has only one method called opn(). If
82
+ you have specific suggestions to make this gem more useful for others, please drop
83
+ me an email at: shevegen@gmail.com Thank you.'
84
+ test_files: []