rb_lovely 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/yard.rb +197 -0
  4. metadata +3 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a101665aa179ecfdd7edfce739f5f2feee1af73d
4
- data.tar.gz: 819f929306b9aeef392d0325e311badac9e4c019
3
+ metadata.gz: cc6858428c1b20ccab46f7c4b561e3531853ad7a
4
+ data.tar.gz: 2de01f2967e14c0149184a12b7191969b07a0821
5
5
  SHA512:
6
- metadata.gz: 26d39b7cee7223eb6e66cd5e7fecac58e59fcc3e9880e24c3c120e582ca590492d2f38fab8607ee03be02eca2747327841d6238cbda17db94cdd3f2aee0e035f
7
- data.tar.gz: ba9d4986fce10cf32ea1c268cfa5e85301d28baa1d547646d1d9b4fe87167374d496e53ff806c43cd4c837a5d74f39319089872201f3396c6a63d4e9c3ea7636
6
+ metadata.gz: 23cdc3ee67aeab749cb6bc0dadb1864f4b860511d9ed511abcf7854c601f6858c34be1a8cb16b8e0f3e2ee4481dd6740188978fb1a9cf54744508bb8027b98b9
7
+ data.tar.gz: 1e7d603e62caa5c32773bdcda4366a928e3e16ab47fb3392a8173904daabb7a7407093c307db312578962ef51c9bde2da57b6b0fe1fc043e0323c9594096028c
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ yard.rb
data/yard.rb ADDED
@@ -0,0 +1,197 @@
1
+ # This file is used to build the yard documentation only as yard cannot currently
2
+ # generate ruby documentation from C++ files.
3
+ # The source code for this extension can be found in ext/rb_lovely.
4
+
5
+ # Contains sorted container implementations.
6
+ # @author nuisanceofcats
7
+ module RbLovely
8
+
9
+ # Implement a sorted set with no duplicates where values are compared and sorted using the <=> operator on each member.
10
+ # @note
11
+ # A SortedSet should not be modified during iteration.
12
+ #
13
+ # Some methods come from the {http://www.ruby-doc.org/core-2.1.2/Enumerable.html Enumerable} module. If you do not find the method you are looking for in this documentation then please look there.
14
+ #
15
+ # @author nuisanceofcats
16
+ # @example
17
+ # class Person < Struct.new(:name, :age)
18
+ # def <=> other
19
+ # return age - other.age
20
+ # end
21
+ # end
22
+ #
23
+ # empty_set = RbLovely::SortedSet.new
24
+ #
25
+ # set = RbLovely::SortedSet.new [ Person.new('Nyamuk', 2), Person.new('Cold Rain', 9999) ]
26
+ # set.add Person.new('Beards', 15)
27
+ # set << Person.new('Anna', 12)
28
+ # set.add Person.new('Moust', 18)
29
+ # expect(set.first.name).to equal 'Nyamuk'
30
+ # expect(set.last.name).to equal 'Cold Rain'
31
+ # expect(set.length).to equal 5
32
+ #
33
+ # # Gond isn't added because <=> returns 0 for him and Anna
34
+ # set.add Person.new('Gond', 12)
35
+ # expect(set.length).to equal 5
36
+ class SortedSet
37
+ include Enumerable
38
+
39
+ # @param content [Array] An array of values to insert into the set.
40
+ def initialize content = [] ; end
41
+
42
+ # Deletes first member equivalent to value.
43
+ # @complexity O(log(n)).
44
+ # @return The value that was removed or nil if no value was removed.
45
+ # @param value Value to remove (each member is compared to value using the <=> method).
46
+ # @example
47
+ # set = RbLovely::SortedSet.new [ 1, 5, 3 ]
48
+ # set.delete 3
49
+ # expect(set.to_a).to eql [1, 5]
50
+ def delete value ; end
51
+
52
+ # Access the first element in the set.
53
+ # @complexity O(c).
54
+ # @return The first value according to the <=> method defined on each member.
55
+ # @example
56
+ # set = RbLovely::SortedSet.new [4, 0, 2]
57
+ # expect(set.first).to equal 0
58
+ def first ; end
59
+
60
+ # Remove the first element from the set.
61
+ # @complexity O(c).
62
+ # @return The first value according to the <=> method defined on each member or nil if the set is empty.
63
+ # @example
64
+ # set = RbLovely::SortedSet.new [4, 0, 2]
65
+ # expect(set.shift).to equal 0
66
+ def shift ; end
67
+
68
+ # Access the last element in the set.
69
+ # @complexity O(c).
70
+ # @return The last value according to the <=> method defined on each member.
71
+ # @example
72
+ # set = RbLovely::SortedSet.new [4, 0, 2]
73
+ # expect(set.last).to equal 4
74
+ def last ; end
75
+
76
+ # Remove the last element from the set.
77
+ # @complexity O(c).
78
+ # @return The last value according to the <=> method defined on each member or nil if the set is empty.
79
+ # @example
80
+ # set = RbLovely::SortedSet.new [4, 0, 2]
81
+ # expect(set.pop).to equal 4
82
+ def pop ; end
83
+
84
+ # Remove elements from the set match a given predicate.
85
+ # @complexity O(n)
86
+ # @param predicate Items are removed from the set for which predicate returns true.
87
+ # @example
88
+ # set = RbLovely::SortedSet.new [0, 1, 2, 3]
89
+ # set.reject!(&:odd?)
90
+ # expect(set.to_a).to eql([0, 2])
91
+ def reject!(&predicate) ; end
92
+
93
+ # Remove the first element from the set that matches the given predicate.
94
+ # @complexity O(log n)
95
+ # @param predicate The first item is removed which predicate returns true for.
96
+ # @example
97
+ # set = RbLovely::SortedSet.new [0, 1, 2, 3]
98
+ # set.reject!(&:odd?)
99
+ # expect(set.to_a).to eql([0, 2, 3])
100
+ def reject_first!(&predicate) ; end
101
+
102
+ # Remove elements from the set that do not match a given predicate.
103
+ # @complexity O(n)
104
+ # @param predicate Items are removed from the set for which predicate does not return true.
105
+ # @example
106
+ # set = RbLovely::SortedSet.new [0, 1, 2, 3]
107
+ # set.select!(&:odd?)
108
+ # expect(set.to_a).to eql([1, 3])
109
+ def select!(&predicate) ; end
110
+
111
+ # Calls block once with each value in the set.
112
+ # @complexity O(n)
113
+ # @example
114
+ # set = RbLovely::SortedSet.new [0, 1, 2, 3]
115
+ # set.each { |x| puts x }
116
+ def each(&block) ; end
117
+ end
118
+
119
+
120
+ # A SortedHash provides hashed unique keys and ordered non-unique values. Values are sorted using "<=>" and keys are tested for equality using "eql?".
121
+ # @note
122
+ # A SortedHash should not be modified during iteration.
123
+ #
124
+ # This class is only provided if boost is available on the system when the gem is installed as it is built using the {http://www.boost.org/doc/libs/1_56_0/libs/multi_index/doc/index.html Boost Multi-index Containers Library}.
125
+ #
126
+ # Some methods come from the {http://www.ruby-doc.org/core-2.1.2/Enumerable.html Enumerable} module. If you do not find the method you are looking for in this documentation then please look there.
127
+ # @author nuisanceofcats
128
+ # @example
129
+ # empty_hash = RbLovely::SortedHash.new
130
+ #
131
+ # # constructor is like: hash[20] = 5 ; hash[9] = 1
132
+ # hash = RbLovely::SortedHash.new [20, 5, 9, 1]
133
+ # hash[2] = 16
134
+ # hash[20] = 4 # updates previous value
135
+ # expect(hash[20]).to equal 4
136
+ # expect(hash.length).to equal 3
137
+ class SortedHash
138
+ include Enumerable
139
+
140
+ # @param content [Array] An array containing key, value, key, value ...
141
+ # @param compare [Proc] Comparison function used to order values (rather than default
142
+ # of using <=> method).
143
+ # @example
144
+ # hash = RbLovely::SortedHash.new([:a, 10, :c, 5, :b, 1 ])
145
+ # expect(hash.to_a).to eql [[:b, 1], [:c, 5], [:a, 10]]
146
+ #
147
+ # # compare function reverses default sort order
148
+ # hash = RbLovely::SortedHash.new(compare: proc { |a, b| b <=> a })
149
+ # hash[:a] = 1
150
+ # hash[:c] = 5
151
+ # hash[:b] = 10
152
+ # expect(hash.to_a).to eql [[:b, 10], [:c, 5], [:a, 1 ]]
153
+ def initialize content = [], compare: nil ; end
154
+
155
+ # Delete the value associated with a key.
156
+ # @return The value associated with the deleted key or nil if the key was not in the hash.
157
+ # @example
158
+ # hash = RbLovely::SortedHash.new([:a, 5 ])
159
+ # expect(hash.delete(:a)).to equal 5
160
+ # expect(hash.delete(:b)).to equal nil
161
+ def delete key ; end
162
+
163
+ # Calls block once for each key, passing the key-value pair as parameters.
164
+ # @complexity O(n)
165
+ # @example
166
+ # hash = RbLovely::SortedHash.new [:a, 10, :b, 1]
167
+ # # This would call the block in value order: with (:b, 1) followed by (:a, 10).
168
+ # hash.each { |key, value| puts "#{key} => #{value}" }
169
+ def each(&block) ; end
170
+
171
+ # Remove all values from the hash.
172
+ # @example
173
+ # hash = RbLovely::SortedHash.new [:a, 10]
174
+ # hash.clear
175
+ # expect(hash.length).to equal 0
176
+ def clear ; end
177
+
178
+ # Retrieve value associated with the corresponding key or nil if the key doesn't exist.
179
+ # @complexity O(c)
180
+ # @example
181
+ # hash = RbLovely::SortedHash.new [:a, 2]
182
+ # expect(hash[:a]).to equal 2
183
+ # expect(hash[:b]).to equal nil
184
+ def [](key) ; end
185
+
186
+ # Return true if the key is contained in the hash.
187
+ def include?(key) ; end
188
+
189
+ # Retrieve first value sorted by <=> or comparison function or nil if the hash is empty.
190
+ def first ; end
191
+
192
+ # Retrieve last value sorted by <=> or comparison function or nil if the hash is empty.
193
+ def last ; end
194
+
195
+ alias :has_key? :include?
196
+ end
197
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rb_lovely
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Pike
@@ -19,12 +19,14 @@ extensions:
19
19
  - ext/rb_lovely/extconf.rb
20
20
  extra_rdoc_files: []
21
21
  files:
22
+ - ".yardopts"
22
23
  - ext/rb_lovely/container.hpp
23
24
  - ext/rb_lovely/extconf.rb
24
25
  - ext/rb_lovely/package.cpp
25
26
  - ext/rb_lovely/ruby_util.hpp
26
27
  - ext/rb_lovely/sorted_hash.cpp
27
28
  - ext/rb_lovely/sorted_set.cpp
29
+ - yard.rb
28
30
  homepage: https://github.com/nuisanceofcats/rb_lovely
29
31
  licenses:
30
32
  - Expat