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 ⇒ Addressable::URI
-
#initialize(base:, relative:) ⇒ URI
constructor
Create an Absolutely::URI from a base URI and a relative path.
- #inspect ⇒ String
- #relative_uri ⇒ Addressable::URI
-
#to_abs ⇒ String
Convert a relative path to an absolute URI.
Constructor Details
#initialize(base:, relative:) ⇒ URI
Create an Absolutely::URI from a base URI and a relative path.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/absolutely/uri.rb', line 18 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 URL (e.g. https://example.com)' unless base_uri.absolute? rescue Addressable::URI::InvalidURIError => e raise InvalidURIError, e end |
Instance Attribute Details
#base ⇒ Object (readonly)
Returns the value of attribute base.
5 6 7 |
# File 'lib/absolutely/uri.rb', line 5 def base @base end |
#relative ⇒ Object (readonly)
Returns the value of attribute relative.
5 6 7 |
# File 'lib/absolutely/uri.rb', line 5 def relative @relative end |
Instance Method Details
#base_uri ⇒ Addressable::URI
34 35 36 |
# File 'lib/absolutely/uri.rb', line 34 def base_uri @base_uri ||= Addressable::URI.parse(base) end |
#inspect ⇒ String
39 40 41 |
# File 'lib/absolutely/uri.rb', line 39 def inspect format("#<#{self.class.name}:%#0x base: #{base.inspect}, relative: #{relative.inspect}>", object_id) end |
#relative_uri ⇒ Addressable::URI
44 45 46 |
# File 'lib/absolutely/uri.rb', line 44 def relative_uri @relative_uri ||= Addressable::URI.parse(relative) end |
#to_abs ⇒ String
Convert a relative path to an absolute URI.
51 52 53 54 55 56 57 |
# File 'lib/absolutely/uri.rb', line 51 def to_abs return relative_uri.normalize.to_s if relative_uri.absolute? base_uri.path = base_uri.normalized_path (base_uri + relative_uri).to_s end |