Class Hobix::DataMarsh
In: lib/hobix/datamarsh.rb
Parent: ::DBM

Methods

[]   []=   delete   delete_if   each   each_pair   each_value   fetch   has_value?   index   invert   reject   replace   select   shift   store   to_a   to_hash   update   values   values_at  

Constants

VERSION = "0.1"

Public Instance methods

[Source]

    # File lib/hobix/datamarsh.rb, line 10
10:     def []( key )
11:         fetch( key )
12:     end

[Source]

    # File lib/hobix/datamarsh.rb, line 13
13:     def []=( key, val )
14:         store( key, val )
15:     end

[Source]

    # 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

[Source]

    # 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
each()

Alias for each_pair

[Source]

    # File lib/hobix/datamarsh.rb, line 51
51:     def each_pair
52:         keys.each { |k| yield k, fetch( k ) }
53:         self
54:     end

[Source]

    # File lib/hobix/datamarsh.rb, line 55
55:     def each_value
56:         super { |v| yield Marshal::load( v ) }
57:         self
58:     end

[Source]

    # 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

[Source]

    # 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

[Source]

    # File lib/hobix/datamarsh.rb, line 28
28:     def index( keystr )
29:         super( keystr.to_yaml )
30:     end

[Source]

    # 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

[Source]

    # 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

[Source]

    # File lib/hobix/datamarsh.rb, line 71
71:     def replace( hsh )
72:         clear
73:         update( hsh )
74:     end

[Source]

    # 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

[Source]

    # 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

[Source]

    # File lib/hobix/datamarsh.rb, line 87
87:     def store( key, val )
88:         super( key, val.to_yaml )
89:         val
90:     end

[Source]

     # 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

[Source]

     # 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

[Source]

    # 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

[Source]

    # File lib/hobix/datamarsh.rb, line 59
59:     def values
60:         super.collect { |v| Marshal::load( v ) }
61:     end

[Source]

    # File lib/hobix/datamarsh.rb, line 31
31:     def values_at( *keys )
32:         keys.collect { |k| fetch( k ) }
33:     end

[Validate]