Sha256: 9d4451f98c99903d227107a00e8b9f96fb72c3383b968816f1042e14493a8737
Contents?: true
Size: 1.23 KB
Versions: 9
Compression:
Stored size: 1.23 KB
Contents
module TMS::Util module HalLinkParser #def self.included(base) # base.send(:include, TMS::CoreExt) #end def parse_links(_links) @resources = {} return if _links.nil? parse_link(_links) and return if _links.is_a?(Hash) _links.each { |link| parse_link(link) } end def subresources @resources end protected def metaclass @metaclass ||= class << self; self; end end def parse_link(link) link.each do |rel, href| if rel == 'self' self.href = href else klass = relation_class(rel) klass = self.class if ['first', 'prev', 'next', 'last'].include?(rel) if klass subresources[rel] = klass.new(self.client, href) setup_subresource(link) else puts "Don't know what to do with link rel '#{rel}' for class #{self.class.to_s}!" end end end end def relation_class(rel) ::TMS.const_get(classify(rel)) rescue nil end def setup_subresource(link) return unless link link.each { |rel, href| self.metaclass.send(:define_method, rel.to_sym, &lambda { subresources[rel] }) unless rel == 'self' } end end end
Version data entries
9 entries across 9 versions & 1 rubygems