rb_lovely 0.6.2 → 0.6.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/rb_lovely/sorted_hash.cpp +7 -0
- data/ext/rb_lovely/sorted_set.cpp +7 -0
- data/yard.rb +37 -18
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81e2fd334254b0f4e4583898aec3b6dd84f81e0a
|
4
|
+
data.tar.gz: 00285bf3cd11e2b69fc919668beda886ee618b5d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81555a532701e85a2e4dd0fd2388d895ee2810e07a273f5e039e45373d4476b8be3b3bbcf1d1a8afda11af4c0829ba7f24d28e71fd55efeda70810ea5e5e6add
|
7
|
+
data.tar.gz: 03117a51cacbb791b7529cd8691c087e0b8c4bb9c47cf95ac1d638731e1f374fc53d979b2992ceb559b75ba74776303c7465c81f02d69f492b8ce55ab639f93f
|
@@ -94,6 +94,12 @@ VALUE hashInitialize(int argc, VALUE *argv, VALUE self) {
|
|
94
94
|
return self;
|
95
95
|
}
|
96
96
|
|
97
|
+
VALUE hashFactory(VALUE clss, VALUE args) {
|
98
|
+
auto obj = rb_obj_alloc(clss);
|
99
|
+
rb_obj_call_init(obj, 1, &args);
|
100
|
+
return obj;
|
101
|
+
}
|
102
|
+
|
97
103
|
VALUE hashClear(VALUE self) {
|
98
104
|
Hash* hash = rubyCast<Hash>(self);
|
99
105
|
hash->container.clear();
|
@@ -246,6 +252,7 @@ extern "C" {
|
|
246
252
|
rb_include_module(rbHash, rb_const_get(rb_cObject, rb_intern("Enumerable")));
|
247
253
|
|
248
254
|
rb_define_method(rbHash, "initialize", RUBY_METHOD_FUNC(hashInitialize), -1);
|
255
|
+
rb_define_singleton_method(rbHash, "[]", RUBY_METHOD_FUNC(hashFactory), -2);
|
249
256
|
rb_define_method(rbHash, "clear", RUBY_METHOD_FUNC(hashClear), 0);
|
250
257
|
rb_define_method(rbHash, "length", RUBY_METHOD_FUNC(hashLength), 0);
|
251
258
|
rb_define_method(rbHash, "[]=", RUBY_METHOD_FUNC(hashUpdate), 2);
|
@@ -35,6 +35,12 @@ VALUE setInitialize(int argc, VALUE *argv, VALUE self) {
|
|
35
35
|
return self;
|
36
36
|
}
|
37
37
|
|
38
|
+
VALUE setFactory(VALUE clss, VALUE args) {
|
39
|
+
auto obj = rb_obj_alloc(clss);
|
40
|
+
rb_obj_call_init(obj, 1, &args);
|
41
|
+
return obj;
|
42
|
+
}
|
43
|
+
|
38
44
|
VALUE setClear(VALUE self) {
|
39
45
|
Set* set = rubyCast<Set>(self);
|
40
46
|
set->clear();
|
@@ -212,6 +218,7 @@ extern "C" {
|
|
212
218
|
rb_include_module(rbSet, rb_const_get(rb_cObject, rb_intern("Enumerable")));
|
213
219
|
|
214
220
|
rb_define_method(rbSet, "initialize", RUBY_METHOD_FUNC(setInitialize), -1);
|
221
|
+
rb_define_singleton_method(rbSet, "[]", RUBY_METHOD_FUNC(setFactory), -2);
|
215
222
|
rb_define_method(rbSet, "clear", RUBY_METHOD_FUNC(setClear), 0);
|
216
223
|
rb_define_method(rbSet, "length", RUBY_METHOD_FUNC(setLength), 0);
|
217
224
|
rb_define_method(rbSet, "add", RUBY_METHOD_FUNC(setAdd), 1);
|
data/yard.rb
CHANGED
@@ -22,7 +22,7 @@ module RbLovely
|
|
22
22
|
#
|
23
23
|
# empty_set = RbLovely::SortedSet.new
|
24
24
|
#
|
25
|
-
# set = RbLovely::SortedSet
|
25
|
+
# set = RbLovely::SortedSet [ Person.new('Nyamuk', 2), Person.new('Cold Rain', 9999) ]
|
26
26
|
# set.add Person.new('Beards', 15)
|
27
27
|
# set << Person.new('Anna', 12)
|
28
28
|
# set.add Person.new('Moust', 18)
|
@@ -37,14 +37,25 @@ module RbLovely
|
|
37
37
|
include Enumerable
|
38
38
|
|
39
39
|
# @param content [Array] An array of values to insert into the set.
|
40
|
+
# @example
|
41
|
+
# set = RbLovely::SortedSet.new [3,1,2]
|
42
|
+
# expect(set.to_a).to eql [1,2,3]
|
40
43
|
def initialize content = [] ; end
|
41
44
|
|
45
|
+
# Factory method for creating sorted set from array.
|
46
|
+
# @param content [Array] An array of values to insert into the created set.
|
47
|
+
# @return [SortedSet] New sorted set instance.
|
48
|
+
# @example
|
49
|
+
# set = RbLovely::SortedSet [3,1,2]
|
50
|
+
# expect(set.to_a).to eql [1,2,3]
|
51
|
+
def self.[](*content) ; end
|
52
|
+
|
42
53
|
# Deletes first member equivalent to value.
|
43
54
|
# @complexity O(log(n)).
|
44
55
|
# @return The value that was removed or nil if no value was removed.
|
45
56
|
# @param value Value to remove (each member is compared to value using the <=> method).
|
46
57
|
# @example
|
47
|
-
# set = RbLovely::SortedSet
|
58
|
+
# set = RbLovely::SortedSet [ 1, 5, 3 ]
|
48
59
|
# set.delete 3
|
49
60
|
# expect(set.to_a).to eql [1, 5]
|
50
61
|
def delete value ; end
|
@@ -53,7 +64,7 @@ module RbLovely
|
|
53
64
|
# @complexity O(c).
|
54
65
|
# @return The first value according to the <=> method defined on each member.
|
55
66
|
# @example
|
56
|
-
# set = RbLovely::SortedSet
|
67
|
+
# set = RbLovely::SortedSet [4, 0, 2]
|
57
68
|
# expect(set.first).to equal 0
|
58
69
|
def first ; end
|
59
70
|
|
@@ -61,7 +72,7 @@ module RbLovely
|
|
61
72
|
# @complexity O(c).
|
62
73
|
# @return The first value according to the <=> method defined on each member or nil if the set is empty.
|
63
74
|
# @example
|
64
|
-
# set = RbLovely::SortedSet
|
75
|
+
# set = RbLovely::SortedSet [4, 0, 2]
|
65
76
|
# expect(set.shift).to equal 0
|
66
77
|
def shift ; end
|
67
78
|
|
@@ -69,7 +80,7 @@ module RbLovely
|
|
69
80
|
# @complexity O(c).
|
70
81
|
# @return The last value according to the <=> method defined on each member.
|
71
82
|
# @example
|
72
|
-
# set = RbLovely::SortedSet
|
83
|
+
# set = RbLovely::SortedSet [4, 0, 2]
|
73
84
|
# expect(set.last).to equal 4
|
74
85
|
def last ; end
|
75
86
|
|
@@ -77,7 +88,7 @@ module RbLovely
|
|
77
88
|
# @complexity O(c).
|
78
89
|
# @return The last value according to the <=> method defined on each member or nil if the set is empty.
|
79
90
|
# @example
|
80
|
-
# set = RbLovely::SortedSet
|
91
|
+
# set = RbLovely::SortedSet [4, 0, 2]
|
81
92
|
# expect(set.pop).to equal 4
|
82
93
|
def pop ; end
|
83
94
|
|
@@ -85,7 +96,7 @@ module RbLovely
|
|
85
96
|
# @complexity O(n)
|
86
97
|
# @param predicate Items are removed from the set for which predicate returns true.
|
87
98
|
# @example
|
88
|
-
# set = RbLovely::SortedSet
|
99
|
+
# set = RbLovely::SortedSet [0, 1, 2, 3]
|
89
100
|
# set.reject!(&:odd?)
|
90
101
|
# expect(set.to_a).to eql([0, 2])
|
91
102
|
def reject!(&predicate) ; end
|
@@ -94,7 +105,7 @@ module RbLovely
|
|
94
105
|
# @complexity O(log n)
|
95
106
|
# @param predicate The first item is removed which predicate returns true for.
|
96
107
|
# @example
|
97
|
-
# set = RbLovely::SortedSet
|
108
|
+
# set = RbLovely::SortedSet [0, 1, 2, 3]
|
98
109
|
# set.reject!(&:odd?)
|
99
110
|
# expect(set.to_a).to eql([0, 2, 3])
|
100
111
|
def reject_first!(&predicate) ; end
|
@@ -103,7 +114,7 @@ module RbLovely
|
|
103
114
|
# @complexity O(n)
|
104
115
|
# @param predicate Items are removed from the set for which predicate does not return true.
|
105
116
|
# @example
|
106
|
-
# set = RbLovely::SortedSet
|
117
|
+
# set = RbLovely::SortedSet [0, 1, 2, 3]
|
107
118
|
# set.select!(&:odd?)
|
108
119
|
# expect(set.to_a).to eql([1, 3])
|
109
120
|
def select!(&predicate) ; end
|
@@ -111,7 +122,7 @@ module RbLovely
|
|
111
122
|
# Calls block once with each value in the set.
|
112
123
|
# @complexity O(n)
|
113
124
|
# @example
|
114
|
-
# set = RbLovely::SortedSet
|
125
|
+
# set = RbLovely::SortedSet [0, 1, 2, 3]
|
115
126
|
# set.each { |x| puts x }
|
116
127
|
def each(&block) ; end
|
117
128
|
end
|
@@ -129,7 +140,7 @@ module RbLovely
|
|
129
140
|
# empty_hash = RbLovely::SortedHash.new
|
130
141
|
#
|
131
142
|
# # constructor is like: hash[20] = 5 ; hash[9] = 1
|
132
|
-
# hash = RbLovely::SortedHash
|
143
|
+
# hash = RbLovely::SortedHash [20, 5, 9, 1]
|
133
144
|
# hash[2] = 16
|
134
145
|
# hash[20] = 4 # updates previous value
|
135
146
|
# expect(hash[20]).to equal 4
|
@@ -141,7 +152,7 @@ module RbLovely
|
|
141
152
|
# @param compare [Proc] Comparison function used to order values (rather than default
|
142
153
|
# of using <=> method).
|
143
154
|
# @example
|
144
|
-
# hash = RbLovely::SortedHash.new
|
155
|
+
# hash = RbLovely::SortedHash.new [:a, 10, :c, 5, :b, 1 ]
|
145
156
|
# expect(hash.to_a).to eql [[:b, 1], [:c, 5], [:a, 10]]
|
146
157
|
#
|
147
158
|
# # compare function reverses default sort order
|
@@ -152,10 +163,18 @@ module RbLovely
|
|
152
163
|
# expect(hash.to_a).to eql [[:b, 10], [:c, 5], [:a, 1 ]]
|
153
164
|
def initialize content = [], compare: nil ; end
|
154
165
|
|
166
|
+
# Factory method for creating sorted hash from array.
|
167
|
+
# @param content [Array] An array of values to insert into the created hash.
|
168
|
+
# @return [SortedHash] New sorted set instance.
|
169
|
+
# @example
|
170
|
+
# hash = RbLovely::SortedHash [:a, 3, :b, 1]
|
171
|
+
# expect(hash.to_a).to eql [[:b, 1], [:a, 3]]
|
172
|
+
def self.[](*content) ; end
|
173
|
+
|
155
174
|
# Delete the value associated with a key.
|
156
175
|
# @return The value associated with the deleted key or nil if the key was not in the hash.
|
157
176
|
# @example
|
158
|
-
# hash = RbLovely::SortedHash
|
177
|
+
# hash = RbLovely::SortedHash [:a, 5 ]
|
159
178
|
# expect(hash.delete(:a)).to equal 5
|
160
179
|
# expect(hash.delete(:b)).to equal nil
|
161
180
|
def delete key ; end
|
@@ -163,14 +182,14 @@ module RbLovely
|
|
163
182
|
# Calls block once for each key, passing the key-value pair as parameters.
|
164
183
|
# @complexity O(n)
|
165
184
|
# @example
|
166
|
-
# hash = RbLovely::SortedHash
|
185
|
+
# hash = RbLovely::SortedHash [:a, 10, :b, 1]
|
167
186
|
# # This would call the block in value order: with (:b, 1) followed by (:a, 10).
|
168
187
|
# hash.each { |key, value| puts "#{key} => #{value}" }
|
169
188
|
def each(&block) ; end
|
170
189
|
|
171
190
|
# Remove all values from the hash.
|
172
191
|
# @example
|
173
|
-
# hash = RbLovely::SortedHash
|
192
|
+
# hash = RbLovely::SortedHash [:a, 10]
|
174
193
|
# hash.clear
|
175
194
|
# expect(hash.length).to equal 0
|
176
195
|
def clear ; end
|
@@ -178,7 +197,7 @@ module RbLovely
|
|
178
197
|
# Retrieve value associated with the corresponding key or nil if the key doesn't exist.
|
179
198
|
# @complexity O(c)
|
180
199
|
# @example
|
181
|
-
# hash = RbLovely::SortedHash
|
200
|
+
# hash = RbLovely::SortedHash [:a, 2]
|
182
201
|
# expect(hash[:a]).to equal 2
|
183
202
|
# expect(hash[:b]).to equal nil
|
184
203
|
def [](key) ; end
|
@@ -186,10 +205,10 @@ module RbLovely
|
|
186
205
|
# Return true if the key is contained in the hash.
|
187
206
|
def include?(key) ; end
|
188
207
|
|
189
|
-
# Retrieve first value
|
208
|
+
# Retrieve first value as determined by value sort order or nil if the hash is empty.
|
190
209
|
def first ; end
|
191
210
|
|
192
|
-
# Retrieve last value
|
211
|
+
# Retrieve last value as determined by value sort order or nil if the hash is empty.
|
193
212
|
def last ; end
|
194
213
|
|
195
214
|
alias :has_key? :include?
|