Spec-Zone.ru › Ruby 2.3

класс YAML::DBM

Родитель:
DBM

YAML + DBM = YDBM

YAML::DBM предоставляет тот же интерфейс, что и ::DBM.

Однако, в то время как DBM позволяет использовать только строки как для ключей, так и для значений, эта библиотека позволяет использовать большинство объектов Ruby в качестве значений, предварительно преобразуя их в YAML. Ключи должны быть строками.

Преобразование в YAML и из YAML выполняется автоматически.

См. документацию для ::DBM и ::YAML для получения дополнительной информации.

Общедоступные методы экземпляров

ydbm[key] → value Показать исходный код
# File lib/yaml/dbm.rb, line 29
def []( key )
    fetch( key )
end

Возвращает значение, связанное с key в базе данных.

Возвращает nil, если такого key нет.

См. fetch для получения дополнительной информации.

ydbm[key] = value Показать исходный код
# File lib/yaml/dbm.rb, line 41
def []=( key, val )
    store( key, val )
end

Установить key в value в базе данных.

value будет преобразовано в YAML перед сохранением.

См. store для получения дополнительной информации.

delete(key) Показать исходный код
# File lib/yaml/dbm.rb, line 102
def delete( key )
    v = super( key )
    if String === v
        v = YAML.load( v )
    end
    v
end

Удаляет значение из базы данных, связанное с key.

Возвращает значение или nil.

Вызывает метод суперкласса #delete
delete_if { |key, value| ... } Показать исходный код
# File lib/yaml/dbm.rb, line 117
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

Вызывает заданный блок один раз для каждой key, value пары в базе данных. Удаляет все записи, для которых блок возвращает true.

Возвращает self.

each()
Псевдоним для: each_pair
each_pair { |key, value| ... } Показать исходный код
# File lib/yaml/dbm.rb, line 140
def each_pair # :yields: [key, value]
    keys.each { |k| yield k, fetch( k ) }
    self
end

Вызывает заданный блок один раз для каждой key, value пары в базе данных.

Возвращает self.

Также псевдоним: each
each_value { |value| ... } Показать исходный код
# File lib/yaml/dbm.rb, line 151
def each_value # :yields: value
    super { |v| yield YAML.load( v ) }
    self
end

Вызывает заданный блок для каждого значения в базе данных.

Возвращает self.

Вызывает метод суперкласса #each_value
fetch( key, ifnone = nil ) Показать исходный код
fetch( key ) { |key| ... }
# File lib/yaml/dbm.rb, line 56
def fetch( keystr, ifnone = nil )
    begin
        val = super( keystr )
        return YAML.load( val ) if String === val
    rescue IndexError
    end
    if block_given?
        yield keystr
    else
        ifnone
    end
end

Возвращает значение, связанное с key.

Если для key нет значения и блок не задан, возвращает ifnone.

В противном случае вызывает блок, передавая заданный key.

См. DBM#fetch для получения дополнительной информации.

Вызывает метод суперкласса #fetch
has_value?(value) Показать исходный код
# File lib/yaml/dbm.rb, line 168
def has_value?( val )
    each_value { |v| return true if v == val }
    return false
end

Возвращает true, если указанное value найдено в базе данных.

index( keystr ) Показать исходный код
# File lib/yaml/dbm.rb, line 76
def index( keystr )
    super( keystr.to_yaml )
end

Устаревшее, используйте #key вместо этого.

Примечание: #index выводит предупреждение из внутренности ::DBM#index. Он говорит, что 'DBM#index устарел; используйте #key', но #key ведет себя не так, как #index.

Вызывает метод суперкласса
invert → hash Показать исходный код
# File lib/yaml/dbm.rb, line 181
def invert
    h = {}
    keys.each { |k| h[ self.fetch( k ) ] = k }
    h
end

Возвращает Hash (а не базу данных DBM), созданную с использованием каждого значения в базе данных в качестве ключа, а соответствующий ключ — в качестве его значения.

Обратите внимание, что все значения в хэше будут строками, но ключи — фактическими объектами.

key(value) → string Показать исходный код
# File lib/yaml/dbm.rb, line 84
def key( keystr )
    invert[keystr]
end

Возвращает ключ для указанного значения.

reject { |key, value| ... } Показать исходный код
# File lib/yaml/dbm.rb, line 129
def reject
    hsh = self.to_hash
    hsh.reject { |k,v| yield k, v }
end

Преобразует содержимое базы данных в хэш Hash в памяти, затем вызывает Hash#reject с указанным кодовым блоком, возвращая новый Hash.

replace(hash) → ydbm Показать исходный код
# File lib/yaml/dbm.rb, line 193
def replace( hsh )
    clear
    update( hsh )
end

Заменяет содержимое базы данных содержимым указанного объекта. Принимает любой объект, который реализует метод #each_pair, включая объекты Hash и DBM.

select { |key, value| ... }
select(*keys)
# File lib/yaml/dbm.rb, line 219
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

Если блок предоставлен, возвращает новый массив, содержащий пары [ключ, значение], для которых блок возвращает true.

В противном случае, то же, что и values_at

shift → [key, value] Показать исходный код
# File lib/yaml/dbm.rb, line 205
def shift
    a = super
    a[1] = YAML.load( a[1] ) if a
    a
end

Удаляет пару [ключ, значение] из базы данных и возвращает её. Если база данных пуста, возвращает nil.

Порядок, в котором значения удаляются/возвращаются, не гарантируется.

Вызывает метод суперкласса #shift
store(key, value) → value Показать исходный код
# File lib/yaml/dbm.rb, line 234
def store( key, val )
    super( key, val.to_yaml )
    val
end

Сохраняет value в базе данных с key в качестве индекса. value преобразуется в YAML перед сохранением.

Возвращает value

Вызывает метод суперкласса #store
to_a → array Показать исходный код
# File lib/yaml/dbm.rb, line 259
def to_a
    a = []
    keys.each { |k| a.push [ k, self.fetch( k ) ] }
    a
end

Преобразует содержимое базы данных в массив массивов [ключ, значение] и возвращает его.

to_hash → hash Показать исходный код
# File lib/yaml/dbm.rb, line 271
def to_hash
    h = {}
    keys.each { |k| h[ k ] = self.fetch( k ) }
    h
end

Преобразует содержимое базы данных в объект хэша Hash в памяти и возвращает его.

update(hash) → ydbm Показать исходный код
# File lib/yaml/dbm.rb, line 247
def update( hsh )
    hsh.each_pair do |k,v|
        self.store( k, v )
    end
    self
end

Обновляет базу данных несколькими значениями из указанного объекта. Принимает любой объект, который реализует метод #each_pair, включая объекты Hash и DBM.

Возвращает self.

values Показать исходный код
# File lib/yaml/dbm.rb, line 160
def values
    super.collect { |v| YAML.load( v ) }
end

Возвращает массив значений из базы данных.

Вызывает метод суперкласса #values
values_at(*keys) Показать исходный код
# File lib/yaml/dbm.rb, line 92
def values_at( *keys )
    keys.collect { |k| fetch( k ) }
end

Возвращает массив, содержащий значения, связанные с заданными ключами.

Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API