class Ducktrails::Resource

Attributes

current_uri[R]
resource[R]
resources[R]

Public Class Methods

new(resources, resource, current_uri) click to toggle source
# File lib/ducktrails/resource.rb, line 13
def initialize(resources, resource, current_uri)
  @resources = DeepStruct.new(resources)
  @resource = resource
  @current_uri = current_uri
end

Public Instance Methods

Private Instance Methods

col_prefix() click to toggle source
# File lib/ducktrails/resource.rb, line 101
def col_prefix
  return '' if new_action || edit_action
  if resources[resource]&.collection_prefix.present?
    resources[resource].collection_prefix.concat(' ')
  else
    collection_prefix
  end
end
controller_resource_title() click to toggle source
# File lib/ducktrails/resource.rb, line 95
def controller_resource_title
  return string_resource if request_pattern[:controller].split('/')[uri_index].nil?
  request_pattern[:controller].split('/')[uri_index].underscore.titleize.pluralize.
    prepend(col_prefix)
end
current_resource() click to toggle source

TODO: Refactor this to use a resource given by the view_helpers?

# File lib/ducktrails/resource.rb, line 47
def current_resource
  resources[request_pattern[:controller].split('/').last.to_sym]
end
progressive_uri() click to toggle source
# File lib/ducktrails/resource.rb, line 58
def progressive_uri
  split_uri[0..uri_index].join('/').prepend('/')
end
request_pattern(url = nil) click to toggle source
# File lib/ducktrails/resource.rb, line 91
def request_pattern(url = nil)
  @request_pattern ||= Rails.application.routes.recognize_path(url || current_uri)
end
resourcer(resource) click to toggle source
# File lib/ducktrails/resource.rb, line 87
def resourcer(resource)
  resource.class.name.split('::').first.underscore.titleize.pluralize.prepend(col_prefix)
end
split_uri() click to toggle source
# File lib/ducktrails/resource.rb, line 38
def split_uri
  @split_uri ||= current_uri.split('/').reject(&:empty?)
end
string_resource() click to toggle source
# File lib/ducktrails/resource.rb, line 82
def string_resource
  return resource.titleize if show_action || edit_action || new_action
  resource.titleize.prepend(col_prefix)
end
uri_index() click to toggle source
# File lib/ducktrails/resource.rb, line 42
def uri_index
  split_uri.index(resource)
end