Sha256: 2a85ecf63e6c0003c30ff6d68964cc8c9955f3ee67af1fface6961463d546fce
Contents?: true
Size: 1.61 KB
Versions: 2
Compression:
Stored size: 1.61 KB
Contents
module Compo # 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. module UrlReferenceable # 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. # # @api public # @example Gets the URL of an object with no parent. # orphan.url # #=> '' # @example Gets the URL of an object with a parent. # leaf.url # #=> 'grandparent_id/parent_id/id' # # @return [String] The URL of this object. def url parent.nil? ? '' : [parent_url, id].join('/') end # Returns the URL of this object's parent # # @api public # @example Gets the parent URL of an object with no parent. # orphan.parent_url # #=> nil # @example Gets the URL of an object with a parent. # leaf.parent_url # #=> 'grandparent_id/parent_id' # # @return [String] The URL of this object's parent, or nil if there is no # parent. def parent_url parent.nil? ? nil : parent.url end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
compo-0.1.5 | lib/compo/url_referenceable.rb |
compo-0.1.4 | lib/compo/url_referenceable.rb |