Class: Bundler::Index
- Inherits:
-
Object
- Object
- Bundler::Index
- Includes:
- Enumerable
- Defined in:
- lib/bundler/index.rb
Class Method Summary collapse
Instance Method Summary collapse
- #<<(spec) ⇒ Object
- #==(o) ⇒ Object
- #each(&blk) ⇒ Object
- #empty? ⇒ Boolean
-
#initialize ⇒ Index
constructor
A new instance of Index.
- #initialize_copy(o) ⇒ Object
- #search(query) ⇒ Object (also: #[])
- #search_for_all_platforms(dependency, base = []) ⇒ Object
- #sources ⇒ Object
- #use(other) ⇒ Object
Constructor Details
#initialize ⇒ Index
Returns a new instance of Index.
14 15 16 17 |
# File 'lib/bundler/index.rb', line 14 def initialize @cache = {} @specs = Hash.new { |h,k| h[k] = [] } end |
Class Method Details
.build {|i| ... } ⇒ Object
5 6 7 8 9 |
# File 'lib/bundler/index.rb', line 5 def self.build i = new yield i i end |
Instance Method Details
#<<(spec) ⇒ Object
64 65 66 67 68 69 70 71 72 73 |
# File 'lib/bundler/index.rb', line 64 def <<(spec) arr = @specs[spec.name] arr.delete_if do |s| same_version?(s.version, spec.version) && s.platform == spec.platform end arr << spec spec end |
#==(o) ⇒ Object
90 91 92 93 94 |
# File 'lib/bundler/index.rb', line 90 def ==(o) all? do |s| s2 = o[s].first and (s.dependencies & s2.dependencies).empty? end end |
#each(&blk) ⇒ Object
75 76 77 78 79 |
# File 'lib/bundler/index.rb', line 75 def each(&blk) @specs.values.each do |specs| specs.each(&blk) end end |
#empty? ⇒ Boolean
29 30 31 32 |
# File 'lib/bundler/index.rb', line 29 def empty? each { return false } true end |
#initialize_copy(o) ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'lib/bundler/index.rb', line 19 def initialize_copy(o) super @cache = {} @specs = Hash.new { |h,k| h[k] = [] } o.specs.each do |name, array| @specs[name] = array.dup end end |
#search(query) ⇒ Object Also known as: []
34 35 36 37 38 39 40 |
# File 'lib/bundler/index.rb', line 34 def search(query) case query when Gem::Specification, RemoteSpecification, LazySpecification then search_by_spec(query) when String then @specs[query] else search_by_dependency(query) end end |
#search_for_all_platforms(dependency, base = []) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/bundler/index.rb', line 42 def search_for_all_platforms(dependency, base = []) specs = @specs[dependency.name] + base wants_prerelease = dependency.requirement.prerelease? only_prerelease = specs.all? {|spec| spec.version.prerelease? } found = specs.select { |spec| dependency.matches_spec?(spec) } unless wants_prerelease || only_prerelease found.reject! { |spec| spec.version.prerelease? } end found.sort_by {|s| [s.version, s.platform.to_s == 'ruby' ? "\0" : s.platform.to_s] } end |
#sources ⇒ Object
56 57 58 59 60 |
# File 'lib/bundler/index.rb', line 56 def sources @specs.values.map do |specs| specs.map{|s| s.source.class } end.flatten.uniq end |
#use(other) ⇒ Object
81 82 83 84 85 86 87 88 |
# File 'lib/bundler/index.rb', line 81 def use(other) return unless other other.each do |s| next if search_by_spec(s).any? @specs[s.name] << s end self end |