класс Bundler::Molinillo::Resolver::Resolution::UnwindDetails
Открытые методы экземпляра
# File lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb, line 83
def <=>(other)
if state_index > other.state_index
1
elsif state_index == other.state_index
reversed_requirement_tree_index <=> other.reversed_requirement_tree_index
else
-1
end
end Сравниваем UnwindDetails при выборе состояния для размотки. Если у двух вариантов одинаковый индекс состояния, мы выбираем тот, который наиболее удалён от требования, вызвавшего конфликт. Оба варианта размотались бы до одного и того же состояния, но вариант `grandparent` отфильтрует меньше возможностей после этого — где состояние является как `parent`, так и `grandparent` требованиям, вызвавшим конфликт, это правильное поведение. @param [UnwindDetail] other UnwindDetail для сравнения @return [Integer] целое число, определяющее порядок
# File lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb, line 126 def all_requirements @all_requirements ||= requirement_trees.flatten(1) end
@return [Array] массив всех требований, которые привели к необходимости размотки
this unwind
# File lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb, line 95
def reversed_requirement_tree_index
@reversed_requirement_tree_index ||=
if state_requirement
requirement_tree.reverse.index(state_requirement)
else
999_999
end
end @return [Integer] индекс требования состояния в обратном дереве требований
(the conflicting requirement itself will be at position 0)
# File lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb, line 116
def sub_dependencies_to_avoid
@requirements_to_avoid ||=
requirement_trees.map do |tree|
index = tree.index(state_requirement)
tree[index + 1] if index
end.compact
end @return [Array] массив зависимостей, которые следует избегать при выборе состояния
new possibility for the state we've unwound to. Only relevant for non-primary unwinds
# File lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb, line 109 def unwinding_to_primary_requirement? requirement_tree.last == state_requirement end
@return [Boolean] указывает, является ли требование состояния, к которому происходит размотка, основным требованием
to directly caused the conflict. Note: in this case, it is impossible for the state we're unwinding to to be a parent of any of the other conflicting requirements (or we would have circularity)
Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.