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.
- data/bdb.gemspec +1 -1
- data/lib/bdb/simple.rb +21 -9
- 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.
|
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
|
35
|
-
|
36
|
-
if dup?
|
33
|
+
def [](key)
|
34
|
+
if key.kind_of?(Range)
|
37
35
|
values = []
|
38
36
|
cursor = db.cursor(nil, 0)
|
39
|
-
|
40
|
-
while
|
41
|
-
values << Marshal.load(
|
42
|
-
|
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.
|
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
|
|