Class: Teapot::Package
- Inherits:
-
Object
- Object
- Teapot::Package
- Defined in:
- lib/teapot/package.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#options ⇒ Object
Returns the value of attribute options.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
-
#uri ⇒ Object
readonly
Returns the value of attribute uri.
Instance Method Summary collapse
- #eql?(other) ⇒ Boolean
- #external? ⇒ Boolean
- #external_url(root_path = nil) ⇒ Object
- #freeze ⇒ Object
-
#hash ⇒ Object
Package may be used as hash key / in a set:.
-
#initialize(path, name, options = {}) ⇒ Package
constructor
A new instance of Package.
- #local ⇒ Object
- #local? ⇒ Boolean
-
#source_uri ⇒ Object
The source uri from which this package would be cloned.
- #to_s ⇒ Object
Constructor Details
#initialize(path, name, options = {}) ⇒ Package
Returns a new instance of Package.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/teapot/package.rb', line 30 def initialize(path, name, = {}) # The path where the package is (or will be) located: @path = Path[path] # Get the name of the package from the options, if provided: if [:name] @name = [:name] end if Symbol === name # If the name argument was symbolic, we convert it into a string, and use it for both the uri and the name itself: @uri = name.to_s @name ||= @uri else # Otherwise, we assume a path may have been given, and use that instead: @name ||= File.basename(name) @uri = name end # Copy the options provided: @options = end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
62 63 64 |
# File 'lib/teapot/package.rb', line 62 def name @name end |
#options ⇒ Object
Returns the value of attribute options.
66 67 68 |
# File 'lib/teapot/package.rb', line 66 def @options end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
63 64 65 |
# File 'lib/teapot/package.rb', line 63 def path @path end |
#uri ⇒ Object (readonly)
Returns the value of attribute uri.
65 66 67 |
# File 'lib/teapot/package.rb', line 65 def uri @uri end |
Instance Method Details
#eql?(other) ⇒ Boolean
105 106 107 |
# File 'lib/teapot/package.rb', line 105 def eql?(other) @path.eql?(other.path) end |
#external? ⇒ Boolean
76 77 78 |
# File 'lib/teapot/package.rb', line 76 def external? @options.include?(:source) end |
#external_url(root_path = nil) ⇒ Object
85 86 87 |
# File 'lib/teapot/package.rb', line 85 def external_url(root_path = nil) Build::URI[root_path] + source_uri + Build::URI[@uri] end |
#freeze ⇒ Object
53 54 55 56 57 58 59 60 |
# File 'lib/teapot/package.rb', line 53 def freeze @path.freeze @name.freeze @uri.freeze @options.freeze super end |
#hash ⇒ Object
Package may be used as hash key / in a set:
101 102 103 |
# File 'lib/teapot/package.rb', line 101 def hash @path.hash end |
#local ⇒ Object
68 69 70 |
# File 'lib/teapot/package.rb', line 68 def local @options[:local].to_s end |
#local? ⇒ Boolean
72 73 74 |
# File 'lib/teapot/package.rb', line 72 def local? @options.include?(:local) end |
#source_uri ⇒ Object
The source uri from which this package would be cloned. Might be relative, in which case it’s relative to the root of the context.
81 82 83 |
# File 'lib/teapot/package.rb', line 81 def source_uri Build::URI[@options[:source]] end |
#to_s ⇒ Object
89 90 91 92 93 94 95 96 97 |
# File 'lib/teapot/package.rb', line 89 def to_s if self.local? "links #{@name} from #{self.local}" elsif self.external? "clones #{@name} from #{self.external_url}" else "references #{@name} from #{@path}" end end |