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.
Files changed (129) hide show
  1. checksums.yaml +4 -4
  2. data/README +1 -1
  3. data/Rakefile +9 -3
  4. data/lib/nuggets/all.rb +1 -1
  5. data/lib/nuggets/array/combination.rb +2 -25
  6. data/lib/nuggets/array/flatten_once.rb +1 -12
  7. data/lib/nuggets/array/format.rb +2 -60
  8. data/lib/nuggets/array/in_order.rb +1 -12
  9. data/lib/nuggets/array/monotone.rb +10 -27
  10. data/lib/nuggets/array/only.rb +1 -16
  11. data/lib/nuggets/array/shuffle.rb +1 -1
  12. data/lib/nuggets/array/to_hash.rb +1 -22
  13. data/lib/nuggets/cli.rb +2 -2
  14. data/lib/nuggets/content_type.rb +3 -8
  15. data/lib/nuggets/dotted_decimal.rb +0 -18
  16. data/lib/nuggets/enumerable/all_any_extended.rb +0 -27
  17. data/lib/nuggets/enumerable/minmax.rb +4 -25
  18. data/lib/nuggets/hash/at.rb +2 -20
  19. data/lib/nuggets/hash/deep_fetch.rb +5 -0
  20. data/lib/nuggets/hash/deep_fetch_mixin.rb +75 -0
  21. data/lib/nuggets/hash/in_order.rb +0 -8
  22. data/lib/nuggets/hash/insert.rb +2 -13
  23. data/lib/nuggets/hash/only.rb +2 -18
  24. data/lib/nuggets/i18n.rb +1 -10
  25. data/lib/nuggets/integer/factorial.rb +0 -17
  26. data/lib/nuggets/integer/to_binary_s.rb +0 -8
  27. data/lib/nuggets/lsi.rb +2 -2
  28. data/lib/nuggets/midos.rb +2 -2
  29. data/lib/nuggets/mysql.rb +6 -207
  30. data/lib/nuggets/numeric/duration.rb +0 -8
  31. data/lib/nuggets/numeric/limit.rb +1 -8
  32. data/lib/nuggets/numeric/signum.rb +0 -7
  33. data/lib/nuggets/numeric/to_multiple.rb +0 -6
  34. data/lib/nuggets/rdf/compression.rb +3 -89
  35. data/lib/nuggets/rdf/prefix.rb +6 -32
  36. data/lib/nuggets/rdf/turtle/reader.rb +5 -70
  37. data/lib/nuggets/rdf/turtle.rb +6 -122
  38. data/lib/nuggets/rdf/uri.rb +5 -37
  39. data/lib/nuggets/ruby.rb +39 -147
  40. data/lib/nuggets/string/capitalize_first.rb +2 -18
  41. data/lib/nuggets/string/case.rb +0 -22
  42. data/lib/nuggets/string/msub.rb +0 -18
  43. data/lib/nuggets/string/nsub.rb +2 -16
  44. data/lib/nuggets/string/sub_with_md.rb +6 -25
  45. data/lib/nuggets/string/word_wrap.rb +1 -35
  46. data/lib/nuggets/util/ansicolor2css.rb +1 -1
  47. data/lib/nuggets/util/cli.rb +1 -1
  48. data/lib/nuggets/util/content_type.rb +1 -1
  49. data/lib/nuggets/util/dotted_decimal.rb +1 -2
  50. data/lib/nuggets/util/i18n.rb +1 -1
  51. data/lib/nuggets/util/lazy_attr.rb +1 -1
  52. data/lib/nuggets/util/log_parser/apache.rb +1 -1
  53. data/lib/nuggets/util/log_parser/rails.rb +1 -1
  54. data/lib/nuggets/util/log_parser.rb +1 -1
  55. data/lib/nuggets/util/midos.rb +1 -1
  56. data/lib/nuggets/util/mysql.rb +1 -1
  57. data/lib/nuggets/util/pluggable.rb +1 -1
  58. data/lib/nuggets/util/ruby.rb +1 -1
  59. data/lib/nuggets/version.rb +2 -2
  60. data/spec/nuggets/array/boost_spec.rb +1 -3
  61. data/spec/nuggets/array/combination_spec.rb +25 -0
  62. data/spec/nuggets/array/correlation_spec.rb +1 -3
  63. data/spec/nuggets/array/flatten_once_spec.rb +16 -0
  64. data/spec/nuggets/array/flush_spec.rb +1 -3
  65. data/spec/nuggets/array/format_spec.rb +52 -0
  66. data/spec/nuggets/array/hashify_spec.rb +1 -3
  67. data/spec/nuggets/array/histogram_spec.rb +1 -3
  68. data/spec/nuggets/array/in_order_spec.rb +13 -0
  69. data/spec/nuggets/array/limit_spec.rb +1 -3
  70. data/spec/nuggets/array/mean_spec.rb +3 -5
  71. data/spec/nuggets/array/median_spec.rb +3 -5
  72. data/spec/nuggets/array/mode_spec.rb +1 -3
  73. data/spec/nuggets/array/monotone_spec.rb +30 -0
  74. data/spec/nuggets/array/only_spec.rb +26 -0
  75. data/spec/nuggets/array/regression_spec.rb +1 -3
  76. data/spec/nuggets/array/runiq_spec.rb +1 -3
  77. data/spec/nuggets/array/standard_deviation_spec.rb +1 -3
  78. data/spec/nuggets/array/to_hash_spec.rb +28 -0
  79. data/spec/nuggets/array/variance_spec.rb +3 -5
  80. data/spec/nuggets/dotted_decimal_spec.rb +27 -0
  81. data/spec/nuggets/enumerable/all_any_extended_spec.rb +31 -0
  82. data/spec/nuggets/enumerable/minmax_spec.rb +21 -0
  83. data/spec/nuggets/env/set_spec.rb +1 -3
  84. data/spec/nuggets/env/user_encoding_spec.rb +1 -3
  85. data/spec/nuggets/env/user_home_spec.rb +12 -10
  86. data/spec/nuggets/file/ext_spec.rb +1 -3
  87. data/spec/nuggets/file/replace_spec.rb +1 -3
  88. data/spec/nuggets/file/sub_spec.rb +1 -3
  89. data/spec/nuggets/file/which_spec.rb +1 -3
  90. data/spec/nuggets/hash/at_spec.rb +19 -0
  91. data/spec/nuggets/hash/deep_fetch_spec.rb +159 -0
  92. data/spec/nuggets/hash/deep_merge_spec.rb +1 -3
  93. data/spec/nuggets/hash/in_order_spec.rb +12 -0
  94. data/spec/nuggets/hash/insert_spec.rb +13 -0
  95. data/spec/nuggets/hash/nest_spec.rb +1 -3
  96. data/spec/nuggets/hash/only_spec.rb +29 -0
  97. data/spec/nuggets/hash/seen_spec.rb +4 -6
  98. data/spec/nuggets/hash/unroll_spec.rb +2 -4
  99. data/spec/nuggets/i18n_spec.rb +13 -0
  100. data/spec/nuggets/integer/factorial_spec.rb +10 -0
  101. data/spec/nuggets/integer/length_spec.rb +1 -3
  102. data/spec/nuggets/integer/map_spec.rb +1 -3
  103. data/spec/nuggets/integer/to_binary_s_spec.rb +19 -0
  104. data/spec/nuggets/numeric/duration_spec.rb +25 -0
  105. data/spec/nuggets/numeric/limit_spec.rb +16 -0
  106. data/spec/nuggets/numeric/signum_spec.rb +16 -0
  107. data/spec/nuggets/numeric/to_multiple_spec.rb +16 -0
  108. data/spec/nuggets/object/blank_spec.rb +1 -2
  109. data/spec/nuggets/object/boolean_spec.rb +1 -3
  110. data/spec/nuggets/object/msend_spec.rb +1 -3
  111. data/spec/nuggets/object/silence_spec.rb +7 -4
  112. data/spec/nuggets/object/singleton_class_spec.rb +11 -4
  113. data/spec/nuggets/proc/bind_spec.rb +1 -3
  114. data/spec/nuggets/range/quantile_spec.rb +1 -3
  115. data/spec/nuggets/string/camelscore_spec.rb +11 -13
  116. data/spec/nuggets/string/capitalize_first_spec.rb +13 -0
  117. data/spec/nuggets/string/case_spec.rb +31 -0
  118. data/spec/nuggets/string/evaluate_spec.rb +1 -3
  119. data/spec/nuggets/string/msub_spec.rb +20 -0
  120. data/spec/nuggets/string/nsub_spec.rb +13 -0
  121. data/spec/nuggets/string/sub_with_md_spec.rb +25 -0
  122. data/spec/nuggets/string/wc_spec.rb +1 -3
  123. data/spec/nuggets/string/word_wrap_spec.rb +81 -0
  124. data/spec/nuggets/string/xor_spec.rb +1 -3
  125. data/spec/nuggets/uri/content_type_spec.rb +32 -27
  126. data/spec/nuggets/uri/exist_spec.rb +33 -9
  127. data/spec/spec_helper.rb +17 -0
  128. metadata +34 -5
  129. data/.rspec +0 -1
