ninjudd-bdb 0.0.4 → 0.0.5

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.
Files changed (3) hide show
  1. data/bdb.gemspec +1 -1
  2. data/lib/bdb/simple.rb +21 -9
  3. metadata +1 -1
data/bdb.gemspec CHANGED
@@ -2,7 +2,7 @@ BDB_SPEC = Gem::Specification.new do |s|
2
2
  s.platform = Gem::Platform::RUBY
3
3
  s.required_ruby_version = '>=1.8.4'
4
4
  s.name = "bdb"
5
- s.version = "0.0.4"
5
+ s.version = "0.0.5"
6
6
  s.authors = ["Matt Bauer", "Dan Janowski"]
7
7
  s.email = "bauer@pedalbrain.com"
8
8
  s.summary = "A Ruby interface to BerkeleyDB"
data/lib/bdb/simple.rb CHANGED
@@ -30,21 +30,33 @@ class Bdb::Simple
30
30
  db[Marshal.dump(key)] = Marshal.dump(value)
31
31
  end
32
32
 
33
- def [](key)
34
- key = Marshal.dump(key)
35
-
36
- if dup?
33
+ def [](key)
34
+ if key.kind_of?(Range)
37
35
  values = []
38
36
  cursor = db.cursor(nil, 0)
39
- data = cursor.get(key, nil, Bdb::DB_SET)
40
- while data
41
- values << Marshal.load(data[1])
42
- data = cursor.get(nil, nil, Bdb::DB_NEXT_DUP)
37
+ k,v = cursor.get(Marshal.dump(key.first), nil, Bdb::DB_SET_RANGE)
38
+ while k and key.include?(Marshal.load(k))
39
+ values << Marshal.load(v)
40
+ k, v = cursor.get(nil, nil, Bdb::DB_NEXT)
43
41
  end
44
42
  cursor.close
45
43
  values
46
44
  else
47
- Marshal.load(db.get(nil, key, nil, 0))
45
+ key = Marshal.dump(key)
46
+ if dup?
47
+ values = []
48
+ cursor = db.cursor(nil, 0)
49
+ k,v = cursor.get(key, nil, Bdb::DB_SET)
50
+ while data
51
+ values << Marshal.load(v)
52
+ k,v = cursor.get(nil, nil, Bdb::DB_NEXT_DUP)
53
+ end
54
+ cursor.close
55
+ values
56
+ else
57
+ v = db.get(nil, key, nil, 0)
58
+ Marshal.load(v) if v
59
+ end
48
60
  end
49
61
  end
50
62
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ninjudd-bdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Bauer