| Class | Hobix::DataMarsh |
| In: |
lib/hobix/datamarsh.rb
|
| Parent: | ::DBM |
| VERSION | = | "0.1" |
# File lib/hobix/datamarsh.rb, line 34
34: def delete( key )
35: v = super( key )
36: if String === v
37: v = Marshal::load( v )
38: end
39: v
40: end
# File lib/hobix/datamarsh.rb, line 41
41: def delete_if
42: del_keys = keys.dup
43: del_keys.delete_if { |k| yield( k, fetch( k ) ) == false }
44: del_keys.each { |k| delete( k ) }
45: self
46: end
# File lib/hobix/datamarsh.rb, line 51
51: def each_pair
52: keys.each { |k| yield k, fetch( k ) }
53: self
54: end
# File lib/hobix/datamarsh.rb, line 55
55: def each_value
56: super { |v| yield Marshal::load( v ) }
57: self
58: end
# File lib/hobix/datamarsh.rb, line 16
16: def fetch( keystr, ifnone = nil )
17: begin
18: val = super( keystr )
19: return Marshal::load( val ) if String === val
20: rescue IndexError
21: end
22: if block_given?
23: yield keystr
24: else
25: ifnone
26: end
27: end
# File lib/hobix/datamarsh.rb, line 62
62: def has_value?( val )
63: each_value { |v| return true if v == val }
64: return false
65: end
# File lib/hobix/datamarsh.rb, line 66
66: def invert
67: h = {}
68: keys.each { |k| h[ self.fetch( k ) ] = k }
69: h
70: end
# File lib/hobix/datamarsh.rb, line 47
47: def reject
48: hsh = self.to_hash
49: hsh.reject { |k,v| yield k, v }
50: end
# File lib/hobix/datamarsh.rb, line 80
80: def select( *keys )
81: if block_given?
82: self.keys.collect { |k| v = self[k]; [k, v] if yield k, v }.compact
83: else
84: values_at( *keys )
85: end
86: end
# File lib/hobix/datamarsh.rb, line 75
75: def shift
76: a = super
77: a[1] = Marshal::load( a[1] ) if a
78: a
79: end
# File lib/hobix/datamarsh.rb, line 87
87: def store( key, val )
88: super( key, val.to_yaml )
89: val
90: end
# File lib/hobix/datamarsh.rb, line 97
97: def to_a
98: a = []
99: keys.each { |k| a.push [ k, self.fetch( k ) ] }
100: a
101: end
# File lib/hobix/datamarsh.rb, line 102
102: def to_hash
103: h = {}
104: keys.each { |k| h[ k ] = self.fetch( k ) }
105: h
106: end
# File lib/hobix/datamarsh.rb, line 91
91: def update( hsh )
92: hsh.keys.each do |k|
93: self.store( k, hsh.fetch( k ) )
94: end
95: self
96: end
# File lib/hobix/datamarsh.rb, line 59
59: def values
60: super.collect { |v| Marshal::load( v ) }
61: end