Spec-Zone.ru › Ruby 3.1

класс YAML::DBM

Родитель:
DBM

YAML + DBM = YDBM

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

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

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

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

Публичные методы экземпляров

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

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

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

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

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

Set key в value в базе данных.

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

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

delete(ключ) Показать исходный код
# 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_if { |ключ, значение| ... } Показать исходный код
# 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 { |ключ, значение| } { |ключ, значение| ... } Показать исходный код
# 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 { |значение| ... } Показать исходный код
# File lib/yaml/dbm.rb, line 151
def each_value # :yields: value
    super { |v| yield YAML.load( v ) }
    self
end

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

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

Вызывает метод суперкласса
fetch(ключ, ifnone = nil) Показать исходный код
fetch(ключ) { |ключ| ... }
# 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 для получения дополнительной информации.

Вызывает метод суперкласса
has_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

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

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

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

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

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

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

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

reject { |ключ, значение| ... } Показать исходный код
# 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(хэш) → ydbm Показать исходный код
# File lib/yaml/dbm.rb, line 193
def replace( hsh )
    clear
    update( hsh )
end

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

select { |ключ, значение| ... }
select(*ключи)
# 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 → [ключ, значение] Показать исходный код
# File lib/yaml/dbm.rb, line 205
def shift
    a = super
    a[1] = YAML.load( a[1] ) if a
    a
end

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

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

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

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

Возвращает value

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

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

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

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

update(хэш) → 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_at(*keys) Показать исходный код
# File lib/yaml/dbm.rb, line 92
def values_at( *keys )
    keys.collect { |k| fetch( k ) }
end

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

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

Spec-Zone.ru

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