ninjudd-bdb 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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