bloom-filter 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +7 -0
- data/ext/bloom_filter.c +24 -0
- data/ext/version.h +1 -1
- data/test/test_basic.rb +6 -0
- metadata +51 -62
data/README.md
CHANGED
@@ -21,6 +21,7 @@ BloomFilter is a ruby library that implements an in-memory [Bloom Filter](http:/
|
|
21
21
|
#dump
|
22
22
|
#insert
|
23
23
|
#include?
|
24
|
+
#bits
|
24
25
|
|
25
26
|
```
|
26
27
|
|
@@ -43,6 +44,8 @@ BloomFilter is a ruby library that implements an in-memory [Bloom Filter](http:/
|
|
43
44
|
|
44
45
|
filter.dump "/tmp/random.bloom"
|
45
46
|
filter = BloomFilter.load "/tmp/random.bloom"
|
47
|
+
|
48
|
+
bits = filter.bits #=> "10010100100111..."
|
46
49
|
```
|
47
50
|
|
48
51
|
## See Also
|
@@ -52,3 +55,7 @@ BloomFilter is a ruby library that implements an in-memory [Bloom Filter](http:/
|
|
52
55
|
## License
|
53
56
|
|
54
57
|
[Creative Commons Attribution - CC BY](http://creativecommons.org/licenses/by/3.0)
|
58
|
+
|
59
|
+
## Home Page
|
60
|
+
|
61
|
+
[https://github.com/deepfryed/bloom-filter](https://github.com/deepfryed/bloom-filter)
|
data/ext/bloom_filter.c
CHANGED
@@ -136,6 +136,29 @@ VALUE bloom_dump(VALUE klass, VALUE file) {
|
|
136
136
|
return Qfalse; // not reachable
|
137
137
|
}
|
138
138
|
|
139
|
+
VALUE bloom_bits(VALUE klass) {
|
140
|
+
BloomFilter *filter = bloom_handle(klass);
|
141
|
+
|
142
|
+
int i = 0;
|
143
|
+
int nbits = filter->table_size;
|
144
|
+
char buffer[nbits];
|
145
|
+
|
146
|
+
unsigned char b;
|
147
|
+
int bit;
|
148
|
+
|
149
|
+
for (i = 0; i < nbits; i++) {
|
150
|
+
b = filter->table[i / 8];
|
151
|
+
bit = 1 << (i % 8);
|
152
|
+
|
153
|
+
if ((b & bit) == 0)
|
154
|
+
buffer[i] = '0';
|
155
|
+
else
|
156
|
+
buffer[i] = '1';
|
157
|
+
}
|
158
|
+
|
159
|
+
return rb_str_new(buffer, nbits);
|
160
|
+
}
|
161
|
+
|
139
162
|
VALUE bloom_load(VALUE klass, VALUE file) {
|
140
163
|
int fd;
|
141
164
|
void *buffer;
|
@@ -181,6 +204,7 @@ Init_bloom_filter() {
|
|
181
204
|
|
182
205
|
rb_define_method(cBloom, "initialize", RUBY_METHOD_FUNC(bloom_initialize), -1);
|
183
206
|
rb_define_method(cBloom, "dump", RUBY_METHOD_FUNC(bloom_dump), 1);
|
207
|
+
rb_define_method(cBloom, "bits", RUBY_METHOD_FUNC(bloom_bits), 0);
|
184
208
|
rb_define_method(cBloom, "insert", RUBY_METHOD_FUNC(bloom_insert), 1);
|
185
209
|
rb_define_method(cBloom, "include?", RUBY_METHOD_FUNC(bloom_include), 1);
|
186
210
|
|
data/ext/version.h
CHANGED
@@ -1 +1 @@
|
|
1
|
-
#define RUBY_BLOOM_FILTER_VERSION "0.
|
1
|
+
#define RUBY_BLOOM_FILTER_VERSION "0.2.0"
|
data/test/test_basic.rb
CHANGED
@@ -20,4 +20,10 @@ describe 'BloomFilter primitives' do
|
|
20
20
|
assert filter.include?("foo")
|
21
21
|
assert !filter.include?("bar")
|
22
22
|
end
|
23
|
+
|
24
|
+
it 'should return bits as a string' do
|
25
|
+
assert filter = BloomFilter.new(bits: 5, hashes: 2)
|
26
|
+
assert filter.insert("a")
|
27
|
+
assert_equal "10010", filter.bits
|
28
|
+
end
|
23
29
|
end
|
metadata
CHANGED
@@ -1,102 +1,91 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: bloom-filter
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 1
|
8
|
-
- 1
|
9
|
-
version: 0.1.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Bharanee Rathna
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-04-27 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: rake
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
- 0
|
30
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
31
22
|
type: :development
|
32
|
-
version_requirements: *id001
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: rake-compiler
|
35
23
|
prerelease: false
|
36
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
25
|
none: false
|
38
|
-
requirements:
|
39
|
-
- -
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
|
42
|
-
|
43
|
-
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake-compiler
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
44
38
|
type: :development
|
45
|
-
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
46
|
description: A fast Bloom Filter library for Ruby for unices.
|
47
|
-
email:
|
47
|
+
email:
|
48
48
|
- deepfryed@gmail.com
|
49
49
|
executables: []
|
50
|
-
|
51
|
-
extensions:
|
50
|
+
extensions:
|
52
51
|
- ext/extconf.rb
|
53
52
|
extra_rdoc_files: []
|
54
|
-
|
55
|
-
files:
|
56
|
-
- ext/hash-string.c
|
53
|
+
files:
|
57
54
|
- ext/bloom-filter.c
|
55
|
+
- ext/hash-string.c
|
58
56
|
- ext/bloom_filter.c
|
59
57
|
- ext/bloom-filter.h
|
60
|
-
- ext/version.h
|
61
58
|
- ext/hash-string.h
|
59
|
+
- ext/version.h
|
62
60
|
- ext/extconf.rb
|
63
|
-
- test/test_io.rb
|
64
61
|
- test/helper.rb
|
62
|
+
- test/test_io.rb
|
65
63
|
- test/test_basic.rb
|
66
64
|
- README.md
|
67
65
|
- CHANGELOG
|
68
66
|
- lib/bloom-filter.rb
|
69
|
-
has_rdoc: true
|
70
67
|
homepage: http://github.com/deepfryed/bloom-filter
|
71
68
|
licenses: []
|
72
|
-
|
73
69
|
post_install_message:
|
74
70
|
rdoc_options: []
|
75
|
-
|
76
|
-
require_paths:
|
71
|
+
require_paths:
|
77
72
|
- lib
|
78
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
79
74
|
none: false
|
80
|
-
requirements:
|
81
|
-
- -
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
|
84
|
-
|
85
|
-
version: "0"
|
86
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
80
|
none: false
|
88
|
-
requirements:
|
89
|
-
- -
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
|
92
|
-
- 0
|
93
|
-
version: "0"
|
81
|
+
requirements:
|
82
|
+
- - ! '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
94
85
|
requirements: []
|
95
|
-
|
96
86
|
rubyforge_project:
|
97
|
-
rubygems_version: 1.
|
87
|
+
rubygems_version: 1.8.21
|
98
88
|
signing_key:
|
99
89
|
specification_version: 3
|
100
90
|
summary: A fast Bloom Filter library for Ruby.
|
101
91
|
test_files: []
|
102
|
-
|