@@ -0,0 +1,159 @@
1
+ require 'nuggets/hash/deep_fetch'
2
+
3
+ describe_extended Hash, Nuggets::Hash::DeepFetchMixin do
4
+
5
+ example do
6
+ lambda { {}.deep_fetch('') }.should raise_error(ArgumentError, 'no keys given')
7
+ end
8
+
9
+ context do
10
+
11
+ let(:hash) { { 'foo' => { 'bar' => { 'baz' => 42 }, 'bay' => 23 } } }
12
+
13
+ example do
14
+ hash.deep_fetch('foo/bar/baz').should == 42
15
+ end
16
+
17
+ example do
18
+ hash.deep_fetch('foo/bar/bax').should == nil
19
+ end
20
+
21
+ example do
22
+ lambda { hash.deep_fetch('foo/bax/baz') }.should raise_error(KeyError)
23
+ end
24
+
25
+ example do
26
+ lambda { hash.deep_fetch('foo/bay/baz') }.should raise_error(TypeError)
27
+ end
28
+
29
+ example do
30
+ hash.deep_fetch('foo:bar:baz').should == nil
31
+ end
32
+
33
+ example do
34
+ hash.deep_fetch('foo:bar:baz', ':').should == 42
35
+ end
36
+
37
+ example do
38
+ hash.deep_fetch(%w[foo bar baz]).should == 42
39
+ end
40
+
41
+ example do
42
+ lambda { hash.deep_fetch([:foo, :bar, :baz]) }.should raise_error(KeyError)
43
+ end
44
+
45
+ example do
46
+ (hash % 'foo/bar/baz').should == 42
47
+ end
48
+
49
+ example do
50
+ (hash % %w[foo bar baz]).should == 42
51
+ end
52
+
53
+ end
54
+
55
+ context do
56
+
57
+ let(:hash) { { :foo => { :bar => { :baz => 42 } } } }
58
+
59
+ example do
60
+ lambda { hash.deep_fetch('foo/bar/baz') }.should raise_error(KeyError)
61
+ end
62
+
63
+ example do
64
+ hash.deep_fetch('foo/bar/baz', &:to_sym).should == 42
65
+ end
66
+
67
+ example do
68
+ hash.deep_fetch('foo:bar:baz', &:to_sym).should == nil
69
+ end
70
+
71
+ example do
72
+ hash.deep_fetch('foo:bar:baz', ':', &:to_sym).should == 42
73
+ end
74
+
75
+ example do
76
+ lambda { hash.deep_fetch(%w[foo bar baz]) }.should raise_error(KeyError)
77
+ end
78
+
79
+ example do
80
+ hash.deep_fetch([:foo, :bar, :baz]).should == 42
81
+ end
82
+
83
+ example do
84
+ lambda { hash % 'foo/bar/baz' }.should raise_error(KeyError)
85
+ end
86
+
87
+ example do
88
+ (hash % [:foo, :bar, :baz]).should == 42
89
+ end
90
+
91
+ end
92
+
93
+ context do
94
+
95
+ let(:hash) { { 1 => { 2 => { 3 => 42 } } } }
96
+
97
+ example do
98
+ lambda { hash.deep_fetch('1/2/3') }.should raise_error(KeyError)
99
+ end
100
+
101
+ example do
102
+ hash.deep_fetch('1/2/3', &:to_i).should == 42
103
+ end
104
+
105
+ example do
106
+ hash.deep_fetch('1:2:3', &:to_i).should == { 2 => { 3 => 42 } }
107
+ end
108
+
109
+ example do
110
+ hash.deep_fetch('1:2:3', ':', &:to_i).should == 42
111
+ end
112
+
113
+ example do
114
+ lambda { hash.deep_fetch(%w[1 2 3]) }.should raise_error(KeyError)
115
+ end
116
+
117
+ example do
118
+ hash.deep_fetch([1, 2, 3]).should == 42
119
+ end
120
+
121
+ example do
122
+ lambda { hash % '1/2/3' }.should raise_error(KeyError)
123
+ end
124
+
125
+ example do
126
+ (hash % [1, 2, 3]).should == 42
127
+ end
128
+
129
+ end
130
+
131
+ context do
132
+
133
+ let(:hash) { { 'foo' => Hash.new(0) } }
134
+
135
+ example do
136
+ hash.deep_fetch('foo/bar').should == 0
137
+ end
138
+
139
+ example do
140
+ lambda { hash.deep_fetch('foo/bar/baz') }.should raise_error(KeyError)
141
+ end
142
+
143
+ end
144
+
145
+ context do
146
+
147
+ let(:hash) { { 'foo' => Hash.new { |h, k| h[k] = [] } } }
148
+
149
+ example do
150
+ hash.deep_fetch('foo/bar').should == []
151
+ end
152
+
153
+ example do
154
+ lambda { hash.deep_fetch('foo/bar/baz') }.should raise_error(KeyError)
155
+ end
156
+
157
+ end
158
+
159
+ end
@@ -1,8 +1,6 @@
1
1
  require 'nuggets/hash/deep_merge'
