Class: Bundler::Dependencies::Graph

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/bundler/dependencies/graph.rb

Instance Method Summary collapse

Constructor Details

#initialize(lockfile: nil, specs: []) ⇒ Graph

Returns a new instance of Graph.



8
9
10
11
12
13
14
15
16
# File 'lib/bundler/dependencies/graph.rb', line 8

def initialize(lockfile: nil, specs: [])
  @lockfile = lockfile

  if lockfile
    load_lockfile
  else
    @specs = specs.compact
  end
end

Instance Method Details

#counts(min: 0) ⇒ Object



35
36
37
38
39
40
41
42
# File 'lib/bundler/dependencies/graph.rb', line 35

def counts(min: 0)
  @counts ||= filter_map do |gem|
    count = gem.dependency_count
    next if count < min

    [gem.name, gem.dependency_count]
  end.sort_by(&:last).reverse.to_h
end

#delete(*specs) ⇒ Object



44
45
46
47
48
49
# File 'lib/bundler/dependencies/graph.rb', line 44

def delete(*specs)
  specs.each do |gem|
    spec = Spec.new(gem) unless gem.is_a?(Spec)
    gems.delete(spec)
  end
end

#each(&block) ⇒ Object



27
28
29
# File 'lib/bundler/dependencies/graph.rb', line 27

def each(&block)
  gems.each(&block)
end

#empty?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/bundler/dependencies/graph.rb', line 23

def empty?
  gems.empty?
end

#find(gem) ⇒ Object



31
32
33
# File 'lib/bundler/dependencies/graph.rb', line 31

def find(gem)
  include_dependency?(gem) ? Spec.find(gem) : nil
end

#include?(gem) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
54
# File 'lib/bundler/dependencies/graph.rb', line 51

def include?(gem)
  gem = Spec.new(gem) unless gem.is_a?(Spec)
  gems.include?(gem)
end

#include_dependency?(gem) ⇒ Boolean

Returns:

  • (Boolean)


56
57
58
59
# File 'lib/bundler/dependencies/graph.rb', line 56

def include_dependency?(gem)
  gem = Spec.new(gem) unless gem.is_a?(Spec)
  include?(gem) || any? { |spec| spec.include_dependency?(gem) }
end

#initialize_copy(source) ⇒ Object



18
19
20
21
# File 'lib/bundler/dependencies/graph.rb', line 18

def initialize_copy(source)
  super
  @gems = source.send(:gems).dup
end

#walk(&block) ⇒ Object



67
68
69
70
# File 'lib/bundler/dependencies/graph.rb', line 67

def walk(&block)
  Visitor.walk(self, &block)
  self
end

#without(*gems) ⇒ Object



61
62
63
64
65
# File 'lib/bundler/dependencies/graph.rb', line 61

def without(*gems)
  graph = dup
  graph.delete(*gems)
  graph.walk { |gem| gem.dependencies.delete(*gems) }
end