Class: Composer::Repository::WritableHashRepository

Inherits:
HashRepository show all
Defined in:
lib/composer/repository/writeable_hash_repository.rb

Overview

Writable array repository.

PHP Authors: Jordi Boggiano <[email protected]>

Ruby Authors: Ioannis Kappas <[email protected]>

Direct Known Subclasses

FilesystemRepository

Constant Summary

Constants inherited from BaseRepository

BaseRepository::SEARCH_FULLTEXT, BaseRepository::SEARCH_NAME

Instance Method Summary collapse

Methods inherited from HashRepository

#add_package, #count, #find_package, #find_packages, #package?, #packages, #remove_package, #search

Methods inherited from BaseRepository

#find_package, #find_packages, #package?, #packages, #search

Constructor Details

#initialize(packages = []) ⇒ WritableHashRepository

Returns a new instance of WritableHashRepository.



23
24
25
# File 'lib/composer/repository/writeable_hash_repository.rb', line 23

def initialize(packages = [])
  super
end

Instance Method Details

#canonical_packagesObject



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/composer/repository/writeable_hash_repository.rb', line 35

def canonical_packages
  packages_uncanonicalized = packages

  # get at most one package of each name, preferring non-aliased ones
  packages_by_name = {}
  packages_uncanonicalized.each do |package|
    if !packages_by_name.key?(package.name) ||
      packages_by_name[package.name].instance_of?(Composer::Package::AliasPackage)
      packages_by_name[package.name] = package
    end
  end

  # unfold aliased packages
  results = []
  packages_by_name.each do |name, package|
    while package.instance_of?(Composer::Package::AliasPackage)
      package = package.alias_of
    end
    results.push(package)
  end

  results
end

#reloadObject



31
32
33
# File 'lib/composer/repository/writeable_hash_repository.rb', line 31

def reload
  # implement inside child
end

#writeObject



27
28
29
# File 'lib/composer/repository/writeable_hash_repository.rb', line 27

def write
  # implement inside child
end