bloom-filter 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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)
@@ -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
 
@@ -1 +1 @@
1
- #define RUBY_BLOOM_FILTER_VERSION "0.1.1"
1
+ #define RUBY_BLOOM_FILTER_VERSION "0.2.0"
@@ -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
- prerelease: false
5
- segments:
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
- date: 2012-01-27 00:00:00 +11:00
18
- default_executable:
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
- prerelease: false
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
- segments:
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
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
37
25
  none: false
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- segments:
42
- - 0
43
- version: "0"
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
- version_requirements: *id002
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
- segments:
84
- - 0
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
- segments:
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.3.7
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
-