ruby-nuggets 0.8.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.rspec +0 -2
- data/README +1 -1
- data/lib/nuggets/io/interact_mixin.rb +12 -2
- data/lib/nuggets/util/cli.rb +2 -2
- data/lib/nuggets/util/pluggable.rb +83 -0
- data/lib/nuggets/util/ruby.rb +14 -3
- data/lib/nuggets/version.rb +1 -1
- data/spec/nuggets/array/histogram_spec.rb +1 -1
- metadata +7 -6
data/.rspec
CHANGED
data/README
CHANGED
@@ -119,6 +119,13 @@ module Nuggets
|
|
119
119
|
buffer << reader.read_nonblock(maxlen)
|
120
120
|
rescue ::Errno::EAGAIN
|
121
121
|
rescue ::EOFError
|
122
|
+
buffer.force_encoding(
|
123
|
+
reader.internal_encoding ||
|
124
|
+
reader.external_encoding ||
|
125
|
+
Encoding.default_internal ||
|
126
|
+
Encoding.default_external
|
127
|
+
) if buffer.respond_to?(:force_encoding)
|
128
|
+
|
122
129
|
close[container, writer || reader, !writer]
|
123
130
|
end
|
124
131
|
}
|
@@ -133,12 +140,15 @@ module Nuggets
|
|
133
140
|
read[reader, buffer, writer] or next if buffer.empty?
|
134
141
|
|
135
142
|
begin
|
136
|
-
|
143
|
+
bytes = writer.write_nonblock(buffer)
|
137
144
|
rescue ::Errno::EPIPE
|
138
145
|
close[writers, writer]
|
139
146
|
end
|
140
147
|
|
141
|
-
|
148
|
+
if bytes
|
149
|
+
buffer.force_encoding('BINARY') if buffer.respond_to?(:force_encoding)
|
150
|
+
buffer.slice!(0, bytes)
|
151
|
+
end
|
142
152
|
}
|
143
153
|
end
|
144
154
|
|
data/lib/nuggets/util/cli.rb
CHANGED
@@ -61,7 +61,7 @@ module Util
|
|
61
61
|
return mod.const_get(const) if mod.const_defined?(const)
|
62
62
|
}
|
63
63
|
|
64
|
-
raise NameError, "uninitialized constant #{self}::#{const}"
|
64
|
+
raise ::NameError, "uninitialized constant #{self}::#{const}"
|
65
65
|
end
|
66
66
|
|
67
67
|
end
|
@@ -162,7 +162,7 @@ module Util
|
|
162
162
|
end
|
163
163
|
|
164
164
|
def merge_config(args = [config, defaults])
|
165
|
-
args.each { |hash| hash.each { |key, value|
|
165
|
+
args.each { |hash| hash && hash.each { |key, value|
|
166
166
|
options[key] = value unless options.has_key?(key)
|
167
167
|
} }
|
168
168
|
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
#--
|
2
|
+
###############################################################################
|
3
|
+
# #
|
4
|
+
# A component of ruby-nuggets, some extensions to the Ruby programming #
|
5
|
+
# language. #
|
6
|
+
# #
|
7
|
+
# Copyright (C) 2007-2011 Jens Wille #
|
8
|
+
# #
|
9
|
+
# Authors: #
|
10
|
+
# Jens Wille <jens.wille@uni-koeln.de> #
|
11
|
+
# #
|
12
|
+
# ruby-nuggets is free software; you can redistribute it and/or modify it #
|
13
|
+
# under the terms of the GNU Affero General Public License as published by #
|
14
|
+
# the Free Software Foundation; either version 3 of the License, or (at your #
|
15
|
+
# option) any later version. #
|
16
|
+
# #
|
17
|
+
# ruby-nuggets is distributed in the hope that it will be useful, but WITHOUT #
|
18
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
|
19
|
+
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License #
|
20
|
+
# for more details. #
|
21
|
+
# #
|
22
|
+
# You should have received a copy of the GNU Affero General Public License #
|
23
|
+
# along with ruby-nuggets. If not, see <http://www.gnu.org/licenses/>. #
|
24
|
+
# #
|
25
|
+
###############################################################################
|
26
|
+
#++
|
27
|
+
|
28
|
+
module Util
|
29
|
+
|
30
|
+
module Pluggable
|
31
|
+
|
32
|
+
class << self
|
33
|
+
|
34
|
+
def load_plugins_for(*klasses)
|
35
|
+
klasses.map { |klass| klass.extend(self).load_plugins }
|
36
|
+
end
|
37
|
+
|
38
|
+
def extended(base)
|
39
|
+
base.plugin_filename ||= "#{base.name.
|
40
|
+
gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
|
41
|
+
gsub(/([a-z\d])([A-Z])/, '\1_\2').
|
42
|
+
gsub(/::/, '/').tr('-', '_').downcase}_plugin.rb"
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
attr_accessor :plugin_filename
|
48
|
+
|
49
|
+
def load_plugins
|
50
|
+
plugins, name = [], plugin_filename
|
51
|
+
plugins.concat(load_env_plugins(name))
|
52
|
+
plugins.concat(load_gem_plugins(name)) if defined?(::Gem)
|
53
|
+
plugins
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def load_env_plugins(name)
|
59
|
+
load_plugin_files($LOAD_PATH.map { |path|
|
60
|
+
plugin = ::File.expand_path(name, path)
|
61
|
+
plugin if ::File.file?(plugin)
|
62
|
+
}.compact)
|
63
|
+
end
|
64
|
+
|
65
|
+
def load_gem_plugins(name)
|
66
|
+
load_plugin_files(::Gem::Specification.map { |spec|
|
67
|
+
spec.matches_for_glob(name)
|
68
|
+
}.flatten)
|
69
|
+
end
|
70
|
+
|
71
|
+
def load_plugin_files(plugins)
|
72
|
+
plugins.each { |plugin|
|
73
|
+
begin
|
74
|
+
load plugin
|
75
|
+
rescue ::Exception => err
|
76
|
+
warn "Error loading #{name} plugin: #{plugin}: #{err} (#{err.class})"
|
77
|
+
end
|
78
|
+
}
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
data/lib/nuggets/util/ruby.rb
CHANGED
@@ -97,6 +97,8 @@ module Util
|
|
97
97
|
'Please fix your RVM installation or contact the RVM developers for support.'
|
98
98
|
end
|
99
99
|
|
100
|
+
attr_writer :ruby_command
|
101
|
+
|
100
102
|
# Returns the full path to the current Ruby interpreter's executable file.
|
101
103
|
# This might not be the actual correct command to use for invoking the Ruby
|
102
104
|
# interpreter; use ruby_command instead.
|
@@ -107,6 +109,8 @@ module Util
|
|
107
109
|
end
|
108
110
|
end
|
109
111
|
|
112
|
+
attr_writer :ruby_executable
|
113
|
+
|
110
114
|
# Returns whether the Ruby interpreter supports process forking.
|
111
115
|
def ruby_supports_fork?
|
112
116
|
# MRI >= 1.9.2's respond_to? returns false
|
@@ -142,6 +146,8 @@ module Util
|
|
142
146
|
'installation is probably too old. ' << UPDATE_RVM
|
143
147
|
end
|
144
148
|
|
149
|
+
attr_writer :rvm_path
|
150
|
+
|
145
151
|
# If the current Ruby interpreter is managed by RVM, returns the
|
146
152
|
# RVM name which identifies the current Ruby interpreter plus the
|
147
153
|
# currently active gemset, e.g. something like this:
|
@@ -179,6 +185,8 @@ module Util
|
|
179
185
|
"name. Please contact this program's author for support."
|
180
186
|
end
|
181
187
|
|
188
|
+
attr_writer :rvm_ruby_string
|
189
|
+
|
182
190
|
# Returns either 'sudo' or 'rvmsudo' depending on whether the current
|
183
191
|
# Ruby interpreter is managed by RVM.
|
184
192
|
def ruby_sudo_command
|
@@ -234,9 +242,13 @@ module Util
|
|
234
242
|
@#{name} ||= locate_ruby_tool('#{name}')
|
235
243
|
end
|
236
244
|
|
245
|
+
attr_writer :#{name}
|
246
|
+
|
237
247
|
def #{name}_command
|
238
248
|
@#{name}_command ||= command_for_ruby_tool('#{name}')
|
239
249
|
end
|
250
|
+
|
251
|
+
attr_writer :#{name}_command
|
240
252
|
EOT
|
241
253
|
}
|
242
254
|
|
@@ -321,16 +333,15 @@ begin
|
|
321
333
|
require 'open4'
|
322
334
|
|
323
335
|
def Process.ruby(*args)
|
324
|
-
argv = ::Util::Ruby.ruby_options_to_argv(args
|
336
|
+
argv = ::Util::Ruby.ruby_options_to_argv(args)
|
325
337
|
::Open4.popen4(*argv, &block_given? ? ::Proc.new : nil)
|
326
338
|
end
|
327
339
|
|
328
340
|
require 'nuggets/io/interact'
|
329
341
|
|
330
342
|
def Process.interact_ruby(input, *args)
|
331
|
-
ruby(*args) { |
|
343
|
+
ruby(*args) { |_, i, o, e|
|
332
344
|
::IO.interact({ input => i }, { o => $stdout, e => $stderr })
|
333
|
-
p
|
334
345
|
}
|
335
346
|
end
|
336
347
|
rescue ::LoadError
|
data/lib/nuggets/version.rb
CHANGED
@@ -67,7 +67,7 @@ describe Array, 'when extended by', Nuggets::Array::HistogramMixin do
|
|
67
67
|
end
|
68
68
|
|
69
69
|
example do
|
70
|
-
[1, -2, 1, 2, 3, -4, 0, 3, 1, 2, 1, 0, 24].probability_mass_function.values.inject(:+).should
|
70
|
+
[1, -2, 1, 2, 3, -4, 0, 3, 1, 2, 1, 0, 24].probability_mass_function.values.inject(:+).should equal_float(1.0)
|
71
71
|
end
|
72
72
|
|
73
73
|
example do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-nuggets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 61
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 8
|
9
|
-
-
|
10
|
-
version: 0.8.
|
9
|
+
- 1
|
10
|
+
version: 0.8.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jens Wille
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-12-
|
18
|
+
date: 2011-12-28 00:00:00 Z
|
19
19
|
dependencies: []
|
20
20
|
|
21
21
|
description: Some extensions to the Ruby programming language.
|
@@ -135,6 +135,7 @@ files:
|
|
135
135
|
- lib/nuggets/util/cli.rb
|
136
136
|
- lib/nuggets/util/i18n.rb
|
137
137
|
- lib/nuggets/util/added_methods/init.rb
|
138
|
+
- lib/nuggets/util/pluggable.rb
|
138
139
|
- lib/nuggets/proc/bind_mixin.rb
|
139
140
|
- lib/nuggets/proc/bind.rb
|
140
141
|
- lib/nuggets/statistics.rb
|
@@ -203,7 +204,7 @@ rdoc_options:
|
|
203
204
|
- --charset
|
204
205
|
- UTF-8
|
205
206
|
- --title
|
206
|
-
- ruby-nuggets Application documentation (v0.8.
|
207
|
+
- ruby-nuggets Application documentation (v0.8.1)
|
207
208
|
- --line-numbers
|
208
209
|
require_paths:
|
209
210
|
- lib
|
@@ -228,7 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
228
229
|
requirements: []
|
229
230
|
|
230
231
|
rubyforge_project: prometheus
|
231
|
-
rubygems_version: 1.8.
|
232
|
+
rubygems_version: 1.8.13
|
232
233
|
signing_key:
|
233
234
|
specification_version: 3
|
234
235
|
summary: Some extensions to the Ruby programming language.
|