class Lapidarius::Gem
Constants
- DEFAULT_VER
- INVALID_VER_CHARS
- VALID_CHARS
Attributes
deps[R]
dev_count[RW]
name[R]
version[R]
Public Class Methods
factory(token)
click to toggle source
# File lib/lapidarius/gem.rb, line 17 def self.factory(token) token.match(/^No gems found matching/) do |m| fail NotInstalledError, token.gsub(/\/|\^|\$/, '') end token.match(/Gem ([#{VALID_CHARS}]+)-(.+)/) do |m| return new(name: m[1], version: m[2]) end token.match(/([#{VALID_CHARS}]+) \((.+)\)/) do |m| return new(name: m[1], version: m[2]) end fail KindError, "no gem can be created from #{token}" end
new(name:, version:, deps: [])
click to toggle source
# File lib/lapidarius/gem.rb, line 33 def initialize(name:, version:, deps: []) @name = name @version = version @deps = deps end
Public Instance Methods
<<(dep)
click to toggle source
# File lib/lapidarius/gem.rb, line 39 def <<(dep) fail KindError, "#{dep.inspect} is not a valid gem" unless gem?(dep) @deps << dep end
==(gem)
click to toggle source
# File lib/lapidarius/gem.rb, line 44 def ==(gem) return false unless gem?(gem) gem.name == name && gem.version == version end
count()
click to toggle source
# File lib/lapidarius/gem.rb, line 53 def count @count ||= flatten_deps!.size end
to_s()
click to toggle source
# File lib/lapidarius/gem.rb, line 49 def to_s "#{name} (#{@version})" end
Protected Instance Methods
flatten_deps!()
click to toggle source
# File lib/lapidarius/gem.rb, line 57 def flatten_deps! deps.reduce(deps) { |acc, dep| acc.concat dep.flatten_deps! }.tap do |deps| deps.flatten! deps.uniq!(&:name) end end
Private Instance Methods
gem?(gem)
click to toggle source
# File lib/lapidarius/gem.rb, line 64 def gem?(gem) %i{name version deps}.all? { |msg| gem.respond_to?(msg) } end