class Ducktrails::LinkCollection
Attributes
current_uri[RW]
resources[RW]
Public Class Methods
new(resources, current_uri)
click to toggle source
# File lib/ducktrails/link_collection.rb, line 14 def initialize(resources, current_uri) @resources ||= default_resources(resources) @current_uri ||= current_uri end
Public Instance Methods
links()
click to toggle source
# File lib/ducktrails/link_collection.rb, line 19 def links split_uri.inject([]) do |links, uri_resource| links << Resource.new(resources, uri_resource, current_uri) .link end.compact end
Private Instance Methods
default_resources(yield_resources = nil)
click to toggle source
# File lib/ducktrails/link_collection.rb, line 32 def default_resources(yield_resources = nil) return {} if yield_resources.nil? yield_resources.inject({}) do |resources, resource| resource[1].assert_valid_keys(Ducktrails::VALID_RESOURCES) @resource = resource[1] resources.merge( resource[0] => DEFAULTS.merge(sanitized_resource) ) end end
resource_decorated?()
click to toggle source
# File lib/ducktrails/link_collection.rb, line 55 def resource_decorated? @resource[:resource].respond_to?(:decorated?) && @resource[:resource].decorated? rescue NoMethodError @resource end
sanitized_resource()
click to toggle source
Used to filter and sanitize decorated resources
# File lib/ducktrails/link_collection.rb, line 44 def sanitized_resource return @resource if @resource.is_a?(String) return unobjectified_resource if resource_decorated? @resource end
split_uri()
click to toggle source
# File lib/ducktrails/link_collection.rb, line 28 def split_uri @split_uri ||= current_uri.split('/').reject(&:empty?) end
unobjectified_resource()
click to toggle source
# File lib/ducktrails/link_collection.rb, line 50 def unobjectified_resource @resource[:resource] = @resource[:resource].object @resource end