2
2
 
3
- describe Hash, 'when extended by', Nuggets::Hash::DeepMergeMixin do
4
-
5
- it { Hash.ancestors.should include(Nuggets::Hash::DeepMergeMixin) }
3
+ describe_extended Hash, Nuggets::Hash::DeepMergeMixin do
6
4
 
7
5
  example do
8
6
  { :a => 1 }.deep_merge(:a => 2).should == { :a => 2 }
@@ -0,0 +1,12 @@
1
+ require 'nuggets/hash/in_order'
2
+
3
+ describe Hash, 'in_order' do
4
+
5
+ example {
6
+ h = { a: 1, b: 2, c: 3 }
7
+
8
+ h.in_order(:b, :c).should == [[:b, 2], [:c, 3], [:a, 1]]
9
+ h.in_order(:b, :d).should == [[:b, 2], [:a, 1], [:c, 3]]
10
+ }
11
+
12
+ end
@@ -0,0 +1,13 @@
1
+ require 'nuggets/hash/insert'
2
+
3
+ describe Hash, 'insert' do
4
+
5
+ let(:h) { { a: 0, b: { b1: 1, b2: 2 } } }
6
+
7
+ example { h.insert(a: -1).should == { a: -1, b: { b1: 1, b2: 2 } } }
8
+
9
+ example { h.insert(b: { b3: 3 }).should == { a: 0, b: { b1: 1, b2: 2, b3: 3 } } }
10
+
11
+ example { h.insert!(b: { b0: 0 }); h.should == { a: 0, b: { b1: 1, b2: 2, b0: 0 } } }
12
+
13
+ end
@@ -1,8 +1,6 @@
1
1
  require 'nuggets/hash/nest'
