Spec-Zone.ru › Ruby 2.7

модуль Bundler::Molinillo::SpecificationProvider

Предоставляет информацию о спецификациях и зависимостях резольверу, позволяя классу {Resolver} оставаться универсальным, сохраняя при этом мощь и гибкость.

Этот модуль содержит методы, которые должны реализовывать пользователи Bundler::Molinillo, используя знания о своих собственных моделях классов.

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

allow_missing?(dependency) Показать исходный код
# File lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb, line 97
def allow_missing?(dependency)
  false
end

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

@param [Объект] dependency @return [Булево] можно ли безопасно пропустить эту зависимость.

dependencies_for(specification) Показать исходный код
# File lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb, line 31
def dependencies_for(specification)
  []
end

Возвращает зависимости `specification`.

@note Этот метод должен быть «чистым», т.е. возвращаемое значение должно зависеть

only on the `specification` parameter.

@param [Объект] specification @return [Массив<Объект>] зависимости, необходимые для данной

`specification`.
name_for(dependency) Показать исходный код
# File lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb, line 54
def name_for(dependency)
  dependency.to_s
end

Возвращает имя для данной `dependency`.

@note Этот метод должен быть «чистым», т.е. возвращаемое значение должно зависеть

only on the `dependency` parameter.

@param [Объект] dependency @return [Строка] имя для данной `dependency`.

name_for_explicit_dependency_source() Показать исходный код
# File lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb, line 60
def name_for_explicit_dependency_source
  'user-specified dependency'
end

@return [Строка] имя источника явных зависимостей, т.е.

those passed to {Resolver#resolve} directly.
name_for_locking_dependency_source() Показать исходный код
# File lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb, line 66
def name_for_locking_dependency_source
  'Lockfile'
end

@return [Строка] имя источника «заблокированных» зависимостей, т.е.

those passed to {Resolver#resolve} directly as the `base`
requirement_satisfied_by?(requirement, activated, spec) Показать исходный код
# File lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb, line 44
def requirement_satisfied_by?(requirement, activated, spec)
  true
end

Определяет, удовлетворяет ли заданное `requirement` заданное `spec` в контексте текущего графа зависимостей `activated`.

@param [Объект] requirement @param [DependencyGraph] activated текущий граф зависимостей в

resolution process.

@param [Объект] spec @return [Булево] удовлетворяет ли `requirement` `spec` в

context of the current `activated` dependency graph.
search_for(dependency) Показать исходный код
# File lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb, line 20
def search_for(dependency)
  []
end

Поиск спецификаций, соответствующих заданной зависимости. Спецификации в возвращаемом массиве будут рассматриваться в обратном порядке, поэтому последняя версия должна быть последней.

@note Этот метод должен быть «чистым», т.е. возвращаемое значение должно зависеть

only on the `dependency` parameter.

@param [Объект] dependency @return [Массив<Объект>] спецификации, удовлетворяющие данной

`dependency`.
sort_dependencies(dependencies, activated, conflicts) Показать исходный код
# File lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb, line 82
def sort_dependencies(dependencies, activated, conflicts)
  dependencies.sort_by do |dependency|
    name = name_for(dependency)
    [
      activated.vertex_named(name).payload ? 0 : 1,
      conflicts[name] ? 0 : 1,
    ]
  end
end

Сортировка зависимостей таким образом, чтобы зависимости, которые легче разрешить, были первыми. Легче разрешить обычно определяется:

1) Is this dependency already activated?
2) How relaxed are the requirements?
3) Are there any conflicts for this dependency?
4) How many possibilities are there to satisfy this dependency?

@param [Массив<Объект>] dependencies @param [DependencyGraph] activated текущий граф зависимостей в

resolution process.

@param [{String => Array<Conflict>}] conflicts @return [Массив<Объект>] отсортированная копия `dependencies`.

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