ruby-nuggets 0.6.5 → 0.6.6
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +2 -0
- data/README +1 -1
- data/Rakefile +1 -1
- data/lib/nuggets/file/which_mixin.rb +26 -14
- data/lib/nuggets/version.rb +1 -1
- data/spec/nuggets/array/limit_spec.rb +36 -0
- data/spec/nuggets/array/runiq_spec.rb +27 -0
- data/spec/nuggets/array/standard_deviation_spec.rb +35 -0
- data/spec/nuggets/array/variance_spec.rb +35 -0
- data/spec/nuggets/env/set_spec.rb +31 -0
- data/spec/nuggets/env/user_encoding_spec.rb +40 -0
- data/spec/nuggets/env/user_home_spec.rb +40 -0
- data/spec/nuggets/file/which_spec.rb +24 -0
- data/spec/nuggets/hash/nest_spec.rb +104 -0
- data/spec/nuggets/hash/unroll_spec.rb +70 -0
- data/spec/nuggets/integer/length_spec.rb +20 -0
- data/spec/nuggets/integer/map_spec.rb +21 -0
- data/spec/nuggets/object/blank_spec.rb +35 -0
- data/spec/nuggets/object/boolean_spec.rb +25 -0
- data/spec/nuggets/object/msend_spec.rb +27 -0
- data/spec/nuggets/object/silence_spec.rb +33 -0
- data/spec/nuggets/object/singleton_class_spec.rb +44 -0
- data/spec/nuggets/proc/bind_spec.rb +30 -0
- data/spec/nuggets/range/quantile_spec.rb +35 -0
- data/spec/nuggets/string/evaluate_spec.rb +26 -0
- data/spec/nuggets/string/wc_spec.rb +75 -0
- data/spec/nuggets/string/xor_spec.rb +59 -0
- data/spec/nuggets/uri/content_type_spec.rb +32 -0
- data/spec/nuggets/uri/exist_spec.rb +25 -0
- data/spec/spec_helper.rb +14 -0
- metadata +37 -11
data/.rspec
ADDED
data/README
CHANGED
data/Rakefile
CHANGED
@@ -13,7 +13,7 @@ begin
|
|
13
13
|
:version => Nuggets::VERSION,
|
14
14
|
:summary => 'Some extensions to the Ruby programming language.',
|
15
15
|
:files => FileList['lib/**/*.rb'].to_a,
|
16
|
-
:extra_files => FileList['[A-Z]*'].to_a
|
16
|
+
:extra_files => FileList['[A-Z]*', '.rspec', 'spec/**/*.rb'].to_a
|
17
17
|
}
|
18
18
|
}}
|
19
19
|
rescue LoadError => err
|
@@ -25,24 +25,36 @@
|
|
25
25
|
###############################################################################
|
26
26
|
#++
|
27
27
|
|
28
|
+
require 'rbconfig'
|
29
|
+
|
28
30
|
module Nuggets
|
29
31
|
class File
|
30
32
|
module WhichMixin
|
31
33
|
|
34
|
+
DEFAULT_EXTENSIONS = [Config::CONFIG['EXEEXT']]
|
35
|
+
|
32
36
|
# call-seq:
|
33
|
-
# File.which(executable) => aString or nil
|
37
|
+
# File.which(executable, extensions = DEFAULT_EXTENSIONS) => aString or nil
|
38
|
+
#
|
39
|
+
# Returns +executable+ if it's executable, or the full path to +executable+
|
40
|
+
# found in PATH, or +nil+ otherwise. Checks +executable+ with each extension
|
41
|
+
# in +extensions+ appended in turn.
|
34
42
|
#
|
35
|
-
# Returns the full path to +executable+, or +nil+ if not found in PATH.
|
36
43
|
# Inspired by Gnuplot.which -- thx, Gordon!
|
37
|
-
def which(executable)
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
44
|
+
def which(executable, extensions = DEFAULT_EXTENSIONS)
|
45
|
+
extensions |= ['']
|
46
|
+
|
47
|
+
extensions.each { |extension|
|
48
|
+
executable += extension
|
49
|
+
return executable if executable?(executable)
|
50
|
+
|
51
|
+
if path = ENV['PATH']
|
52
|
+
path.split(::File::PATH_SEPARATOR).each { |dir|
|
53
|
+
candidate = join(expand_path(dir), executable)
|
54
|
+
return candidate if executable?(candidate)
|
55
|
+
}
|
56
|
+
end
|
57
|
+
}
|
46
58
|
|
47
59
|
nil
|
48
60
|
end
|
@@ -50,9 +62,9 @@ module Nuggets
|
|
50
62
|
# call-seq:
|
51
63
|
# File.which_command(commands) => aString or nil
|
52
64
|
#
|
53
|
-
# Returns the first of +commands+ that is executable.
|
54
|
-
def which_command(commands)
|
55
|
-
commands.find { |command| which(command[/\S+/]) }
|
65
|
+
# Returns the first of +commands+ that is executable (according to #which).
|
66
|
+
def which_command(commands, extensions = DEFAULT_EXTENSIONS)
|
67
|
+
commands.find { |command| which(command[/\S+/], extensions) }
|
56
68
|
end
|
57
69
|
|
58
70
|
end
|
data/lib/nuggets/version.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'nuggets/array/limit'
|
2
|
+
require 'nuggets/numeric/limit'
|
3
|
+
|
4
|
+
describe Array, 'when extended by', Nuggets::Array::LimitMixin do
|
5
|
+
|
6
|
+
it { Array.ancestors.should include(Nuggets::Array::LimitMixin) }
|
7
|
+
|
8
|
+
example do
|
9
|
+
[].limit(0, 1).should == []
|
10
|
+
end
|
11
|
+
|
12
|
+
example do
|
13
|
+
[1].limit(0, 1).should == [1]
|
14
|
+
end
|
15
|
+
|
16
|
+
example do
|
17
|
+
[1, 1, 1].limit(0, 1).should == [1]
|
18
|
+
end
|
19
|
+
|
20
|
+
example do
|
21
|
+
[1, 2, 3].limit(0, 1).should == [1]
|
22
|
+
end
|
23
|
+
|
24
|
+
example do
|
25
|
+
[1, 2, 3].limit(0, 2).should == [1, 2]
|
26
|
+
end
|
27
|
+
|
28
|
+
example do
|
29
|
+
[-3, -2, -1].limit(0, 1).should == [0]
|
30
|
+
end
|
31
|
+
|
32
|
+
example do
|
33
|
+
[1, -2, 1, 2, 3, -4, 0, 3, 1, 2, 1, 0, 24].limit(-2, 2).should == [1, -2, 2, 0]
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'nuggets/array/runiq'
|
2
|
+
|
3
|
+
describe Array, 'when extended by', Nuggets::Array::RuniqMixin do
|
4
|
+
|
5
|
+
it { Array.ancestors.should include(Nuggets::Array::RuniqMixin) }
|
6
|
+
|
7
|
+
example do
|
8
|
+
[1, 2, 3, 4, 3, 2].runiq.should == [1, 4, 3, 2]
|
9
|
+
end
|
10
|
+
|
11
|
+
example do
|
12
|
+
ary = [1, 2, 3, 4, 3, 2]
|
13
|
+
ary.runiq!.should_not be_nil
|
14
|
+
ary.should == [1, 4, 3, 2]
|
15
|
+
end
|
16
|
+
|
17
|
+
example do
|
18
|
+
[1, 2, 3, 4].runiq.should == [1, 2, 3, 4]
|
19
|
+
end
|
20
|
+
|
21
|
+
example do
|
22
|
+
ary = [1, 2, 3, 4]
|
23
|
+
ary.runiq!.should be_nil
|
24
|
+
ary.should == [1, 2, 3, 4]
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'nuggets/array/standard_deviation'
|
2
|
+
|
3
|
+
describe Array, 'when extended by', Nuggets::Array::StandardDeviationMixin do
|
4
|
+
|
5
|
+
it { Array.ancestors.should include(Nuggets::Array::StandardDeviationMixin) }
|
6
|
+
|
7
|
+
example do
|
8
|
+
[].standard_deviation.should == 0.0
|
9
|
+
end
|
10
|
+
|
11
|
+
example do
|
12
|
+
[1].standard_deviation.should == 0.0
|
13
|
+
end
|
14
|
+
|
15
|
+
example do
|
16
|
+
[1, 1, 1].standard_deviation.should == 0.0
|
17
|
+
end
|
18
|
+
|
19
|
+
example do
|
20
|
+
[1, 2, 3].standard_deviation.should be_within(0.0001).of(0.8165)
|
21
|
+
end
|
22
|
+
|
23
|
+
example do
|
24
|
+
[3, 2, 1].standard_deviation.should be_within(0.0001).of(0.8165)
|
25
|
+
end
|
26
|
+
|
27
|
+
example do
|
28
|
+
[-3, -2, -1].standard_deviation.should == [3, 2, 1].standard_deviation
|
29
|
+
end
|
30
|
+
|
31
|
+
example do
|
32
|
+
[1, -2, 1, 2, 3, -4, 0, 3, 1, 2, 1, 0, 24].standard_deviation.should be_within(0.01).of(6.49)
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'nuggets/array/variance'
|
2
|
+
|
3
|
+
describe Array, 'when extended by', Nuggets::Array::VarianceMixin do
|
4
|
+
|
5
|
+
it { Array.ancestors.should include(Nuggets::Array::VarianceMixin) }
|
6
|
+
|
7
|
+
example do
|
8
|
+
[].variance.should == 0.0
|
9
|
+
end
|
10
|
+
|
11
|
+
example do
|
12
|
+
[1].variance.should == 0.0
|
13
|
+
end
|
14
|
+
|
15
|
+
example do
|
16
|
+
[1, 1, 1].variance.should == 0.0
|
17
|
+
end
|
18
|
+
|
19
|
+
example do
|
20
|
+
[1, 2, 3].variance.should == 2 / 3.0
|
21
|
+
end
|
22
|
+
|
23
|
+
example do
|
24
|
+
[3, 2, 1].variance.should == 2 / 3.0
|
25
|
+
end
|
26
|
+
|
27
|
+
example do
|
28
|
+
[-3, -2, -1].variance.should == [3, 2, 1].variance
|
29
|
+
end
|
30
|
+
|
31
|
+
example do
|
32
|
+
[1, -2, 1, 2, 3, -4, 0, 3, 1, 2, 1, 0, 24].variance.should be_within(0.1).of(42.0)
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'nuggets/env/set'
|
2
|
+
|
3
|
+
describe ENV, 'when extended by', Nuggets::Env::SetMixin do
|
4
|
+
|
5
|
+
it { class << ENV; ancestors; end.should include(Nuggets::Env::SetMixin) }
|
6
|
+
|
7
|
+
before do
|
8
|
+
@original = ENV.to_hash
|
9
|
+
end
|
10
|
+
|
11
|
+
after do
|
12
|
+
ENV.clear
|
13
|
+
ENV.update(@original)
|
14
|
+
end
|
15
|
+
|
16
|
+
example do
|
17
|
+
ENV.with(:lang => 'C') { ENV['LANG'].should == 'C' }
|
18
|
+
ENV['LANG'].should == @original['LANG']
|
19
|
+
end
|
20
|
+
|
21
|
+
example do
|
22
|
+
ENV.set(:lang => 'C').to_hash.should == @original
|
23
|
+
ENV.to_hash.should == { 'LANG' => 'C' }
|
24
|
+
end
|
25
|
+
|
26
|
+
example do
|
27
|
+
ENV.set(@original)
|
28
|
+
ENV.to_hash.should == @original
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'nuggets/env/user_encoding'
|
2
|
+
|
3
|
+
describe ENV, 'when extended by', Nuggets::Env::UserEncodingMixin do
|
4
|
+
|
5
|
+
it { class << ENV; ancestors; end.should include(Nuggets::Env::UserEncodingMixin) }
|
6
|
+
|
7
|
+
before do
|
8
|
+
@old_env = ENV.to_hash
|
9
|
+
end
|
10
|
+
|
11
|
+
after do
|
12
|
+
ENV.clear
|
13
|
+
ENV.update(@old_env)
|
14
|
+
end
|
15
|
+
|
16
|
+
example do
|
17
|
+
ENV.user_encoding.should be_an_instance_of(String)
|
18
|
+
end
|
19
|
+
|
20
|
+
example do
|
21
|
+
ENV.clear
|
22
|
+
ENV.user_encoding.should be_an_instance_of(String)
|
23
|
+
end
|
24
|
+
|
25
|
+
example do
|
26
|
+
ENV['ENCODING'] = 'foo'
|
27
|
+
ENV.user_encoding.should == 'foo'
|
28
|
+
end
|
29
|
+
|
30
|
+
example do
|
31
|
+
ENV.clear
|
32
|
+
ENV.user_encoding('bar').should == 'bar'
|
33
|
+
end
|
34
|
+
|
35
|
+
example do
|
36
|
+
ENV.clear
|
37
|
+
ENV.user_encoding(nil).should be_nil
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'nuggets/env/user_home'
|
2
|
+
|
3
|
+
describe ENV, 'when extended by', Nuggets::Env::UserHomeMixin do
|
4
|
+
|
5
|
+
it { class << ENV; ancestors; end.should include(Nuggets::Env::UserHomeMixin) }
|
6
|
+
|
7
|
+
before do
|
8
|
+
@old_env = ENV.to_hash
|
9
|
+
end
|
10
|
+
|
11
|
+
after do
|
12
|
+
ENV.clear
|
13
|
+
ENV.update(@old_env)
|
14
|
+
end
|
15
|
+
|
16
|
+
example do
|
17
|
+
ENV.user_home.should be_an_instance_of(String)
|
18
|
+
end
|
19
|
+
|
20
|
+
example do
|
21
|
+
ENV.clear
|
22
|
+
ENV.user_home.should be_an_instance_of(String)
|
23
|
+
end
|
24
|
+
|
25
|
+
example do
|
26
|
+
ENV['HOME'] = 'foo'
|
27
|
+
ENV.user_home.should == 'foo'
|
28
|
+
end
|
29
|
+
|
30
|
+
example do
|
31
|
+
ENV.clear
|
32
|
+
ENV.user_home('bar').should == 'bar'
|
33
|
+
end
|
34
|
+
|
35
|
+
example do
|
36
|
+
ENV.clear
|
37
|
+
ENV.user_home(nil).should be_nil
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'nuggets/file/which'
|
2
|
+
|
3
|
+
describe File, 'when extended by', Nuggets::File::WhichMixin do
|
4
|
+
|
5
|
+
it { (class << File; ancestors; end).should include(Nuggets::File::WhichMixin) }
|
6
|
+
|
7
|
+
%w[cat dog rat gcc /usr/bin/X11/gcc].each { |c|
|
8
|
+
example do
|
9
|
+
r = %x{which #{c}}.chomp
|
10
|
+
File.which(c).should == (r.empty? ? nil : r)
|
11
|
+
end
|
12
|
+
}
|
13
|
+
|
14
|
+
example do
|
15
|
+
c = [
|
16
|
+
'unison --args source target',
|
17
|
+
'rsync --args source target',
|
18
|
+
'scp --args source target'
|
19
|
+
]
|
20
|
+
r = c.find { |s| !%x{which #{s[/\S+/]}}.chomp.empty? }
|
21
|
+
File.which_command(c).should == r
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'nuggets/hash/nest'
|
2
|
+
|
3
|
+
describe Hash, 'when extended by', Nuggets::Hash::NestMixin do
|
4
|
+
|
5
|
+
it { (class << Hash; self; end).ancestors.should include(Nuggets::Hash::NestMixin) }
|
6
|
+
|
7
|
+
example do
|
8
|
+
hash = Hash.nest
|
9
|
+
hash.should be_an_instance_of(Hash)
|
10
|
+
|
11
|
+
hash[:a].should be_nil
|
12
|
+
hash.should have_key(:a)
|
13
|
+
end
|
14
|
+
|
15
|
+
example do
|
16
|
+
hash = Hash.nest(0, 1)
|
17
|
+
hash.should be_an_instance_of(Hash)
|
18
|
+
|
19
|
+
hash[:a].should == 1
|
20
|
+
hash.should have_key(:a)
|
21
|
+
end
|
22
|
+
|
23
|
+
example do
|
24
|
+
hash = Hash.nest(1)
|
25
|
+
hash.should be_an_instance_of(Hash)
|
26
|
+
|
27
|
+
hash[:a].should be_an_instance_of(Hash)
|
28
|
+
hash.should have_key(:a)
|
29
|
+
|
30
|
+
hash[:a][:b].should be_nil
|
31
|
+
hash[:a].should have_key(:b)
|
32
|
+
end
|
33
|
+
|
34
|
+
example do
|
35
|
+
hash = Hash.nest(1, 1)
|
36
|
+
hash.should be_an_instance_of(Hash)
|
37
|
+
|
38
|
+
hash[:a].should be_an_instance_of(Hash)
|
39
|
+
hash.should have_key(:a)
|
40
|
+
|
41
|
+
hash[:a][:b].should == 1
|
42
|
+
hash[:a].should have_key(:b)
|
43
|
+
end
|
44
|
+
|
45
|
+
example do
|
46
|
+
hash = Hash.nest(1, [])
|
47
|
+
hash.should be_an_instance_of(Hash)
|
48
|
+
|
49
|
+
hash[:a].should be_an_instance_of(Hash)
|
50
|
+
hash.should have_key(:a)
|
51
|
+
|
52
|
+
hash[:a][:b].should == []
|
53
|
+
hash[:a].should have_key(:b)
|
54
|
+
|
55
|
+
hash[:a][:b] << 1
|
56
|
+
hash[:a][:b].should == [1]
|
57
|
+
|
58
|
+
hash[:a][:c] << 2
|
59
|
+
hash[:a][:c].should == [1, 2]
|
60
|
+
|
61
|
+
hash[:a][:b].should == [1, 2]
|
62
|
+
end
|
63
|
+
|
64
|
+
example do
|
65
|
+
hash = Hash.nest(1) { [] }
|
66
|
+
hash.should be_an_instance_of(Hash)
|
67
|
+
|
68
|
+
hash[:a].should be_an_instance_of(Hash)
|
69
|
+
hash.should have_key(:a)
|
70
|
+
|
71
|
+
hash[:a][:b].should == []
|
72
|
+
hash[:a].should have_key(:b)
|
73
|
+
|
74
|
+
hash[:a][:b] << 1
|
75
|
+
hash[:a][:b].should == [1]
|
76
|
+
|
77
|
+
hash[:a][:c] << 2
|
78
|
+
hash[:a][:c].should == [2]
|
79
|
+
|
80
|
+
hash[:a][:b].should == [1]
|
81
|
+
end
|
82
|
+
|
83
|
+
example do
|
84
|
+
hash = Hash.nest(3)
|
85
|
+
hash.should be_an_instance_of(Hash)
|
86
|
+
|
87
|
+
hash[:a].should be_an_instance_of(Hash)
|
88
|
+
hash.should have_key(:a)
|
89
|
+
|
90
|
+
hash[:a][:b].should be_an_instance_of(Hash)
|
91
|
+
hash[:a].should have_key(:b)
|
92
|
+
|
93
|
+
hash[:a][:b][:c].should be_an_instance_of(Hash)
|
94
|
+
hash[:a][:b].should have_key(:c)
|
95
|
+
|
96
|
+
hash[:a][:b][:c][:d].should be_nil
|
97
|
+
hash[:a][:b][:c].should have_key(:d)
|
98
|
+
|
99
|
+
hash[:a][:b][:c][:e] = 1
|
100
|
+
hash[:a][:b][:c][:e].should == 1
|
101
|
+
hash[:a][:b][:c].should have_key(:e)
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'nuggets/hash/unroll'
|
2
|
+
|
3
|
+
describe Hash, 'when extended by', Nuggets::Hash::UnrollMixin do
|
4
|
+
|
5
|
+
it { Hash.ancestors.should include(Nuggets::Hash::UnrollMixin) }
|
6
|
+
|
7
|
+
example do
|
8
|
+
hash = {}
|
9
|
+
hash.unroll.should == [[]]
|
10
|
+
end
|
11
|
+
|
12
|
+
example do
|
13
|
+
hash = { 'a' => 1 }
|
14
|
+
hash.unroll.should == [[1]]
|
15
|
+
end
|
16
|
+
|
17
|
+
example do
|
18
|
+
hash = { 'a' => { 'b' => 1 } }
|
19
|
+
hash.unroll.should == [['a', 1]]
|
20
|
+
end
|
21
|
+
|
22
|
+
example do
|
23
|
+
hash = { :a => { :b => 1 } }
|
24
|
+
hash.unroll.should == [[:a, 1]]
|
25
|
+
end
|
26
|
+
|
27
|
+
example do
|
28
|
+
hash = { :a => { :b => 1, :c => 2 } }
|
29
|
+
|
30
|
+
result = hash.unroll.first
|
31
|
+
result.should have(3).items
|
32
|
+
|
33
|
+
result.first.should == :a
|
34
|
+
result.should include(1)
|
35
|
+
result.should include(2)
|
36
|
+
end
|
37
|
+
|
38
|
+
if RUBY_VERSION < '1.9'
|
39
|
+
example do
|
40
|
+
hash = { :a => { :b => 1, :c => 2 } }
|
41
|
+
lambda { hash.unroll(:sort => true) }.should raise_error(NoMethodError, /<=>/)
|
42
|
+
end
|
43
|
+
|
44
|
+
example do
|
45
|
+
hash = { :a => { :b => 1, :c => 2 } }
|
46
|
+
lambda { hash.unroll(:sort_by => lambda { |h| h.to_s }) }.should_not raise_error(NoMethodError)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
example do
|
51
|
+
hash = { 'a' => { 'b' => 1, 'c' => 2 } }
|
52
|
+
hash.unroll(:sort => true).should == [['a', 1, 2]]
|
53
|
+
end
|
54
|
+
|
55
|
+
example do
|
56
|
+
hash = { 'a' => { 'b' => 1, 'c' => 2 }, 'd' => { 'b' => 0, 'c' => 3 } }
|
57
|
+
hash.unroll('b', 'c', :sort => true).should == [['a', 1, 2], ['d', 0, 3]]
|
58
|
+
end
|
59
|
+
|
60
|
+
example do
|
61
|
+
hash = { 'z' => { 'a' => { 'b' => 1, 'c' => 2 }, 'd' => { 'b' => 0, 'c' => 3 } } }
|
62
|
+
hash.unroll('b', :sort_by => lambda { |h| h.to_s }).should == [['z', 'a', 1], ['z', 'd', 0]]
|
63
|
+
end
|
64
|
+
|
65
|
+
example do
|
66
|
+
hash = { 'z' => { 'a' => { 'b' => 1, 'c' => 2 }, 'd' => { 'b' => 0, 'c' => 3 } } }
|
67
|
+
hash.unroll(:sort => true) { |h| h['b'] = nil; h['c'] *= 2 }.should == [['z', 'a', nil, 4], ['z', 'd', nil, 6]]
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'nuggets/integer/length'
|
2
|
+
|
3
|
+
describe Integer, 'when extended by', Nuggets::Integer::LengthMixin do
|
4
|
+
|
5
|
+
it { Integer.ancestors.should include(Nuggets::Integer::LengthMixin) }
|
6
|
+
|
7
|
+
{
|
8
|
+
0 => [1, 1],
|
9
|
+
123 => [3, 3],
|
10
|
+
-123 => [4, 3],
|
11
|
+
1_000_000 => [7, 7],
|
12
|
+
-1_000_000 => [8, 7],
|
13
|
+
10 ** 48 => [49, 49],
|
14
|
+
-(10 ** 48) => [50, 49]
|
15
|
+
}.each { |int, (len, cnt)|
|
16
|
+
example { int.length.should == len }
|
17
|
+
example { int.digit_count.should == cnt }
|
18
|
+
}
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'nuggets/integer/map'
|
2
|
+
|
3
|
+
describe Integer, 'when extended by', Nuggets::Integer::MapMixin do
|
4
|
+
|
5
|
+
it { Integer.ancestors.should include(Nuggets::Integer::MapMixin) }
|
6
|
+
|
7
|
+
{
|
8
|
+
0 => 1,
|
9
|
+
1 => 2,
|
10
|
+
-1 => 3,
|
11
|
+
123 => 246,
|
12
|
+
-123 => 247,
|
13
|
+
1_000_000 => 2_000_000,
|
14
|
+
-1_000_000 => 2_000_001,
|
15
|
+
10 ** 48 => 2_000_000_000_000_000_000_000_000_000_000_000_000_000_000_000_000,
|
16
|
+
-(10 ** 48) => 2_000_000_000_000_000_000_000_000_000_000_000_000_000_000_000_001
|
17
|
+
}.each { |int, map|
|
18
|
+
example { int.map_positive.should == map }
|
19
|
+
}
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'nuggets/object/blank'
|
2
|
+
|
3
|
+
describe Object, 'when extended by', Nuggets::Object::BlankMixin do
|
4
|
+
|
5
|
+
it { Object.ancestors.should include(Nuggets::Object::BlankMixin) }
|
6
|
+
it { Array.ancestors.should include(Nuggets::Array::BlankMixin) }
|
7
|
+
it { Hash.ancestors.should include(Nuggets::Hash::BlankMixin) }
|
8
|
+
|
9
|
+
['s', ' ', 0, 1, true, [nil]].each { |o|
|
10
|
+
example { o.should_not be_blank }
|
11
|
+
}
|
12
|
+
|
13
|
+
['', nil, false, [], {}].each { |o|
|
14
|
+
example { o.should be_blank }
|
15
|
+
}
|
16
|
+
|
17
|
+
['s', 1, true].each { |o|
|
18
|
+
example { o.should_not be_void }
|
19
|
+
example { o.should_not be_vain }
|
20
|
+
}
|
21
|
+
|
22
|
+
['', ' ', 0, nil, false, [], [nil], {}].each { |o|
|
23
|
+
example { o.should be_void }
|
24
|
+
example { o.should be_vain }
|
25
|
+
}
|
26
|
+
|
27
|
+
[['', [], [nil], {}], { :x => nil, :y => [], :z => { :zz => nil } }].each { |o|
|
28
|
+
example { o.should_not be_void }
|
29
|
+
}
|
30
|
+
|
31
|
+
[['', [], [nil], {}], { :x => nil, :y => [], :z => { :zz => nil } }].each { |o|
|
32
|
+
example { o.should be_vain }
|
33
|
+
}
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'nuggets/object/boolean'
|
2
|
+
|
3
|
+
describe Object, 'when extended by', Nuggets::Object::BooleanMixin do
|
4
|
+
|
5
|
+
it { Object.ancestors.should include(Nuggets::Object::BooleanMixin) }
|
6
|
+
|
7
|
+
[0, 1, -1, nil, '', 'abc', Class, Object.new].each { |o|
|
8
|
+
example { o.should_not be_boolean }
|
9
|
+
}
|
10
|
+
|
11
|
+
[true, false].each { |o|
|
12
|
+
example { o.should be_boolean }
|
13
|
+
}
|
14
|
+
|
15
|
+
[0, 1, -1, '', 'abc', Class, Object.new, true].each { |o|
|
16
|
+
example { o.negate.should == false }
|
17
|
+
example { o.to_bool.should == true }
|
18
|
+
}
|
19
|
+
|
20
|
+
[nil, false].each { |o|
|
21
|
+
example { o.negate.should == true }
|
22
|
+
example { o.to_bool.should == false }
|
23
|
+
}
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'nuggets/object/msend'
|
2
|
+
|
3
|
+
describe Object, 'when extended by', Nuggets::Object::MSendMixin do
|
4
|
+
|
5
|
+
it { Object.ancestors.should include(Nuggets::Object::MSendMixin) }
|
6
|
+
|
7
|
+
example do
|
8
|
+
o = 'foo bar'
|
9
|
+
o.msend(:length, :reverse).should == [o.length, o.reverse]
|
10
|
+
end
|
11
|
+
|
12
|
+
example do
|
13
|
+
o = 42
|
14
|
+
o.msend(:to_s, :* => 2).should == [o.to_s, o * 2]
|
15
|
+
end
|
16
|
+
|
17
|
+
example do
|
18
|
+
o = 42
|
19
|
+
o.msend([:to_s, 2], '-@').should == [o.to_s(2), -o]
|
20
|
+
end
|
21
|
+
|
22
|
+
example do
|
23
|
+
o = Time.now
|
24
|
+
o.msend(:year, :month, :day).should == [o.year, o.month, o.day]
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'nuggets/object/silence'
|
2
|
+
|
3
|
+
describe Object, 'when extended by', Nuggets::Object::SilenceMixin do
|
4
|
+
|
5
|
+
it { Object.ancestors.should include(Nuggets::Object::SilenceMixin) }
|
6
|
+
|
7
|
+
before do
|
8
|
+
@stderr, @old_stderr = '', $stderr
|
9
|
+
$stderr = StringIO.new(@stderr)
|
10
|
+
|
11
|
+
AConst = :foo
|
12
|
+
end
|
13
|
+
|
14
|
+
after do
|
15
|
+
$stderr = @old_stderr
|
16
|
+
Object.send(:remove_const, :AConst) if Object.const_defined?(:AConst)
|
17
|
+
end
|
18
|
+
|
19
|
+
example do
|
20
|
+
AConst = :bar
|
21
|
+
|
22
|
+
AConst.should be_equal(:bar)
|
23
|
+
@stderr.should =~ /warning: already initialized constant AConst/
|
24
|
+
end
|
25
|
+
|
26
|
+
example do
|
27
|
+
silence { AConst = :baz }
|
28
|
+
|
29
|
+
AConst.should be_equal(:baz)
|
30
|
+
@stderr.should == ''
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'nuggets/object/singleton_class'
|
2
|
+
|
3
|
+
describe Object, 'when extended by', Nuggets::Object::SingletonClassMixin do
|
4
|
+
|
5
|
+
it { Object.ancestors.should include(Nuggets::Object::SingletonClassMixin) }
|
6
|
+
|
7
|
+
[Object, Class, Object.new, Class.new, 's', [1, 2], { :a => 'b' }].each { |o|
|
8
|
+
example { o.should_not be_a_singleton_class }
|
9
|
+
example { lambda { o.singleton_object }.should raise_error(TypeError) }
|
10
|
+
|
11
|
+
s = o.singleton_class
|
12
|
+
|
13
|
+
example { s.should be_a_singleton_class }
|
14
|
+
example { s.singleton_object.should be_equal(o) }
|
15
|
+
}
|
16
|
+
|
17
|
+
example do
|
18
|
+
c = Class.new
|
19
|
+
c.should_not be_a_singleton_class
|
20
|
+
o = c.new
|
21
|
+
c.should_not be_a_singleton_class
|
22
|
+
end
|
23
|
+
|
24
|
+
example do
|
25
|
+
nil.singleton_class.should == NilClass
|
26
|
+
NilClass.should be_a_singleton_class
|
27
|
+
NilClass.singleton_object.should be_equal(nil)
|
28
|
+
end
|
29
|
+
|
30
|
+
example do
|
31
|
+
class A; end
|
32
|
+
class B < A; end
|
33
|
+
|
34
|
+
a = A.singleton_class
|
35
|
+
b = B.singleton_class
|
36
|
+
|
37
|
+
a.should be_a_singleton_class
|
38
|
+
b.should be_a_singleton_class
|
39
|
+
|
40
|
+
a.singleton_object.should be_equal(A)
|
41
|
+
b.singleton_object.should be_equal(B)
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'nuggets/proc/bind'
|
2
|
+
|
3
|
+
describe Proc, 'when extended by', Nuggets::Proc::BindMixin do
|
4
|
+
|
5
|
+
it { Proc.ancestors.should include(Nuggets::Proc::BindMixin) }
|
6
|
+
|
7
|
+
before :each do
|
8
|
+
@l = lambda { bla }
|
9
|
+
end
|
10
|
+
|
11
|
+
example do
|
12
|
+
lambda { @l.call }.should raise_error(NameError)
|
13
|
+
end
|
14
|
+
|
15
|
+
example do
|
16
|
+
module Foo; def self.bla; 'bar'; end; end
|
17
|
+
@l.bind(Foo).call.should == 'bar'
|
18
|
+
end
|
19
|
+
|
20
|
+
example do
|
21
|
+
class Bar; def self.bla; 'baz'; end; end
|
22
|
+
@l.bind(Bar).call.should == 'baz'
|
23
|
+
end
|
24
|
+
|
25
|
+
example do
|
26
|
+
class Baz; def bla; 'foo'; end; end
|
27
|
+
@l.bind(Baz.new).call.should == 'foo'
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'nuggets/range/quantile'
|
2
|
+
|
3
|
+
describe Range, 'when extended by', Nuggets::Range::QuantileMixin do
|
4
|
+
|
5
|
+
it { Range.ancestors.should include(Nuggets::Range::QuantileMixin) }
|
6
|
+
|
7
|
+
example do
|
8
|
+
(1..5).quantile(0, 3).should == 1
|
9
|
+
end
|
10
|
+
|
11
|
+
example do
|
12
|
+
(1..5).quantile(1, 3).should == 1
|
13
|
+
end
|
14
|
+
|
15
|
+
example do
|
16
|
+
(1..5).quantile(2, 3).should == 1
|
17
|
+
end
|
18
|
+
|
19
|
+
example do
|
20
|
+
(1..5).quantile(3, 3).should == 2
|
21
|
+
end
|
22
|
+
|
23
|
+
example do
|
24
|
+
(1..5).quantile(4, 3).should == 3
|
25
|
+
end
|
26
|
+
|
27
|
+
example do
|
28
|
+
(1..5).quantile(5, 3).should == 3
|
29
|
+
end
|
30
|
+
|
31
|
+
example do
|
32
|
+
(1..5).quantile(6, 3).should == 3
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'nuggets/string/evaluate'
|
2
|
+
|
3
|
+
describe String, 'when extended by', Nuggets::String::EvaluateMixin do
|
4
|
+
|
5
|
+
it { String.ancestors.should include(Nuggets::String::EvaluateMixin) }
|
6
|
+
|
7
|
+
describe do
|
8
|
+
|
9
|
+
%w[bl#{a}blub bl#{a}#{b}lub].each { |str|
|
10
|
+
{ 'blablub' => %w[a b], 'blubblub' => %w[ub b] }.each { |res, (a, b)|
|
11
|
+
example { str.evaluate(binding).should == res }
|
12
|
+
}
|
13
|
+
|
14
|
+
example {
|
15
|
+
lambda { str.evaluate(binding) }.should raise_error(NameError, /`a'/)
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
[ 'a"b"c', 'a\"b\"c', 'a\\"b\\"c', 'a\\\"b\\\"c',
|
22
|
+
"a'b'c", 'a%q{b}c', 'a{b}c', 'a{bc', 'ab}c' ].each { |str|
|
23
|
+
example { str.evaluate(binding).should == str }
|
24
|
+
}
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'nuggets/string/wc'
|
4
|
+
|
5
|
+
describe String, 'when extended by', Nuggets::String::WcMixin do
|
6
|
+
|
7
|
+
it { String.ancestors.should include(Nuggets::String::WcMixin) }
|
8
|
+
|
9
|
+
describe 'empty' do
|
10
|
+
|
11
|
+
before do
|
12
|
+
@str = ''
|
13
|
+
end
|
14
|
+
|
15
|
+
example { @str.wc.should == [0, 0, 0] }
|
16
|
+
|
17
|
+
example { @str.line_count.should == 0 }
|
18
|
+
|
19
|
+
example { @str.word_count.should == 0 }
|
20
|
+
|
21
|
+
example { @str.byte_count.should == 0 }
|
22
|
+
|
23
|
+
example { @str.char_count.should == 0 }
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
describe 'non-empty' do
|
28
|
+
|
29
|
+
before do
|
30
|
+
@str = <<-STR
|
31
|
+
The fox went out on a chilly night / Prayed for the moon to give him light / For he had many a mile to go that night / Before he reached the town o
|
32
|
+
He ran til he came to a great big bin / Where the ducks and the geese were kept therein / Said, a couple of you are going to grease my chin / Before I leave this town o
|
33
|
+
He grabbed the grey goose by the neck / Throwed a duck across his back / He didn't mind the quack, quack, quack / And the legs all dangling down o
|
34
|
+
Then old mother Flipper-flopper jumped out of bed / Out of the window she cocked her head / Crying, John, John the grey goose is gone / and the fox is on the town o
|
35
|
+
Then John he went to the top of the hill / Blew his horn both loud and shrill / The fox, he said, I better flee with my kill / Or they'll soon be on my trail o
|
36
|
+
He ran till he came to his cozy den / There were the little ones, eight, nine, ten / Saying, Daddy, daddy, Better go back again / For it must be a mighty fine town o
|
37
|
+
Then the fox and his wife, without any strife / Cut up the goose with a carving knife / They never had such a supper in their life / And the little ones chewed on the bones o
|
38
|
+
STR
|
39
|
+
end
|
40
|
+
|
41
|
+
example { @str.wc.should == [7, 252, 1130] }
|
42
|
+
|
43
|
+
example { @str.line_count.should == 7 }
|
44
|
+
|
45
|
+
example { @str.word_count.should == 252 }
|
46
|
+
|
47
|
+
example { @str.byte_count.should == 1130 }
|
48
|
+
|
49
|
+
example { @str.char_count.should == 1130 }
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
describe 'special' do
|
54
|
+
|
55
|
+
before do
|
56
|
+
@str = <<-STR
|
57
|
+
TECHNICIÄNS ÖF SPÅCE SHIP EÅRTH
|
58
|
+
THIS IS YÖÜR CÄPTÅIN SPEÄKING
|
59
|
+
YÖÜR ØÅPTÅIN IS DEA̋D
|
60
|
+
STR
|
61
|
+
end
|
62
|
+
|
63
|
+
example { @str.wc.should == [3, 14, 99] }
|
64
|
+
|
65
|
+
example { @str.line_count.should == 3 }
|
66
|
+
|
67
|
+
example { @str.word_count.should == 14 }
|
68
|
+
|
69
|
+
example { @str.byte_count.should == 99 }
|
70
|
+
|
71
|
+
example { @str.char_count.should == 84 }
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'nuggets/string/xor'
|
2
|
+
|
3
|
+
describe String, 'when extended by', Nuggets::String::XorMixin do
|
4
|
+
|
5
|
+
it { String.ancestors.should include(Nuggets::String::XorMixin) }
|
6
|
+
|
7
|
+
describe 'same length' do
|
8
|
+
|
9
|
+
before do
|
10
|
+
@str1 = 'foobar'
|
11
|
+
@str2 = 'secret'
|
12
|
+
|
13
|
+
@res = "\025\n\f\020\004\006"
|
14
|
+
end
|
15
|
+
|
16
|
+
example { @str1.xor(@str2).should == @res }
|
17
|
+
|
18
|
+
example { @str2.xor(@str1).should == @res }
|
19
|
+
|
20
|
+
example { (@str1 ^ @str2).should == @res }
|
21
|
+
|
22
|
+
example { (@str2 ^ @str1).should == @res }
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
describe 'different length' do
|
27
|
+
|
28
|
+
before do
|
29
|
+
@str1 = 'baz'
|
30
|
+
@str2 = 'secret'
|
31
|
+
@str3 = 'foobarbaz'
|
32
|
+
|
33
|
+
@res1 = "sec\020\004\016"
|
34
|
+
@res2 = "foo\021\004\021\020\004\016"
|
35
|
+
end
|
36
|
+
|
37
|
+
example { @str1.xor(@str2).should == @res1 }
|
38
|
+
|
39
|
+
example { @str2.xor(@str1).should == @res1 }
|
40
|
+
|
41
|
+
example { (@str1 ^ @str2).should == @res1 }
|
42
|
+
|
43
|
+
example { (@str2 ^ @str1).should == @res1 }
|
44
|
+
|
45
|
+
example { lambda { @str1.xor(@str2, true) }.should raise_error(ArgumentError, 'must be of same length') }
|
46
|
+
|
47
|
+
example { @str2.xor(@str3).should == @res2 }
|
48
|
+
|
49
|
+
example { @str3.xor(@str2).should == @res2 }
|
50
|
+
|
51
|
+
example { (@str2 ^ @str3).should == @res2 }
|
52
|
+
|
53
|
+
example { (@str3 ^ @str2).should == @res2 }
|
54
|
+
|
55
|
+
example { lambda { @str2.xor(@str3, true) }.should raise_error(ArgumentError, 'must be of same length') }
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'nuggets/uri/content_type'
|
2
|
+
|
3
|
+
describe URI, 'when extended by', Nuggets::URI::ContentTypeMixin do
|
4
|
+
|
5
|
+
it { (class << URI; ancestors; end).should include(Nuggets::URI::ContentTypeMixin) }
|
6
|
+
|
7
|
+
%w[
|
8
|
+
http://www.google.de
|
9
|
+
http://blackwinter.de/misc/
|
10
|
+
].each { |u|
|
11
|
+
example { URI.content_type(u).should == 'text/html' }
|
12
|
+
}
|
13
|
+
|
14
|
+
%w[
|
15
|
+
htp://www.google.de
|
16
|
+
www.google.de
|
17
|
+
http://blackwinter.de/bla
|
18
|
+
http://blawinter.de
|
19
|
+
].each { |u|
|
20
|
+
example { URI.content_type(u).should == nil }
|
21
|
+
}
|
22
|
+
|
23
|
+
{
|
24
|
+
'http://blackwinter.de/misc/ww.png' => 'image/png',
|
25
|
+
'http://blackwinter.de/misc/suicide_is_painless.mid' => 'audio/midi',
|
26
|
+
'http://blackwinter.de/misc/expand_macros.pl.gz' => 'application/x-gzip',
|
27
|
+
'http://blackwinter.de/misc/blanc60302523.nth' => 'application/vnd.nok-s40theme'
|
28
|
+
}.each { |u, t|
|
29
|
+
example { URI.content_type(u).should == t }
|
30
|
+
}
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'nuggets/uri/exist'
|
2
|
+
|
3
|
+
describe URI, 'when extended by', Nuggets::URI::ExistMixin do
|
4
|
+
|
5
|
+
it { (class << URI; ancestors; end).should include(Nuggets::URI::ExistMixin) }
|
6
|
+
|
7
|
+
%w[
|
8
|
+
http://www.google.de
|
9
|
+
http://blackwinter.de
|
10
|
+
http://blackwinter.de/index.html
|
11
|
+
].each { |u|
|
12
|
+
example { URI.exist?(u).should be_true }
|
13
|
+
}
|
14
|
+
|
15
|
+
%w[
|
16
|
+
htp://www.google.de
|
17
|
+
www.google.de
|
18
|
+
http://xuugle.de
|
19
|
+
http://blackwinter.de/bla
|
20
|
+
http://blackwinter.de/index.htm
|
21
|
+
].each { |u|
|
22
|
+
example { URI.exist?(u).should be_false }
|
23
|
+
}
|
24
|
+
|
25
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
$:.unshift('lib') unless $:[0] == 'lib'
|
2
|
+
|
3
|
+
#class << Spec::Matchers
|
4
|
+
#
|
5
|
+
# def generated_description
|
6
|
+
# return nil if last_should.nil?
|
7
|
+
#
|
8
|
+
# operator = last_should.to_s.tr('_', ' ')
|
9
|
+
# target = last_matcher.instance_variable_get(:@actual)
|
10
|
+
#
|
11
|
+
# "#{target.inspect} #{operator} #{last_description}"
|
12
|
+
# end
|
13
|
+
#
|
14
|
+
#end
|
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: 11
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 6
|
9
|
-
-
|
10
|
-
version: 0.6.
|
9
|
+
- 6
|
10
|
+
version: 0.6.6
|
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-01-
|
18
|
+
date: 2011-01-07 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -129,21 +129,47 @@ files:
|
|
129
129
|
- ChangeLog
|
130
130
|
- Rakefile
|
131
131
|
- COPYING
|
132
|
+
- .rspec
|
133
|
+
- spec/nuggets/integer/map_spec.rb
|
134
|
+
- spec/nuggets/integer/length_spec.rb
|
135
|
+
- spec/nuggets/array/variance_spec.rb
|
136
|
+
- spec/nuggets/array/runiq_spec.rb
|
137
|
+
- spec/nuggets/array/limit_spec.rb
|
138
|
+
- spec/nuggets/array/standard_deviation_spec.rb
|
139
|
+
- spec/nuggets/proc/bind_spec.rb
|
140
|
+
- spec/nuggets/hash/unroll_spec.rb
|
141
|
+
- spec/nuggets/hash/nest_spec.rb
|
142
|
+
- spec/nuggets/file/which_spec.rb
|
143
|
+
- spec/nuggets/string/evaluate_spec.rb
|
144
|
+
- spec/nuggets/string/xor_spec.rb
|
145
|
+
- spec/nuggets/string/wc_spec.rb
|
146
|
+
- spec/nuggets/env/user_encoding_spec.rb
|
147
|
+
- spec/nuggets/env/user_home_spec.rb
|
148
|
+
- spec/nuggets/env/set_spec.rb
|
149
|
+
- spec/nuggets/uri/content_type_spec.rb
|
150
|
+
- spec/nuggets/uri/exist_spec.rb
|
151
|
+
- spec/nuggets/range/quantile_spec.rb
|
152
|
+
- spec/nuggets/object/singleton_class_spec.rb
|
153
|
+
- spec/nuggets/object/boolean_spec.rb
|
154
|
+
- spec/nuggets/object/msend_spec.rb
|
155
|
+
- spec/nuggets/object/silence_spec.rb
|
156
|
+
- spec/nuggets/object/blank_spec.rb
|
157
|
+
- spec/spec_helper.rb
|
132
158
|
has_rdoc: true
|
133
159
|
homepage: http://prometheus.rubyforge.org/ruby-nuggets
|
134
160
|
licenses: []
|
135
161
|
|
136
162
|
post_install_message:
|
137
163
|
rdoc_options:
|
138
|
-
- --inline-source
|
139
|
-
- --all
|
140
|
-
- --charset
|
141
|
-
- UTF-8
|
142
|
-
- --main
|
143
|
-
- README
|
144
164
|
- --title
|
145
165
|
- ruby-nuggets Application documentation
|
146
166
|
- --line-numbers
|
167
|
+
- --main
|
168
|
+
- README
|
169
|
+
- --inline-source
|
170
|
+
- --charset
|
171
|
+
- UTF-8
|
172
|
+
- --all
|
147
173
|
require_paths:
|
148
174
|
- lib
|
149
175
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -167,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
167
193
|
requirements: []
|
168
194
|
|
169
195
|
rubyforge_project: prometheus
|
170
|
-
rubygems_version: 1.4.
|
196
|
+
rubygems_version: 1.4.2
|
171
197
|
signing_key:
|
172
198
|
specification_version: 3
|
173
199
|
summary: Some extensions to the Ruby programming language.
|