lib/hyperclient/curie.rb
module Hyperclient
# Internal: Curies are named tokens that you can define in the document and use
# to express curie relation URIs in a friendlier, more compact fashion.
#
class Curie
# Public: Initializes a new Curie.
#
# curie_hash - The String with the URI of the curie.
# entry_point - The EntryPoint object to inject the configuration.
def initialize(curie_hash, entry_point)
@curie_hash = curie_hash
@entry_point = entry_point
end
# Public: Indicates if the curie is an URITemplate or a regular URI.
#
# Returns true if it is templated.
# Returns false if it not templated.
def templated?
!!@curie_hash['templated']
end
# Public: Returns the name property of the Curie.
def name
@curie_hash['name']
end
# Public: Returns the href property of the Curie.
def href
@curie_hash['href']
end
def inspect
"#<#{self.class.name} #{@curie_hash}>"
end
# Public: Expands the Curie when is templated with the given variables.
#
# rel - The String rel to expand.
#
# Returns a new expanded url.
def expand(rel)
return rel unless rel && templated?
href&.gsub('{rel}', rel)
end
end
end