Sha256: abf212b225e6fa859e44b23ba4252267c7f5e71aa690cabfc5c087e5a66e0a12

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

module ApiNavigator
  # 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) if href
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
api_navigator-0.0.1 lib/api_navigator/curie.rb