ruby-nuggets 0.9.8.1 → 0.9.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README +1 -1
- data/Rakefile +9 -3
- data/lib/nuggets/all.rb +1 -1
- data/lib/nuggets/array/combination.rb +2 -25
- data/lib/nuggets/array/flatten_once.rb +1 -12
- data/lib/nuggets/array/format.rb +2 -60
- data/lib/nuggets/array/in_order.rb +1 -12
- data/lib/nuggets/array/monotone.rb +10 -27
- data/lib/nuggets/array/only.rb +1 -16
- data/lib/nuggets/array/shuffle.rb +1 -1
- data/lib/nuggets/array/to_hash.rb +1 -22
- data/lib/nuggets/cli.rb +2 -2
- data/lib/nuggets/content_type.rb +3 -8
- data/lib/nuggets/dotted_decimal.rb +0 -18
- data/lib/nuggets/enumerable/all_any_extended.rb +0 -27
- data/lib/nuggets/enumerable/minmax.rb +4 -25
- data/lib/nuggets/hash/at.rb +2 -20
- data/lib/nuggets/hash/deep_fetch.rb +5 -0
- data/lib/nuggets/hash/deep_fetch_mixin.rb +75 -0
- data/lib/nuggets/hash/in_order.rb +0 -8
- data/lib/nuggets/hash/insert.rb +2 -13
- data/lib/nuggets/hash/only.rb +2 -18
- data/lib/nuggets/i18n.rb +1 -10
- data/lib/nuggets/integer/factorial.rb +0 -17
- data/lib/nuggets/integer/to_binary_s.rb +0 -8
- data/lib/nuggets/lsi.rb +2 -2
- data/lib/nuggets/midos.rb +2 -2
- data/lib/nuggets/mysql.rb +6 -207
- data/lib/nuggets/numeric/duration.rb +0 -8
- data/lib/nuggets/numeric/limit.rb +1 -8
- data/lib/nuggets/numeric/signum.rb +0 -7
- data/lib/nuggets/numeric/to_multiple.rb +0 -6
- data/lib/nuggets/rdf/compression.rb +3 -89
- data/lib/nuggets/rdf/prefix.rb +6 -32
- data/lib/nuggets/rdf/turtle/reader.rb +5 -70
- data/lib/nuggets/rdf/turtle.rb +6 -122
- data/lib/nuggets/rdf/uri.rb +5 -37
- data/lib/nuggets/ruby.rb +39 -147
- data/lib/nuggets/string/capitalize_first.rb +2 -18
- data/lib/nuggets/string/case.rb +0 -22
- data/lib/nuggets/string/msub.rb +0 -18
- data/lib/nuggets/string/nsub.rb +2 -16
- data/lib/nuggets/string/sub_with_md.rb +6 -25
- data/lib/nuggets/string/word_wrap.rb +1 -35
- data/lib/nuggets/util/ansicolor2css.rb +1 -1
- data/lib/nuggets/util/cli.rb +1 -1
- data/lib/nuggets/util/content_type.rb +1 -1
- data/lib/nuggets/util/dotted_decimal.rb +1 -2
- data/lib/nuggets/util/i18n.rb +1 -1
- data/lib/nuggets/util/lazy_attr.rb +1 -1
- data/lib/nuggets/util/log_parser/apache.rb +1 -1
- data/lib/nuggets/util/log_parser/rails.rb +1 -1
- data/lib/nuggets/util/log_parser.rb +1 -1
- data/lib/nuggets/util/midos.rb +1 -1
- data/lib/nuggets/util/mysql.rb +1 -1
- data/lib/nuggets/util/pluggable.rb +1 -1
- data/lib/nuggets/util/ruby.rb +1 -1
- data/lib/nuggets/version.rb +2 -2
- data/spec/nuggets/array/boost_spec.rb +1 -3
- data/spec/nuggets/array/combination_spec.rb +25 -0
- data/spec/nuggets/array/correlation_spec.rb +1 -3
- data/spec/nuggets/array/flatten_once_spec.rb +16 -0
- data/spec/nuggets/array/flush_spec.rb +1 -3
- data/spec/nuggets/array/format_spec.rb +52 -0
- data/spec/nuggets/array/hashify_spec.rb +1 -3
- data/spec/nuggets/array/histogram_spec.rb +1 -3
- data/spec/nuggets/array/in_order_spec.rb +13 -0
- data/spec/nuggets/array/limit_spec.rb +1 -3
- data/spec/nuggets/array/mean_spec.rb +3 -5
- data/spec/nuggets/array/median_spec.rb +3 -5
- data/spec/nuggets/array/mode_spec.rb +1 -3
- data/spec/nuggets/array/monotone_spec.rb +30 -0
- data/spec/nuggets/array/only_spec.rb +26 -0
- data/spec/nuggets/array/regression_spec.rb +1 -3
- data/spec/nuggets/array/runiq_spec.rb +1 -3
- data/spec/nuggets/array/standard_deviation_spec.rb +1 -3
- data/spec/nuggets/array/to_hash_spec.rb +28 -0
- data/spec/nuggets/array/variance_spec.rb +3 -5
- data/spec/nuggets/dotted_decimal_spec.rb +27 -0
- data/spec/nuggets/enumerable/all_any_extended_spec.rb +31 -0
- data/spec/nuggets/enumerable/minmax_spec.rb +21 -0
- data/spec/nuggets/env/set_spec.rb +1 -3
- data/spec/nuggets/env/user_encoding_spec.rb +1 -3
- data/spec/nuggets/env/user_home_spec.rb +12 -10
- data/spec/nuggets/file/ext_spec.rb +1 -3
- data/spec/nuggets/file/replace_spec.rb +1 -3
- data/spec/nuggets/file/sub_spec.rb +1 -3
- data/spec/nuggets/file/which_spec.rb +1 -3
- data/spec/nuggets/hash/at_spec.rb +19 -0
- data/spec/nuggets/hash/deep_fetch_spec.rb +159 -0
- data/spec/nuggets/hash/deep_merge_spec.rb +1 -3
- data/spec/nuggets/hash/in_order_spec.rb +12 -0
- data/spec/nuggets/hash/insert_spec.rb +13 -0
- data/spec/nuggets/hash/nest_spec.rb +1 -3
- data/spec/nuggets/hash/only_spec.rb +29 -0
- data/spec/nuggets/hash/seen_spec.rb +4 -6
- data/spec/nuggets/hash/unroll_spec.rb +2 -4
- data/spec/nuggets/i18n_spec.rb +13 -0
- data/spec/nuggets/integer/factorial_spec.rb +10 -0
- data/spec/nuggets/integer/length_spec.rb +1 -3
- data/spec/nuggets/integer/map_spec.rb +1 -3
- data/spec/nuggets/integer/to_binary_s_spec.rb +19 -0
- data/spec/nuggets/numeric/duration_spec.rb +25 -0
- data/spec/nuggets/numeric/limit_spec.rb +16 -0
- data/spec/nuggets/numeric/signum_spec.rb +16 -0
- data/spec/nuggets/numeric/to_multiple_spec.rb +16 -0
- data/spec/nuggets/object/blank_spec.rb +1 -2
- data/spec/nuggets/object/boolean_spec.rb +1 -3
- data/spec/nuggets/object/msend_spec.rb +1 -3
- data/spec/nuggets/object/silence_spec.rb +7 -4
- data/spec/nuggets/object/singleton_class_spec.rb +11 -4
- data/spec/nuggets/proc/bind_spec.rb +1 -3
- data/spec/nuggets/range/quantile_spec.rb +1 -3
- data/spec/nuggets/string/camelscore_spec.rb +11 -13
- data/spec/nuggets/string/capitalize_first_spec.rb +13 -0
- data/spec/nuggets/string/case_spec.rb +31 -0
- data/spec/nuggets/string/evaluate_spec.rb +1 -3
- data/spec/nuggets/string/msub_spec.rb +20 -0
- data/spec/nuggets/string/nsub_spec.rb +13 -0
- data/spec/nuggets/string/sub_with_md_spec.rb +25 -0
- data/spec/nuggets/string/wc_spec.rb +1 -3
- data/spec/nuggets/string/word_wrap_spec.rb +81 -0
- data/spec/nuggets/string/xor_spec.rb +1 -3
- data/spec/nuggets/uri/content_type_spec.rb +32 -27
- data/spec/nuggets/uri/exist_spec.rb +33 -9
- data/spec/spec_helper.rb +17 -0
- metadata +34 -5
- data/.rspec +0 -1
data/lib/nuggets/version.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'nuggets/array/boost'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
it { Array.ancestors.should include(Nuggets::Array::BoostMixin) }
|
3
|
+
describe_extended Array, Nuggets::Array::BoostMixin do
|
6
4
|
|
7
5
|
example {
|
8
6
|
lambda { [].boost_factor([]) }.should raise_error(NoMethodError)
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'nuggets/array/combination'
|
2
|
+
|
3
|
+
describe Array, 'combination' do
|
4
|
+
|
5
|
+
let(:a) { %w[a b c d] }
|
6
|
+
|
7
|
+
example {
|
8
|
+
r = [%w[a b c], %w[a b d], %w[a c d], %w[b c d]]
|
9
|
+
|
10
|
+
a.comb(3).should == r
|
11
|
+
lambda { |b| a.comb(3, &b) }.should yield_successive_args(*r)
|
12
|
+
}
|
13
|
+
|
14
|
+
example {
|
15
|
+
a.comb(4, 2, 4).should == [%w[a b c d], %w[a b], %w[a c], %w[a d], %w[b c], %w[b d], %w[c d], %w[a b c d]]
|
16
|
+
}
|
17
|
+
|
18
|
+
example {
|
19
|
+
r = [%w[a b c d], %w[a b c], %w[a b d], %w[a c d], %w[b c d], %w[a b], %w[a c], %w[a d], %w[b c], %w[b d], %w[c d], %w[a], %w[b], %w[c], %w[d], []]
|
20
|
+
|
21
|
+
a.comb.should == r
|
22
|
+
lambda { |b| a.comb(&b) }.should yield_successive_args(*r)
|
23
|
+
}
|
24
|
+
|
25
|
+
end
|
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'nuggets/array/correlation'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
it { Array.ancestors.should include(Nuggets::Array::CorrelationMixin) }
|
3
|
+
describe_extended Array, Nuggets::Array::CorrelationMixin do
|
6
4
|
|
7
5
|
example do
|
8
6
|
[].correlation_coefficient.should == 0.0
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'nuggets/array/flatten_once'
|
2
|
+
|
3
|
+
describe Array, 'flatten_once' do
|
4
|
+
|
5
|
+
let(:a) { [1, 2, [3, 4, 5], 6, [7, [8, 9]]] }
|
6
|
+
|
7
|
+
example {
|
8
|
+
a.flatten_once.should == [1, 2, 3, 4, 5, 6, 7, [8, 9]]
|
9
|
+
}
|
10
|
+
|
11
|
+
example {
|
12
|
+
a.flatten_once!
|
13
|
+
a.should == [1, 2, 3, 4, 5, 6, 7, [8, 9]]
|
14
|
+
}
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'nuggets/array/format'
|
2
|
+
|
3
|
+
describe Array, 'format' do
|
4
|
+
|
5
|
+
def self.test_format(*f)
|
6
|
+
f.pop.each { |x, y| example { (f.dup % x).should == y } }
|
7
|
+
end
|
8
|
+
|
9
|
+
test_format('"%s"',
|
10
|
+
[] => '',
|
11
|
+
'string' => '"string"',
|
12
|
+
'' => ''
|
13
|
+
)
|
14
|
+
|
15
|
+
test_format('%s, (%s)', '%s', '(%s)',
|
16
|
+
['place', 'country'] => 'place, (country)',
|
17
|
+
['place', '' ] => 'place',
|
18
|
+
['', 'country'] => '(country)',
|
19
|
+
['', '' ] => ''
|
20
|
+
)
|
21
|
+
|
22
|
+
test_format('%s: %s (%s)', '%s: %s', '%s (%s)', '%s (%s)',
|
23
|
+
['author', 'title', 'year'] => 'author: title (year)',
|
24
|
+
['author', 'title', '' ] => 'author: title',
|
25
|
+
['author', '', 'year'] => 'author (year)',
|
26
|
+
['', 'title', 'year'] => 'title (year)',
|
27
|
+
['author', '' , '' ] => 'author',
|
28
|
+
['', 'title', '' ] => 'title',
|
29
|
+
['', '', 'year'] => 'year',
|
30
|
+
['', '', '' ] => ''
|
31
|
+
)
|
32
|
+
|
33
|
+
test_format({ :sep => ':' },
|
34
|
+
['1', '2', '3', '4'] => '1:2:3:4',
|
35
|
+
['1', '2', '3', '' ] => '1:2:3',
|
36
|
+
['1', '2', '', '4'] => '1:2:4',
|
37
|
+
['1', '', '3', '4'] => '1:3:4',
|
38
|
+
['', '2', '3', '4'] => '2:3:4',
|
39
|
+
['1', '2', '', '' ] => '1:2',
|
40
|
+
['1', '', '3', '' ] => '1:3',
|
41
|
+
['1', '', '', '4'] => '1:4',
|
42
|
+
['', '2', '3', '' ] => '2:3',
|
43
|
+
['', '2', '', '4'] => '2:4',
|
44
|
+
['', '', '3', '4'] => '3:4',
|
45
|
+
['1', '', '', '' ] => '1',
|
46
|
+
['', '2', '', '' ] => '2',
|
47
|
+
['', '', '3', '' ] => '3',
|
48
|
+
['', '', '', '4'] => '4',
|
49
|
+
['', '', '', '' ] => ''
|
50
|
+
)
|
51
|
+
|
52
|
+
end
|
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'nuggets/array/hashify'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
it { Array.ancestors.should include(Nuggets::Array::HashifyMixin) }
|
3
|
+
describe_extended Array, Nuggets::Array::HashifyMixin do
|
6
4
|
|
7
5
|
example do
|
8
6
|
hash = [1, 2, 3, 4].hashify
|
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'nuggets/array/histogram'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
it { Array.ancestors.should include(Nuggets::Array::HistogramMixin) }
|
3
|
+
describe_extended Array, Nuggets::Array::HistogramMixin do
|
6
4
|
|
7
5
|
example do
|
8
6
|
[].histogram.should == {}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'nuggets/array/in_order'
|
2
|
+
|
3
|
+
describe Array, 'in_order' do
|
4
|
+
|
5
|
+
let(:a) { [:created_at, :email, :login, :updated_at] }
|
6
|
+
|
7
|
+
example { a.in_order(:login, :email).should == [:login, :email, :created_at, :updated_at] }
|
8
|
+
|
9
|
+
example { a.in_order(:email, :address).should == [:email, :created_at, :login, :updated_at] }
|
10
|
+
|
11
|
+
example { a.in_order!(:login, :email); a.should == [:login, :email, :created_at, :updated_at] }
|
12
|
+
|
13
|
+
end
|
@@ -1,9 +1,7 @@
|
|
1
1
|
require 'nuggets/array/limit'
|
2
2
|
require 'nuggets/numeric/limit'
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
it { Array.ancestors.should include(Nuggets::Array::LimitMixin) }
|
4
|
+
describe_extended Array, Nuggets::Array::LimitMixin do
|
7
5
|
|
8
6
|
describe '#limit' do
|
9
7
|
|
@@ -1,9 +1,7 @@
|
|
1
1
|
require 'nuggets/array/mean'
|
2
2
|
require 'nuggets/array/standard_deviation'
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
it { Array.ancestors.should include(Nuggets::Array::MeanMixin) }
|
4
|
+
describe_extended Array, Nuggets::Array::MeanMixin do
|
7
5
|
|
8
6
|
describe 'equalities' do
|
9
7
|
|
@@ -82,8 +80,8 @@ describe Array, 'when extended by', Nuggets::Array::MeanMixin do
|
|
82
80
|
[1e16, 1, 3, -1e16].arithmetic_mean.should == 1.0
|
83
81
|
end
|
84
82
|
|
85
|
-
|
86
|
-
|
83
|
+
xexample do
|
84
|
+
[1e30, 1, 3, -1e30].arithmetic_mean.should == 1.0
|
87
85
|
end
|
88
86
|
|
89
87
|
context do
|
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'nuggets/array/median'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
it { Array.ancestors.should include(Nuggets::Array::MedianMixin) }
|
3
|
+
describe_extended Array, Nuggets::Array::MedianMixin do
|
6
4
|
|
7
5
|
example do
|
8
6
|
[].median.should be_nil
|
@@ -69,11 +67,11 @@ describe Array, 'when extended by', Nuggets::Array::MedianMixin do
|
|
69
67
|
end
|
70
68
|
|
71
69
|
example do
|
72
|
-
lambda { %w[one two three four].median }.should raise_error(NoMethodError, %
|
70
|
+
lambda { %w[one two three four].median }.should raise_error(NoMethodError, %r{undefined method `/' .*String})
|
73
71
|
end
|
74
72
|
|
75
73
|
example do
|
76
|
-
lambda { [1, 2, 'three'].median }.should raise_error(ArgumentError,
|
74
|
+
lambda { [1, 2, 'three'].median }.should raise_error(ArgumentError, /comparison .* failed/)
|
77
75
|
end
|
78
76
|
|
79
77
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'nuggets/array/monotone'
|
2
|
+
|
3
|
+
describe Array, 'monotone' do
|
4
|
+
|
5
|
+
example {
|
6
|
+
a = [1, 2, 3, 4]
|
7
|
+
|
8
|
+
a.should be_monotonic
|
9
|
+
a.should be_ascending
|
10
|
+
a.should be_strictly_ascending
|
11
|
+
a.should_not be_descending
|
12
|
+
}
|
13
|
+
|
14
|
+
example {
|
15
|
+
b = [1, 2, 4, 3]
|
16
|
+
|
17
|
+
b.should_not be_monotonic
|
18
|
+
b.should_not be_ascending
|
19
|
+
b.should_not be_descending
|
20
|
+
}
|
21
|
+
|
22
|
+
example {
|
23
|
+
c = [1, 2, 4, 4]
|
24
|
+
|
25
|
+
c.should be_monotonic
|
26
|
+
c.should be_ascending
|
27
|
+
c.should_not be_strictly_ascending
|
28
|
+
}
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'nuggets/array/only'
|
2
|
+
|
3
|
+
describe Array, 'only' do
|
4
|
+
|
5
|
+
example {
|
6
|
+
a = [5]
|
7
|
+
|
8
|
+
a.only.should == 5
|
9
|
+
a.only(true).should == 5
|
10
|
+
}
|
11
|
+
|
12
|
+
example {
|
13
|
+
a = [1, 2, 3]
|
14
|
+
|
15
|
+
lambda { a.only }.should raise_error(IndexError, 'not a single-element array')
|
16
|
+
a.only(true).should == 1
|
17
|
+
}
|
18
|
+
|
19
|
+
example {
|
20
|
+
a = []
|
21
|
+
|
22
|
+
lambda { a.only }.should raise_error(IndexError, 'not a single-element array')
|
23
|
+
a.only(true).should be_nil
|
24
|
+
}
|
25
|
+
|
26
|
+
end
|
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'nuggets/array/regression'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
it { Array.ancestors.should include(Nuggets::Array::RegressionMixin) }
|
3
|
+
describe_extended Array, Nuggets::Array::RegressionMixin do
|
6
4
|
|
7
5
|
example {
|
8
6
|
[].linear_least_squares.should == []
|
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'nuggets/array/runiq'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
it { Array.ancestors.should include(Nuggets::Array::RuniqMixin) }
|
3
|
+
describe_extended Array, Nuggets::Array::RuniqMixin do
|
6
4
|
|
7
5
|
example do
|
8
6
|
[1, 2, 3, 4, 3, 2].runiq.should == [1, 4, 3, 2]
|
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'nuggets/array/standard_deviation'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
it { Array.ancestors.should include(Nuggets::Array::StandardDeviationMixin) }
|
3
|
+
describe_extended Array, Nuggets::Array::StandardDeviationMixin do
|
6
4
|
|
7
5
|
example do
|
8
6
|
[].standard_deviation.should == 0.0
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'nuggets/array/to_hash'
|
2
|
+
|
3
|
+
describe Array, 'to_hash' do
|
4
|
+
|
5
|
+
example {
|
6
|
+
a = [[:a, 1], [:b, 2], [:c, 3]]
|
7
|
+
a.to_h.should == { a: 1, b: 2, c: 3 }
|
8
|
+
}
|
9
|
+
|
10
|
+
example {
|
11
|
+
a = [[:a, [1, 2]], [:b, 3], [[:c, :d], [4, [5, 6]]]]
|
12
|
+
a.to_h.should == { a: [1, 2], b: 3, [:c, :d] => [4, [5, 6]] }
|
13
|
+
}
|
14
|
+
|
15
|
+
example {
|
16
|
+
a = %w[a b c d]
|
17
|
+
|
18
|
+
a.to_h.should == { 'a' => 'b', 'c' => 'd' }
|
19
|
+
a.to_h(1).should == { 'a' => 1, 'b' => 1, 'c' => 1, 'd' => 1 }
|
20
|
+
a.to_h { nil }.should == { 'a' => nil, 'b' => nil, 'c' => nil, 'd' => nil }
|
21
|
+
}
|
22
|
+
|
23
|
+
example {
|
24
|
+
h = { a: 1, b: [2, 3], c: { d: 4 } }
|
25
|
+
h.to_a.to_h.should == h
|
26
|
+
}
|
27
|
+
|
28
|
+
end
|
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'nuggets/array/variance'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
it { Array.ancestors.should include(Nuggets::Array::VarianceMixin) }
|
3
|
+
describe_extended Array, Nuggets::Array::VarianceMixin do
|
6
4
|
|
7
5
|
example do
|
8
6
|
[].variance.should == 0.0
|
@@ -40,8 +38,8 @@ describe Array, 'when extended by', Nuggets::Array::VarianceMixin do
|
|
40
38
|
[1, 2, 4, 5, 8].variance { |i| i + 1e7 }.should == 6.0
|
41
39
|
end
|
42
40
|
|
43
|
-
|
44
|
-
|
41
|
+
xexample do
|
42
|
+
[1, 2, 4, 5, 8].variance { |i| i + 1e12 }.should == 6.0
|
45
43
|
end
|
46
44
|
|
47
45
|
example do
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'nuggets/dotted_decimal'
|
2
|
+
|
3
|
+
addr = {
|
4
|
+
'77.47.161.3' => 1294967043,
|
5
|
+
'77.47.161.11' => 1294967051,
|
6
|
+
'136.202.107.2' => 2294967042,
|
7
|
+
'196.101.53.1' => 3294967041,
|
8
|
+
'255.255.255.0' => 4294967040
|
9
|
+
}
|
10
|
+
|
11
|
+
describe Integer, 'dotted_decimal' do
|
12
|
+
|
13
|
+
addr.each { |s, i| example { i.to_dotted_decimal.should == s } }
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
describe String, 'dotted_decimal' do
|
18
|
+
|
19
|
+
addr.each { |s, i| example { s.from_dotted_decimal.should == i } }
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
describe Array, 'dotted_decimal' do
|
24
|
+
|
25
|
+
example { addr.keys.sort_by_dotted_decimal.should == addr.sort_by { |k, v| v }.map(&:first) }
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'nuggets/enumerable/all_any_extended'
|
2
|
+
|
3
|
+
describe Enumerable, 'all_any_extended' do
|
4
|
+
|
5
|
+
example {
|
6
|
+
e = %w[quux quuux quix]
|
7
|
+
|
8
|
+
e.all?(String).should == true
|
9
|
+
e.any?(Numeric).should == false
|
10
|
+
}
|
11
|
+
|
12
|
+
example {
|
13
|
+
e = [:one, 'c', nil, 88]
|
14
|
+
|
15
|
+
e.all?(Object).should == true
|
16
|
+
e.any?(NilClass).should == true
|
17
|
+
}
|
18
|
+
|
19
|
+
example {
|
20
|
+
e = [0, 10, 20]
|
21
|
+
|
22
|
+
e.any?(9..99).should == true
|
23
|
+
e.any?(9, :<).should == true
|
24
|
+
e.any? { |i| i < 9 }.should == true
|
25
|
+
}
|
26
|
+
|
27
|
+
example {
|
28
|
+
lambda { [].any?(NilClass, &:nil?) }.should raise_error(ArgumentError, 'both block and object argument given')
|
29
|
+
}
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'nuggets/enumerable/minmax'
|
2
|
+
|
3
|
+
describe Enumerable, 'minmax' do
|
4
|
+
|
5
|
+
example {
|
6
|
+
e = %w[quux quuux quix]
|
7
|
+
|
8
|
+
e.max.should == 'quux'
|
9
|
+
e.max_by(:length).should == 'quuux'
|
10
|
+
e.max(:length).should == 5
|
11
|
+
}
|
12
|
+
|
13
|
+
example {
|
14
|
+
e, b = [3, 222, 45], lambda { |i| i % 10 }
|
15
|
+
|
16
|
+
e.max.should == 222
|
17
|
+
e.max_by(b).should == 45
|
18
|
+
e.max(b).should == 5
|
19
|
+
}
|
20
|
+
|
21
|
+
end
|
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'nuggets/env/set'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
it { class << ENV; ancestors; end.should include(Nuggets::Env::SetMixin) }
|
3
|
+
describe_extended ENV, Nuggets::Env::SetMixin, true do
|
6
4
|
|
7
5
|
before do
|
8
6
|
@original = ENV.to_hash
|
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'nuggets/env/user_encoding'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
it { class << ENV; ancestors; end.should include(Nuggets::Env::UserEncodingMixin) }
|
3
|
+
describe_extended ENV, Nuggets::Env::UserEncodingMixin, true do
|
6
4
|
|
7
5
|
before do
|
8
6
|
@old_env = ENV.to_hash
|
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'nuggets/env/user_home'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
it { class << ENV; ancestors; end.should include(Nuggets::Env::UserHomeMixin) }
|
3
|
+
describe_extended ENV, Nuggets::Env::UserHomeMixin, true do
|
6
4
|
|
7
5
|
before do
|
8
6
|
@old_env = ENV.to_hash
|
@@ -27,14 +25,18 @@ describe ENV, 'when extended by', Nuggets::Env::UserHomeMixin do
|
|
27
25
|
ENV.user_home.should == 'foo'
|
28
26
|
end
|
29
27
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
unless RUBY_PLATFORM == 'java'
|
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
|
34
39
|
|
35
|
-
example do
|
36
|
-
ENV.clear
|
37
|
-
ENV.user_home(nil).should be_nil
|
38
40
|
end
|
39
41
|
|
40
42
|
end
|
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'nuggets/file/ext'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
it { (class << File; ancestors; end).should include(Nuggets::File::ExtMixin) }
|
3
|
+
describe_extended File, Nuggets::File::ExtMixin, true do
|
6
4
|
|
7
5
|
[
|
8
6
|
['foo', nil, '.baz'],
|
@@ -1,9 +1,7 @@
|
|
1
1
|
require 'nuggets/file/replace'
|
2
2
|
require 'nuggets/tempfile/open'
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
it { (class << File; ancestors; end).should include(Nuggets::File::ReplaceMixin) }
|
4
|
+
describe_extended File, Nuggets::File::ReplaceMixin, true do
|
7
5
|
|
8
6
|
before :each do
|
9
7
|
@txt = <<-EOT.freeze
|
@@ -1,9 +1,7 @@
|
|
1
1
|
require 'nuggets/file/sub'
|
2
2
|
require 'nuggets/tempfile/open'
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
it { (class << File; ancestors; end).should include(Nuggets::File::SubMixin) }
|
4
|
+
describe_extended File, Nuggets::File::SubMixin, true do
|
7
5
|
|
8
6
|
before :each do
|
9
7
|
@txt = <<-EOT.freeze
|
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'nuggets/file/which'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
it { (class << File; ancestors; end).should include(Nuggets::File::WhichMixin) }
|
3
|
+
describe_extended File, Nuggets::File::WhichMixin, true do
|
6
4
|
|
7
5
|
%w[cat dog rat gcc /usr/bin/X11/gcc].each { |c|
|
8
6
|
example do
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'nuggets/hash/at'
|
2
|
+
|
3
|
+
describe Hash, 'at' do
|
4
|
+
|
5
|
+
let(:h) { { :a => 1, 2 => 3, nil => nil, 'foo' => %w[b a r] } }
|
6
|
+
|
7
|
+
example { h.first.should == { a: 1 } }
|
8
|
+
|
9
|
+
example { h.last.should == { 'foo' => %w[b a r] } }
|
10
|
+
|
11
|
+
example { h.rand.should be_a(Hash) }
|
12
|
+
|
13
|
+
example { h.at(0).should == { a: 1 } }
|
14
|
+
|
15
|
+
example { h.at(1).should == { 2 => 3 } }
|
16
|
+
|
17
|
+
example { h.at(-1).should == { 'foo' => %w[b a r] } }
|
18
|
+
|
19
|
+
end
|