opn 1.0.53

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of opn might be problematic. Click here for more details.

@@ -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: []