class YAML::DBM
YAML::DBM bietet dieselbe Schnittstelle wie ::DBM.
Während DBM jedoch nur Strings für Schlüssel und Werte zulässt, erlaubt diese Bibliothek die Verwendung der meisten Ruby-Objekte für Werte, indem sie diese zuerst in YAML konvertiert. Schlüssel müssen Strings sein.
Die Konvertierung in und aus YAML erfolgt automatisch.
Weitere Informationen finden Sie in der Dokumentation zu ::DBM und ::YAML.
Öffentliche Instanzmethoden
Source
# File lib/yaml/dbm.rb, line 32 def []( key ) fetch( key ) end
Gibt den mit key aus der Datenbank verknüpften Wert zurück.
Gibt nil zurück, wenn ein solcher key nicht vorhanden ist.
Weitere Informationen finden Sie unter fetch.
Source
# File lib/yaml/dbm.rb, line 44 def []=( key, val ) store( key, val ) end
Source
# File lib/yaml/dbm.rb, line 111 def delete( key ) v = super( key ) if String === v if YAML.respond_to?(:safe_load) v = YAML.safe_load( v ) else v = YAML.load( v ) end end v end
Löscht den Wert aus der Datenbank, der mit key verknüpft ist.
Gibt den Wert oder nil zurück.
Source
# File lib/yaml/dbm.rb, line 130 def delete_if # :yields: [key, value] del_keys = keys.dup del_keys.delete_if { |k| yield( k, fetch( k ) ) == false } del_keys.each { |k| delete( k ) } self end
Ruft den angegebenen Block einmal für jedes key-, value-Paar in der Datenbank auf. Löscht alle Einträge, für die der Block true zurückgibt.
Gibt self zurück.
Source
# File lib/yaml/dbm.rb, line 153 def each_pair # :yields: [key, value] keys.each { |k| yield k, fetch( k ) } self end
Ruft den angegebenen Block einmal für jedes key-, value-Paar in der Datenbank auf.
Gibt self zurück.
each aliased.Source
# File lib/yaml/dbm.rb, line 164 def each_value # :yields: value super { |v| yield YAML.respond_to?(:safe_load) ? YAML.safe_load( v ) : YAML.load( v ) } self end
Ruft den angegebenen Block für jeden Wert in der Datenbank auf.
Gibt self zurück.
Source
# File lib/yaml/dbm.rb, line 59 def fetch( keystr, ifnone = nil ) begin val = super( keystr ) if String === val if YAML.respond_to?(:safe_load) return YAML.safe_load( val ) else return YAML.load( val ) end end rescue IndexError end if block_given? yield keystr else ifnone end end
Gibt den mit key verknüpften Wert zurück.
Wenn kein Wert für key vorhanden ist und kein Block angegeben wurde, wird ifnone zurückgegeben.
Andernfalls wird der Block aufgerufen und der gegebene key übergeben.
Weitere Informationen finden Sie unter ::DBM#fetch.
Source
# File lib/yaml/dbm.rb, line 181 def has_value?( val ) each_value { |v| return true if v == val } return false end
Gibt true zurück, wenn der angegebene value in der Datenbank gefunden wird.
Source
# File lib/yaml/dbm.rb, line 85 def index( keystr ) super( keystr.to_yaml ) end
Veraltet, verwenden Sie stattdessen YAML::DBM#key.
Hinweis: YAML::DBM#index erzeugt eine Warnung aus dem Inneren von ::DBM#index. Sie lautet: „DBM#index ist veraltet; verwenden Sie DBM#key“, aber DBM#key verhält sich nicht gleich wie DBM#index.
Source
# File lib/yaml/dbm.rb, line 194 def invert h = {} keys.each { |k| h[ self.fetch( k ) ] = k } h end
Source
# File lib/yaml/dbm.rb, line 93 def key( keystr ) invert[keystr] end
Gibt den Schlüssel für den angegebenen Wert zurück.
Source
# File lib/yaml/dbm.rb, line 142 def reject hsh = self.to_hash hsh.reject { |k,v| yield k, v } end
Konvertiert den Inhalt der Datenbank in ein In-Memory- Hash, ruft dann Hash#reject mit dem angegebenen Code-Block auf und gibt ein neues Hash zurück.
Source
# File lib/yaml/dbm.rb, line 206 def replace( hsh ) clear update( hsh ) end
Source
# File lib/yaml/dbm.rb, line 234 def select( *keys ) if block_given? self.keys.collect { |k| v = self[k]; [k, v] if yield k, v }.compact else values_at( *keys ) end end
Wenn ein Block angegeben ist, wird ein neues Array zurückgegeben, das [Schlüssel, Wert]-Paare enthält, für die der Block true zurückgibt.
Andernfalls verhält es sich wie values_at.
Source
# File lib/yaml/dbm.rb, line 218 def shift a = super if a a[1] = YAML.respond_to?(:safe_load) ? YAML.safe_load( a[1] ) : YAML.load( a[1] ) end a end
Entfernt ein [Schlüssel, Wert]-Paar aus der Datenbank und gibt es zurück. Wenn die Datenbank leer ist, gibt sie nil zurück.
Die Reihenfolge, in der Werte entfernt/zurückgegeben werden, ist nicht garantiert.
Source
# File lib/yaml/dbm.rb, line 249 def store( key, val ) super( key, val.to_yaml ) val end
Speichert value in der Datenbank mit key als Index. value wird vor dem Speichern in YAML konvertiert.
Gibt value zurück.
Source
# File lib/yaml/dbm.rb, line 274 def to_a a = [] keys.each { |k| a.push [ k, self.fetch( k ) ] } a end
Konvertiert den Inhalt der Datenbank in ein Array von [Schlüssel, Wert]-Arrays und gibt es zurück.
Source
# File lib/yaml/dbm.rb, line 286 def to_hash h = {} keys.each { |k| h[ k ] = self.fetch( k ) } h end
Konvertiert den Inhalt der Datenbank in ein In-Memory- Hash-Objekt und gibt es zurück.
Source
# File lib/yaml/dbm.rb, line 262 def update( hsh ) hsh.each_pair do |k,v| self.store( k, v ) end self end
Source
# File lib/yaml/dbm.rb, line 173 def values super.collect { |v| YAML.respond_to?(:safe_load) ? YAML.safe_load( v ) : YAML.load( v ) } end
Gibt ein Array von Werten aus der Datenbank zurück.
Source
# File lib/yaml/dbm.rb, line 101 def values_at( *keys ) keys.collect { |k| fetch( k ) } end
Gibt ein Array mit den Werten zurück, die mit den angegebenen Schlüsseln verknüpft sind.