gdbmarshal 0.1
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.
- checksums.yaml +7 -0
- data/README.rdoc +9 -0
- data/Rakefile +11 -0
- data/lib/gdbmarshal.rb +110 -0
- metadata +60 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1f45e7e60faefe23edec4916cbe36a15aa96d667
|
4
|
+
data.tar.gz: 51c1c2c0d42449654194f0583f7a7b287e92a73e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b04be5ec6950fe312fc2fc7eb1b35988b6a0b29058677c66a56813d1b134ddc64ce7303f4a0d2c90f3e375bcb1f1d9e91acabddc0ebf7a5bc4985f5d55437759
|
7
|
+
data.tar.gz: 317a0f607ea22627368f86a28943c0aa61d55ce9a610f37e17ff7c0e351d972316f29ac23cc23e24d20858b9676137c7b48bf48bc44ffd364fc4da8658fe3140
|
data/README.rdoc
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'rake'
|
2
|
+
|
3
|
+
require 'spec/rake/spectask'
|
4
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
5
|
+
spec.ruby_opts << '-rubygems'
|
6
|
+
spec.libs << 'lib' << 'spec'
|
7
|
+
spec.spec_files = FileList['spec/**/*_spec.rb']
|
8
|
+
spec.spec_opts = ['--options', 'spec/spec.opts']
|
9
|
+
end
|
10
|
+
|
11
|
+
task :default => [:spec]
|
data/lib/gdbmarshal.rb
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
require 'gdbm'
|
2
|
+
|
3
|
+
class GDBMarshal < GDBM
|
4
|
+
def [](key)
|
5
|
+
unmarshal(super(key))
|
6
|
+
end
|
7
|
+
|
8
|
+
def []=(key, val)
|
9
|
+
super(key, marshal(val))
|
10
|
+
end
|
11
|
+
|
12
|
+
# def first
|
13
|
+
# unmarshal(super)
|
14
|
+
# end
|
15
|
+
|
16
|
+
def each
|
17
|
+
super do |vals|
|
18
|
+
yield [vals[0], unmarshal(vals[1])]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def each_value
|
23
|
+
super do |val|
|
24
|
+
yield unmarshal(val)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def fetch(*args)
|
29
|
+
unmarshal(super(*args))
|
30
|
+
end
|
31
|
+
|
32
|
+
def has_value?(v)
|
33
|
+
super(marshal(v))
|
34
|
+
end
|
35
|
+
|
36
|
+
def invert
|
37
|
+
raise "Not implemented"
|
38
|
+
end
|
39
|
+
|
40
|
+
def key(value)
|
41
|
+
super(marshal(value))
|
42
|
+
end
|
43
|
+
|
44
|
+
def reject(&block)
|
45
|
+
Hash[super(&block).map {|k, v| [k, unmarshal(v)]}]
|
46
|
+
end
|
47
|
+
|
48
|
+
def delete_if
|
49
|
+
super do |key, value|
|
50
|
+
yield(key, unmarshal(value))
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def replace(other)
|
55
|
+
self.clear
|
56
|
+
other.each_pair do |key, value|
|
57
|
+
self[key] = value
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def select
|
62
|
+
super do |key, value|
|
63
|
+
yield key, unmarshal(value)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def shift
|
68
|
+
key, value = super
|
69
|
+
[key, unmarshal(value)]
|
70
|
+
end
|
71
|
+
|
72
|
+
def store(key, value)
|
73
|
+
super(key, marshal(value))
|
74
|
+
end
|
75
|
+
|
76
|
+
def to_a
|
77
|
+
super.map {|key, value| [key, unmarshal(value)]}
|
78
|
+
end
|
79
|
+
|
80
|
+
def to_hash
|
81
|
+
Hash[self.to_a]
|
82
|
+
end
|
83
|
+
|
84
|
+
def update(other)
|
85
|
+
other.each_pair do |key, value|
|
86
|
+
self[key] = value
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def has_value?(v)
|
91
|
+
super(marshal(value))
|
92
|
+
end
|
93
|
+
|
94
|
+
def values
|
95
|
+
super.map {|v| unmarshal(v)}
|
96
|
+
end
|
97
|
+
|
98
|
+
def values_at(*keys)
|
99
|
+
super(*keys).map {|v| unmarshal(v)}
|
100
|
+
end
|
101
|
+
|
102
|
+
private
|
103
|
+
def marshal(val)
|
104
|
+
Marshal.dump(val)
|
105
|
+
end
|
106
|
+
|
107
|
+
def unmarshal(val)
|
108
|
+
val.nil? ? nil : Marshal.load(val)
|
109
|
+
end
|
110
|
+
end
|
metadata
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gdbmarshal
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Eric Mason
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-03-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description:
|
28
|
+
email: eric@ericmason.net
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- lib/gdbmarshal.rb
|
34
|
+
- Rakefile
|
35
|
+
- README.rdoc
|
36
|
+
homepage: https://github.com/ericmason/gdbmarshal
|
37
|
+
licenses: []
|
38
|
+
metadata: {}
|
39
|
+
post_install_message:
|
40
|
+
rdoc_options: []
|
41
|
+
require_paths:
|
42
|
+
- lib
|
43
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - '>='
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0'
|
53
|
+
requirements:
|
54
|
+
- none
|
55
|
+
rubyforge_project:
|
56
|
+
rubygems_version: 2.0.0
|
57
|
+
signing_key:
|
58
|
+
specification_version: 4
|
59
|
+
summary: GDBM subclass that takes objects as values
|
60
|
+
test_files: []
|