Sha256: 148d1f40c70185345a7feaa8b2cb95491bbfa851f117d9653fc495923324c5c5

Contents?: true

Size: 817 Bytes

Versions: 1

Compression:

Stored size: 817 Bytes

Contents

module Bundler
  module Dependencies
    class Spec
      SPECS = {} # rubocop:disable Style/MutableConstant

      attr_accessor :name, :dependencies

      def self.new(name, dependencies = [])
        name = name.to_sym
        spec = find(name) || super(name)
        spec.dependencies = Graph.new(specs: dependencies.map { |d| new(d) }) if dependencies.any?
        spec
      end

      def self.find(name)
        SPECS[name.to_sym]
      end

      def initialize(name)
        @name = name
        @dependencies = Graph.new

        SPECS[name] = self
      end

      def flatten
        dependencies.inject([]) do |arr, dependency|
          arr << dependency
          arr.concat(dependency.flatten)
        end.uniq
      end

      def dependency_count
        flatten.count
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bundler-dependencies-0.5.1 lib/bundler/dependencies/spec.rb