2
2
 
3
- describe Hash, 'when extended by', Nuggets::Hash::NestMixin do
4
-
5
- it { (class << Hash; self; end).ancestors.should include(Nuggets::Hash::NestMixin) }
3
+ describe_extended Hash, Nuggets::Hash::NestMixin, true do
6
4
 
7
5
  example do
8
6
  hash = Hash.nest
@@ -0,0 +1,29 @@
1
+ require 'nuggets/hash/only'
2
+
3
+ describe Hash, 'only' do
4
+
5
+ example {
6
+ h = { a: 5 }
7
+
8
+ h.only.should == { a: 5 }
9
+ h.only_pair.should == [:a, 5]
10
+ h.only(true).should == { a: 5 }
11
+ }
12
+
13
+ example {
14
+ h = { 1 => 2, 3 => 4 }
15
+
16
+ lambda { h.only }.should raise_error(IndexError, 'not a single-element hash')
17
+ lambda { h.only_pair }.should raise_error(IndexError, 'not a single-element hash')
18
+ h.only(true).should == { 1 => 2 }
19
+ }
20
+
21
+ example {
22
+ h = {}
23
+
24
+ lambda { h.only }.should raise_error(IndexError, 'not a single-element hash')
25
+ lambda { h.only_pair }.should raise_error(IndexError, 'not a single-element hash')
26
+ h.only(true).should == {}
27
+ }
28
+
29
+ end
@@ -1,18 +1,16 @@
1
1
  require 'nuggets/hash/seen'
2
2
 
3
- describe Hash, 'when extended by', Nuggets::Hash::SeenMixin do
4
-
5
- it { (class << Hash; self; end).ancestors.should include(Nuggets::Hash::SeenMixin) }
3
+ describe_extended Hash, Nuggets::Hash::SeenMixin, true do
6
4
 
7
5
  example do
8
6
  hash = Hash.seen
9
7
  hash.should be_an_instance_of(Hash)
10
8
 
11
- hash[:a].should be_false
9
+ hash[:a].should == false
12
10
  hash.should have_key(:a)
13
11
 
