Class: Lapidarius::Gem
- Inherits:
-
Object
- Object
- Lapidarius::Gem
- Defined in:
- lib/lapidarius/gem.rb
Defined Under Namespace
Classes: KindError
Constant Summary collapse
- LEVEL_DEPTH =
5
Instance Attribute Summary collapse
-
#deps ⇒ Object
readonly
Returns the value of attribute deps.
-
#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
- #deep_count ⇒ Object
- #fullname ⇒ Object
-
#initialize(name:, version:, deps: []) ⇒ Gem
constructor
A new instance of Gem.
- #to_s(recursive: false) ⇒ Object
Constructor Details
#initialize(name:, version:, deps: []) ⇒ Gem
Returns a new instance of Gem.
18 19 20 21 22 |
# File 'lib/lapidarius/gem.rb', line 18 def initialize(name:, version:, deps: []) @name = name @version = version @deps = deps end |
Instance Attribute Details
#deps ⇒ Object (readonly)
Returns the value of attribute deps.
16 17 18 |
# File 'lib/lapidarius/gem.rb', line 16 def deps @deps end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
16 17 18 |
# File 'lib/lapidarius/gem.rb', line 16 def name @name end |
#version ⇒ Object (readonly)
Returns the value of attribute version.
16 17 18 |
# File 'lib/lapidarius/gem.rb', line 16 def version @version end |
Class Method Details
.factory(name) ⇒ Object
7 8 9 10 11 12 13 14 |
# File 'lib/lapidarius/gem.rb', line 7 def self.factory(name) name.match(/Gem ([a-z0-9\-_]+)-(\d{1,2}\.\d{1,3}\.\d{1,2})/) do |m| return new(name: m[1], version: m[2]) end name.match(/([a-z0-9\-_]+) \(([0-9~<>=, \.]+)\)/) do |m| return new(name: m[1], version: m[2]) end end |
Instance Method Details
#<<(dep) ⇒ Object
24 25 26 27 |
# File 'lib/lapidarius/gem.rb', line 24 def <<(dep) fail KindError, "#{dep.inspect} is not a valid gem" unless gem?(dep) @deps << dep end |
#==(gem) ⇒ Object
29 30 31 32 |
# File 'lib/lapidarius/gem.rb', line 29 def ==(gem) return false unless gem?(gem) gem.name == name && gem.version == version end |
#deep_count ⇒ Object
49 50 51 |
# File 'lib/lapidarius/gem.rb', line 49 def deep_count flatten_deps.size end |
#fullname ⇒ Object
45 46 47 |
# File 'lib/lapidarius/gem.rb', line 45 def fullname "#{name} (#{version})" end |
#to_s(recursive: false) ⇒ Object
34 35 36 37 38 39 40 41 42 43 |
# File 'lib/lapidarius/gem.rb', line 34 def to_s(recursive: false) return fullname unless recursive fullname.tap do |s| deps.each do |dep| s << "\n" s << indentation s << dep.to_s(recursive: recursive) end end end |