Sha256: cf61dfaf47475f22502be4bb11c50e5ec39f3e8856e0e11bbaada2fb83c27bc1
Contents?: true
Size: 1.12 KB
Versions: 1
Compression:
Stored size: 1.12 KB
Contents
require 'delegate' require 'active_support/core_ext/object/blank' require 'frenetic/hypermedia_link' class Frenetic class HypermediaLinkSet < Delegator def initialize( link_set = [] ) link_set = [link_set] unless link_set.is_a? Array @link_set = link_set.map do |link| if link.is_a? HypermediaLink link else HypermediaLink.new link end end end def href( tmpl_vars = {} ) return @link_set.first.href if tmpl_vars.blank? link = find_relevant_link( tmpl_vars ) and link.href( tmpl_vars ) end def []( relation ) @link_set.find{ |link| link.rel == relation.to_s } end def find_relevant_link( tmpl_vars ) @link_set.find{ |link| link.expandable? tmpl_vars } or raise Frenetic::HypermediaError, "Could not find a relevant link for the data provided.\n" \ "Are any of the links missing the templated:true property?\n" \ " Template Data: #{tmpl_vars}\n" \ " Link Set: #{@link_set.collect(&:as_json)}" end def __getobj__ @link_set end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
frenetic-1.0.0.alpha.1 | lib/frenetic/hypermedia_link_set.rb |