14
- hash[:a].should be_true
15
- hash[:a].should be_true
12
+ hash[:a].should == true
13
+ hash[:a].should == true
16
14
  end
17
15
 
18
16
  example do
@@ -1,8 +1,6 @@
1
1
  require 'nuggets/hash/unroll'
2
2
 
3
- describe Hash, 'when extended by', Nuggets::Hash::UnrollMixin do
4
-
5
- it { Hash.ancestors.should include(Nuggets::Hash::UnrollMixin) }
3
+ describe_extended Hash, Nuggets::Hash::UnrollMixin do
6
4
 
7
5
  example do
8
6
  hash = {}
@@ -28,7 +26,7 @@ describe Hash, 'when extended by', Nuggets::Hash::UnrollMixin do
28
26
  hash = { :a => { :b => 1, :c => 2 } }
29
27
 
30
28
  result = hash.unroll.first
31
- result.should have(3).items
29
+ result.size.should == 3
32
30
 
33
31
  result.first.should == :a
34
32
  result.should include(1)
@@ -0,0 +1,13 @@
1
+ # encoding: utf-8
2
+
3
+ require 'nuggets/i18n'
4
+
5
+ describe String, 'i18n' do
6
+
7
+ let(:s) { 'Äh, Rüby iß sö cüül, nö? SÖS!' }
8
+
9
+ example { s.replace_diacritics.should == 'Aeh, Rueby iss soe cueuel, noe? SOES!' }
10
+
11
+ example { s.replace_diacritics!; s.should == 'Aeh, Rueby iss soe cueuel, noe? SOES!' }
12
+
13
+ end
@@ -0,0 +1,10 @@
1
+ require 'nuggets/integer/factorial'
2
+
3
+ describe Integer, 'factorial' do
4
+
5
+ { 1 => 1, 2 => 2, 3 => 6, 4 => 24, 5 => 120, 6 => 720 }.each { |i, j|
6
+ example { i.factorial.should == j }
7
+ example { i.factorial_memoized.should == j }
8
+ }
9
+
10
+ end
@@ -1,8 +1,6 @@
1
1
  require 'nuggets/integer/length'
2
2
 
3
- describe Integer, 'when extended by', Nuggets::Integer::LengthMixin do
4
-
5
- it { Integer.ancestors.should include(Nuggets::Integer::LengthMixin) }
3
+ describe_extended Integer, Nuggets::Integer::LengthMixin do
6
4
 
