Class: RBS::Repository::GemRBS
- Inherits:
-
Object
- Object
- RBS::Repository::GemRBS
- Defined in:
- lib/rbs/repository.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#paths ⇒ Object
readonly
Returns the value of attribute paths.
Instance Method Summary collapse
- #empty? ⇒ Boolean
- #find_best_version(version) ⇒ Object
-
#initialize(name:) ⇒ GemRBS
constructor
A new instance of GemRBS.
- #latest_version ⇒ Object
- #load! ⇒ Object
- #oldest_version ⇒ Object
- #version_names ⇒ Object
- #versions ⇒ Object
Constructor Details
#initialize(name:) ⇒ GemRBS
Returns a new instance of GemRBS.
9 10 11 12 13 |
# File 'lib/rbs/repository.rb', line 9 def initialize(name:) @name = name @paths = [] @versions = nil end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
6 7 8 |
# File 'lib/rbs/repository.rb', line 6 def name @name end |
#paths ⇒ Object (readonly)
Returns the value of attribute paths.
7 8 9 |
# File 'lib/rbs/repository.rb', line 7 def paths @paths end |
Instance Method Details
#empty? ⇒ Boolean
67 68 69 |
# File 'lib/rbs/repository.rb', line 67 def empty? versions.empty? end |
#find_best_version(version) ⇒ Object
57 58 59 60 61 62 63 64 65 |
# File 'lib/rbs/repository.rb', line 57 def find_best_version(version) return latest_version unless version if v = version_names.reverse.bsearch {|v| v <= version ? true : false } versions[v] else oldest_version end end |
#latest_version ⇒ Object
52 53 54 55 |
# File 'lib/rbs/repository.rb', line 52 def latest_version latest = version_names.last or raise versions[latest] or raise end |
#load! ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/rbs/repository.rb', line 20 def load! @versions = {} versions = @versions or raise paths.each do |gem_path| gem_path.each_child(false) do |child| next unless Gem::Version.correct?(child.to_s) if version = Gem::Version.create(child.to_s) unless version.prerelease? path = gem_path + child if prev = versions[version] RBS.logger.info { "Overwriting gem RBS in repository: gem=#{name}, prev_path=#{prev.path}, new_path=#{path}" } end versions[version] = VersionPath.new(gem: self, version: version, path: path) end end end end end |
#oldest_version ⇒ Object
47 48 49 50 |
# File 'lib/rbs/repository.rb', line 47 def oldest_version oldest = version_names.first or raise versions[oldest] or raise end |
#version_names ⇒ Object
43 44 45 |
# File 'lib/rbs/repository.rb', line 43 def version_names versions.keys.sort_by(&:version) end |
#versions ⇒ Object
15 16 17 18 |
# File 'lib/rbs/repository.rb', line 15 def versions load! unless @versions @versions or raise end |