Module: Compo::Mixins::UrlReferenceable
- Extended by:
- Forwardable
- Included in:
- Branches::Branch
- Defined in:
- lib/compo/mixins/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 ⇒ 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.
51 52 53 |
# File 'lib/compo/mixins/url_referenceable.rb', line 51 def child_url(child_id) [url, child_id].join('/') end |
#parent ⇒ String
Returns the URL of this object’s parent
67 |
# File 'lib/compo/mixins/url_referenceable.rb', line 67 def_delegator :parent, :url, :parent_url |
#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.
32 33 34 |
# File 'lib/compo/mixins/url_referenceable.rb', line 32 def url parent.child_url(id) end |