Spec-Zone.ru › Ruby 3.4

класс YAML::DBM

YAML + DBM = YDBM

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

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

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

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

Методы открытого экземпляра

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

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

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

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

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

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

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

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

delete(ключ)
Исходный код
# 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

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

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

Вызывает метод суперкласса
delete_if { |ключ, значение| ... }
Исходный код
# 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

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

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

each
Псевдоним для: each_pair
each_pair { |ключ, значение| ... }
Исходный код
# File lib/yaml/dbm.rb, line 153
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 164
def each_value # :yields: value
    super { |v| yield YAML.respond_to?(:safe_load) ? YAML.safe_load( v ) : YAML.load( v ) }
    self
end

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

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

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

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

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

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

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

Вызывает метод суперкласса
has_value?(значение)
Исходный код
# File lib/yaml/dbm.rb, line 181
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 85
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 194
def invert
    h = {}
    keys.each { |k| h[ self.fetch( k ) ] = k }
    h
end

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

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

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

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

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

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

select { |ключ, значение| ... }
select(*ключи)
Исходный код
# 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

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

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

shift → [ключ, значение]
Исходный код
# 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

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

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

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

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

Возвращает value

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

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

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

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

update(хэш) → ydbm
Исходный код
# File lib/yaml/dbm.rb, line 262
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 173
def values
    super.collect { |v| YAML.respond_to?(:safe_load) ? YAML.safe_load( v ) : YAML.load( v ) }
end

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

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

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

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

Spec-Zone.ru

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