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