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 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
-