Class: Absolutely::URI
- Inherits:
-
Object
- Object
- Absolutely::URI
- Defined in:
- lib/absolutely/uri.rb
Instance Attribute Summary collapse
-
#base ⇒ Object
readonly
Returns the value of attribute base.
-
#relative ⇒ Object
readonly
Returns the value of attribute relative.
Instance Method Summary collapse
- #base_uri ⇒ Object
-
#initialize(base:, relative:) ⇒ URI
constructor
A new instance of URI.
- #relative_uri ⇒ Object
- #to_absolute_uri ⇒ Object
Constructor Details
#initialize(base:, relative:) ⇒ URI
Returns a new instance of URI.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/absolutely/uri.rb', line 5 def initialize(base:, relative:) raise ArgumentError, "base must be a String (given #{base.class.name})" unless base.is_a?(String) raise ArgumentError, "relative must be a String (given #{relative.class.name})" unless relative.is_a?(String) @base = base @relative = relative base_uri relative_uri raise ArgumentError, 'base must be an absolute URI (e.g. https://example.com)' unless base_uri.absolute? rescue Addressable::URI::InvalidURIError => exception raise InvalidURIError, exception end |
Instance Attribute Details
#base ⇒ Object (readonly)
Returns the value of attribute base.
3 4 5 |
# File 'lib/absolutely/uri.rb', line 3 def base @base end |
#relative ⇒ Object (readonly)
Returns the value of attribute relative.
3 4 5 |
# File 'lib/absolutely/uri.rb', line 3 def relative @relative end |
Instance Method Details
#base_uri ⇒ Object
20 21 22 |
# File 'lib/absolutely/uri.rb', line 20 def base_uri @base_uri ||= Addressable::URI.parse(base) end |
#relative_uri ⇒ Object
24 25 26 |
# File 'lib/absolutely/uri.rb', line 24 def relative_uri @relative_uri ||= Addressable::URI.parse(relative) end |
#to_absolute_uri ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/absolutely/uri.rb', line 28 def to_absolute_uri return relative_uri.to_s if relative_uri.absolute? base_uri.path = '/' if base_uri.path.empty? (base_uri + relative_uri).to_s end |