7
5
  {
8
6
  0 => [1, 1],
@@ -1,8 +1,6 @@
1
1
  require 'nuggets/integer/map'
2
2
 
3
- describe Integer, 'when extended by', Nuggets::Integer::MapMixin do
4
-
5
- it { Integer.ancestors.should include(Nuggets::Integer::MapMixin) }
3
+ describe_extended Integer, Nuggets::Integer::MapMixin do
6
4
 
7
5
  {
8
6
  0 => 1,
@@ -0,0 +1,19 @@
1
+ require 'nuggets/integer/to_binary_s'
2
+
3
+ describe Integer, 'to_binary_s' do
4
+
5
+ {
6
+ 20000 => %w[00000000000000000100111000100000 100111000100000],
7
+ 800 => %w[00000000000000000000001100100000 1100100000],
8
+ 300 => %w[00000000000000000000000100101100 100101100],
9
+ 700 => %w[00000000000000000000001010111100 1010111100],
10
+ 130 => %w[00000000000000000000000010000010 10000010],
11
+ 480 => %w[00000000000000000000000111100000 111100000],
12
+ 9999 => %w[00000000000000000010011100001111 10011100001111],
13
+ 25000 => %w[00000000000000000110000110101000 110000110101000]
14
+ }.each { |i, (j, k)|
15
+ example { i.to_binary_s.should == k }
16
+ example { i.to_binary_s(32).should == j }
17
+ }
18
+
19
+ end
@@ -0,0 +1,25 @@
1
+ require 'nuggets/numeric/duration'
2
+
3
+ describe Numeric, 'duration' do
4
+
5
+ {
6
+ 123 => [[[ 0, 2, 3], '2m3s', '2m3.00s'], [[0, 0, 0.0014236111111111112], '0d', '0d 2m3s']],
7
+ 123456789 => [[[34293, 33, 9], '34293h33m9s', '34293h33m9.00s'], [[3, 11, 3.1480208333333333], '3y11m3d', '3y11m3d 3h33m9s']],
8
+ 0 => [[[ 0, 0, 0], '0s', '0.00s'], [[0, 0, 0.0], '0d', '0d 0s']],
9
+ 0.001 => [[[ 0, 0, 0.001], '0s', '0.00s'], [[0, 0, 1.1574074074074074e-08], '0d', '0d 0s']],
10
+ 1.23 => [[[ 0, 0, 1.23], '1s', '1.23s'], [[0, 0, 1.4236111111111111e-05], '0d', '0d 1s']],
11
+ 1234.56789 => [[[ 0, 20, 34.567890000000034], '20m35s', '20m34.57s'], [[0, 0, 0.014288980208333333], '0d', '0d 20m35s']]
12
+ }.each { |n, (h, y)|
13
+ example { [n.hms, n.to_hms, n.to_hms(2)].should == h }
14
+ example { [n.ymd, n.to_ymd, n.to_ymd(true)].should == y }
15
+ }
16
+
17
+ example {
18
+ lambda { -1.hms }.should raise_error(ArgumentError, 'negative duration -1')
19
+ }
20
+
21
+ example {
22
+ lambda { -1.ymd }.should raise_error(ArgumentError, 'negative duration -1')
23
+ }
24
+
25
+ end
@@ -0,0 +1,16 @@
1
+ require 'nuggets/numeric/limit'
2
+
3
+ describe Numeric, 'limit' do
4
+
5
+ {
6
+ 123 => 10,
7
+ -123 => 0,
8
+ 0 => 0,
9
+ 0.001 => 0.001,
10
+ 1.23 => 1.23,
11
+ -12.3 => 0
12
+ }.each { |n, m|
13
+ example { n.between(0, 10).should == m }
14
+ }
15
+
16
+ end
@@ -0,0 +1,16 @@
1
+ require 'nuggets/numeric/signum'
2
+
3
+ describe Numeric, 'signum' do
4
+
5
+ {
6
+ 123 => 1,
7
+ -123 => -1,
8
+ 0 => 0,
9
+ 0.001 => 1,
10
+ 1.23 => 1,
11
+ -12.3 => -1
12
+ }.each { |n, s|
13
+ example { n.sign.should == s }
14
+ }
15
+
16
+ end
@@ -0,0 +1,16 @@
1
+ require 'nuggets/numeric/to_multiple'
2
+
3
+ describe Numeric, 'to_multiple' do
4
+
5
+ {
6
+ 123 => [ 120, 120, 130],
7
+ -123 => [-120, -130, -120],
8
+ 0 => [ 0, 0, 0],
9
+ 0.001 => [ 0, 0, 10],
10
+ 5.67 => [ 10, 0, 10],
11
+ -12.3 => [ -10, -20, -10]
12
+ }.each { |n, m|
13
+ example { [n.round_to(10), n.floor_to(10), n.ceil_to(10)].should == m }
14
+ }
15
+
16
+ end
@@ -1,8 +1,7 @@
1
1
  require 'nuggets/object/blank'
2
2
 
3
- describe Object, 'when extended by', Nuggets::Object::BlankMixin do
3
+ describe_extended Object, Nuggets::Object::BlankMixin do
4
4
 
5
- it { Object.ancestors.should include(Nuggets::Object::BlankMixin) }
6
5
  it { Array.ancestors.should include(Nuggets::Array::BlankMixin) }
7
6
  it { Hash.ancestors.should include(Nuggets::Hash::BlankMixin) }
8
7
 
@@ -1,8 +1,6 @@
1
1
  require 'nuggets/object/boolean'
2
2
 
3
- describe Object, 'when extended by', Nuggets::Object::BooleanMixin do
4
-
5
- it { Object.ancestors.should include(Nuggets::Object::BooleanMixin) }
3
+ describe_extended Object, Nuggets::Object::BooleanMixin do
6
4
 
7
5
  [0, 1, -1, nil, '', 'abc', Class, Object.new].each { |o|
8
6
  example { o.should_not be_boolean }
@@ -1,8 +1,6 @@
1
1
  require 'nuggets/object/msend'
2
2
 
3
- describe Object, 'when extended by', Nuggets::Object::MSendMixin do
4
-
5
- it { Object.ancestors.should include(Nuggets::Object::MSendMixin) }
3
+ describe_extended Object, Nuggets::Object::MSendMixin do
6
4
 
7
5
  example do
8
6
  o = 'foo bar'
@@ -1,8 +1,6 @@
1
1
  require 'nuggets/object/silence'
2
2
 
3
- describe Object, 'when extended by', Nuggets::Object::SilenceMixin do
4
-
5
- it { Object.ancestors.should include(Nuggets::Object::SilenceMixin) }
3
+ describe_extended Object, Nuggets::Object::SilenceMixin do
6
4
 
7
5
  before do
8
6
  @stderr, @old_stderr = '', $stderr
@@ -20,7 +18,12 @@ describe Object, 'when extended by', Nuggets::Object::SilenceMixin do
20
18
  AConst = :bar
21
19
 
22
20
  AConst.should be_equal(:bar)
23
- @stderr.should =~ /warning: already initialized constant AConst/
21
+
22
+ if RUBY_ENGINE == 'rbx'
23
+ @stderr.should == ''
24
+ else
25
+ @stderr.should =~ /warning: already initialized constant AConst/
26
+ end
24
27
  end
25
28
 
26
29
  example do
@@ -1,10 +1,11 @@
1
1
  require 'nuggets/object/singleton_class'
2
2
 
3
- describe Object, 'when extended by', Nuggets::Object::SingletonClassMixin do
3
+ describe_extended Object, Nuggets::Object::SingletonClassMixin do
4
4
 
5
- it { Object.ancestors.should include(Nuggets::Object::SingletonClassMixin) }
5
+ objects = [Class, Object.new, Class.new, 's', [1, 2], { :a => 'b' }]
6
+ objects.unshift(Object) unless RUBY_PLATFORM == 'java' || RUBY_ENGINE == 'rbx'
6
7
 
7
- [Object, Class, Object.new, Class.new, 's', [1, 2], { :a => 'b' }].each { |o|
8
+ objects.each { |o|
8
9
  example { o.should_not be_a_singleton_class }
9
10
  example { lambda { o.singleton_object }.should raise_error(TypeError) }
10
11
 
@@ -23,7 +24,13 @@ describe Object, 'when extended by', Nuggets::Object::SingletonClassMixin do
23
24
 
24
25
  example do
25
26
  nil.singleton_class.should == NilClass
26
- #NilClass.should be_a_singleton_class
27
+
28
+ if RUBY_VERSION < '2'
29
+ NilClass.should be_a_singleton_class
30
+ else
31
+ NilClass.should be_a_virtual_class
32
+ end
33
+
27
34
  NilClass.singleton_object.should be_equal(nil)
28
35
  end
29
36
 
@@ -1,8 +1,6 @@
1
1
  require 'nuggets/proc/bind'
2
2
 
3
- describe Proc, 'when extended by', Nuggets::Proc::BindMixin do
4
-
5
- it { Proc.ancestors.should include(Nuggets::Proc::BindMixin) }
3
+ describe_extended Proc, Nuggets::Proc::BindMixin do
6
4
 
7
5
  before :each do
8
6
  @l = lambda { bla }
@@ -1,8 +1,6 @@
1
1
  require 'nuggets/range/quantile'
2
2
 
3
- describe Range, 'when extended by', Nuggets::Range::QuantileMixin do
4
-
5
- it { Range.ancestors.should include(Nuggets::Range::QuantileMixin) }
3
+ describe_extended Range, Nuggets::Range::QuantileMixin do
6
4
 
7
5
  example do
8
6
  (1..5).quantile(0, 3).should == 1
@@ -1,8 +1,6 @@
1
1
  require 'nuggets/string/camelscore'
2
2
 
3
- describe String, 'when extended by', Nuggets::String::CamelscoreMixin do
4
-
5
- it { String.ancestors.should include(Nuggets::String::CamelscoreMixin) }
3
+ describe_extended String, Nuggets::String::CamelscoreMixin do
6
4
 
7
5
  def self.with_acronyms(acronyms, &block)
8
6
  describe "with acronyms #{acronyms.inspect}" do
@@ -68,18 +66,18 @@ describe String, 'when extended by', Nuggets::String::CamelscoreMixin do
68
66
  example { 'HTML'.underscore.should == 'html' }
69
67
  example { 'html5'.camelcase.should == 'HTML5' }
70
68
  example { 'HTML5'.underscore.should == 'html5' }
71
- pending { 'xhtml'.camelcase.should == 'XHTML' }
72
- pending { 'XHTML'.underscore.should == 'xhtml' }
69
+ #pending { 'xhtml'.camelcase.should == 'XHTML' }
70
+ #pending { 'XHTML'.underscore.should == 'xhtml' }
73
71
  example { 'sql'.camelcase.should == 'SQL' }
74
72
  example { 'SQL'.underscore.should == 'sql' }
75
- pending { 'mysql'.camelcase.should == 'MySQL' }
76
- pending { 'MySQL'.underscore.should == 'mysql' }
77
- pending { 'postgresql'.camelcase.should == 'PostgreSQL' }
78
- pending { 'PostgreSQL'.underscore.should == 'postgresql' }
79
- pending { 'sqlite'.camelcase.should == 'SQLite' }
80
- pending { 'SQLite'.underscore.should == 'sqlite' }
81
- pending { 'nosql'.camelcase.should == 'NoSQL' }
82
- pending { 'NoSQL'.underscore.should == 'nosql' }
73
+ #pending { 'mysql'.camelcase.should == 'MySQL' }
74
+ #pending { 'MySQL'.underscore.should == 'mysql' }
75
+ #pending { 'postgresql'.camelcase.should == 'PostgreSQL' }
76
+ #pending { 'PostgreSQL'.underscore.should == 'postgresql' }
77
+ #pending { 'sqlite'.camelcase.should == 'SQLite' }
78
+ #pending { 'SQLite'.underscore.should == 'sqlite' }
79
+ #pending { 'nosql'.camelcase.should == 'NoSQL' }
80
+ #pending { 'NoSQL'.underscore.should == 'nosql' }
83
81
  }
84
82
 
85
83
  with_acronyms('rss' => 'RSS', 'xml' => 'XML') {
@@ -0,0 +1,13 @@
1
+ require 'nuggets/string/capitalize_first'
2
+
3
+ describe String, 'capitalize_first' do
4
+
5
+ {
6
+ 'Some string' => 'Some string',
7
+ 'some string' => 'Some string',
8
+ 'SOME STRING' => 'SOME STRING'
9
+ }.each { |s, c|
10
+ example { s.capitalize_first.should == c }
11
+ }
12
+
13
+ end
@@ -0,0 +1,31 @@
1
+ require 'nuggets/string/case'
2
+
3
+ describe String, 'case' do
4
+
5
+ example {
6
+ s = 'Some string'
7
+
8
+ s.case.should == :mixed
9
+ s.should_not be_downcase
10
+ s.should_not be_upcase
11
+ s.should be_mixed_case
12
+ s.should be_capitalized
13
+ }
14
+
15
+ example {
16
+ s = 'some string'
17
+
18
+ s.case.should == :lower
19
+ s.should be_downcase
20
+ s.should_not be_mixed_case
21
+ }
22
+
23
+ example {
24
+ s = 'SOME STRING'
25
+
26
+ s.case.should == :upper
27
+ s.should be_upcase
28
+ s.should_not be_mixed_case
29
+ }
30
+
31
+ end
@@ -1,8 +1,6 @@
1
1
  require 'nuggets/string/evaluate'
2
2
 
3
- describe String, 'when extended by', Nuggets::String::EvaluateMixin do
4
-
5
- it { String.ancestors.should include(Nuggets::String::EvaluateMixin) }
3
+ describe_extended String, Nuggets::String::EvaluateMixin do
6
4
 
7
5
  describe do
8
6
 
@@ -0,0 +1,20 @@
1
+ require 'nuggets/string/msub'
2
+
3
+ describe String, 'msub' do
4
+
5
+ let(:s) { 'Foo, Bar - Baz' }
6
+
7
+ example { s.gsub(/a/, 'o').gsub(/o/, 'a').should == 'Faa, Bar - Baz' }
8
+ example { s.msub('a' => 'o', 'o' => 'a').should == 'Faa, Bor - Boz' }
9
+
10
+ example { s.msub!('a' => 'o', 'o' => 'a'); s.should == 'Faa, Bor - Boz' }
11
+
12
+ example { s.msub(/[A-Z]/ => '#{__match__.downcase}', __binding__: binding).should == 'foo, bar - baz' }
13
+ example { s.msub(/[A-Z]/ => lambda { |match| match.downcase }).should == 'foo, bar - baz' }
14
+
15
+ t = '!!!'
16
+
17
+ example { lambda { s.msub('r' => '???', 'z' => '#{t}') }.should raise_error(NameError) }
18
+ example { s.msub('r' => '???', 'z' => '#{t}', __binding__: binding).should == 'Foo, Ba??? - Ba!!!' }
19
+
20
+ end
@@ -0,0 +1,13 @@
1
+ require 'nuggets/string/nsub'
2
+
3
+ describe String, 'nsub' do
4
+
5
+ let(:s) { 'a b c d e f g h i' }
6
+
7
+ example { s.nsub(' ', '', 6).should == 'abcdefg h i' }
8
+
9
+ example { s.nsub(' ', 6) { '' }.should == 'abcdefg h i' }
10
+
11
+ example { s.nsub!(' ', '', 6); s.should == 'abcdefg h i' }
12
+
13
+ end