Class: Lapidarius::Gem
- Inherits:
-
Object
- Object
- Lapidarius::Gem
- Extended by:
- Forwardable
- Defined in:
- lib/lapidarius/gem.rb
Defined Under Namespace
Classes: KindError, NotInstalledError
Constant Summary collapse
- INVALID_VER_CHARS =
%w[> < = ~ !]
- DEFAULT_VER =
">= 0"
Instance Attribute Summary collapse
-
#deps ⇒ Object
readonly
Returns the value of attribute deps.
-
#dev_count ⇒ Object
Returns the value of attribute dev_count.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Class Method Summary collapse
Instance Method Summary collapse
- #<<(dep) ⇒ Object
- #==(gem) ⇒ Object
- #count ⇒ Object
-
#initialize(name:, version:, deps: []) ⇒ Gem
constructor
A new instance of Gem.
- #to_s ⇒ Object
Constructor Details
#initialize(name:, version:, deps: []) ⇒ Gem
Returns a new instance of Gem.
32 33 34 35 36 |
# File 'lib/lapidarius/gem.rb', line 32 def initialize(name:, version:, deps: []) @name = name @version = version @deps = deps end |
Instance Attribute Details
#deps ⇒ Object (readonly)
Returns the value of attribute deps.
29 30 31 |
# File 'lib/lapidarius/gem.rb', line 29 def deps @deps end |
#dev_count ⇒ Object
Returns the value of attribute dev_count.
30 31 32 |
# File 'lib/lapidarius/gem.rb', line 30 def dev_count @dev_count end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
29 30 31 |
# File 'lib/lapidarius/gem.rb', line 29 def name @name end |
#version ⇒ Object (readonly)
Returns the value of attribute version.
29 30 31 |
# File 'lib/lapidarius/gem.rb', line 29 def version @version end |
Class Method Details
.factory(token) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/lapidarius/gem.rb', line 16 def self.factory(token) token.match(/^No gems found matching/) do |m| fail NotInstalledError, token.gsub(/\/|\^|\$/, '') end token.match(/Gem ([a-zA-Z0-9\-_]+)-(.+)/) do |m| return new(name: m[1], version: m[2]) end token.match(/([a-zA-Z0-9\-_]+) \((.+)\)/) do |m| return new(name: m[1], version: m[2]) end fail KindError, "no gem can be created from #{token}" end |
Instance Method Details
#<<(dep) ⇒ Object
38 39 40 41 |
# File 'lib/lapidarius/gem.rb', line 38 def <<(dep) fail KindError, "#{dep.inspect} is not a valid gem" unless gem?(dep) @deps << dep end |
#==(gem) ⇒ Object
43 44 45 46 |
# File 'lib/lapidarius/gem.rb', line 43 def ==(gem) return false unless gem?(gem) gem.name == name && gem.version == version end |
#count ⇒ Object
52 53 54 |
# File 'lib/lapidarius/gem.rb', line 52 def count flatten_deps.size end |
#to_s ⇒ Object
48 49 50 |
# File 'lib/lapidarius/gem.rb', line 48 def to_s "#{name} (#{@version})" end |