Module: Compo::UrlReferenceable
- Included in:
- ArrayBranch, HashBranch, Leaf
- Defined in:
- lib/compo/url_referenceable.rb
Overview
Adds ID-based ‘URL’s to Compo classes
For the purposes of this module, a URL is a string of slash-delimited IDs representing the location of a Composite in the tree structure formed by its ancestors. Depending on the types of IDs used in the structure, the URLs may not actually be literal Uniform Resource Locators.
This module expects its includer to define #parent and #id. These are defined, for example, by the Compo::ParentTracker mixin.
Instance Method Summary collapse
-
#child_url(child_id) ⇒ String
Returns the URL of a child of this object, with the given ID.
-
#parent_url ⇒ String
Returns the URL of this object’s parent.
-
#url ⇒ String
Returns the URL of this object.
Instance Method Details
#child_url(child_id) ⇒ String
Returns the URL of a child of this object, with the given ID
This defaults to joining the ID to this object’s URL with a slash.
48 49 50 |
# File 'lib/compo/url_referenceable.rb', line 48 def child_url(child_id) [url, child_id].join('/') end |
#parent_url ⇒ String
Returns the URL of this object’s parent
64 65 66 |
# File 'lib/compo/url_referenceable.rb', line 64 def parent_url parent.nil? ? nil : parent.url end |
#url ⇒ String
Returns the URL of this object
The #url of a Composite is defined inductively as ” for composites that have no parent, and the joining of the parent URL and the current ID otherwise.
The result of #url can be used to give a URL hierarchy to Composites.
29 30 31 |
# File 'lib/compo/url_referenceable.rb', line 29 def url parent.child_url(id) end |