модуль Bundler::Molinillo::SpecificationProvider
Предоставляет информацию о спецификациях и зависимостях резольверу, позволяя классу {Resolver} оставаться универсальным, сохраняя при этом мощь и гибкость.
Этот модуль содержит методы, которые должны реализовывать пользователи Bundler::Molinillo, используя знания о своих собственных моделях классов.
Публичные методы экземпляров
# File lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb, line 97 def allow_missing?(dependency) false end
Возвращает значение, указывающее, можно ли безопасно игнорировать эту зависимость, для которой нет подходящих спецификаций.
@param [Объект] dependency @return [Булево] можно ли безопасно пропустить эту зависимость.
# 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`.
# 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`.
# 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. # 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` # 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.
# 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`.
# 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.