class Korgi::NamedRouteFilter

Attributes

id[R]
target[R]

Public Class Methods

new(doc, context = nil, result = nil) click to toggle source
Calls superclass method
# File lib/korgi/named_route_filter.rb, line 10
def initialize(doc, context = nil, result = nil)
  super doc, context, result
  @target, @id = nil
end

Public Instance Methods

call() click to toggle source
# File lib/korgi/named_route_filter.rb, line 15
def call
  doc.to_s.gsub(pattern) { replace(Regexp.last_match) }
end

Private Instance Methods

configured_value(key) click to toggle source
# File lib/korgi/named_route_filter.rb, line 46
def configured_value(key)
  Korgi.config.named_routes[target.to_sym][key]
end
controller() click to toggle source
# File lib/korgi/named_route_filter.rb, line 50
def controller
  configured_value(:controller)
end
find_object() click to toggle source
# File lib/korgi/named_route_filter.rb, line 36
def find_object
  primary_key == :id ? id : klass.find(id).send(primary_key)
rescue ActiveRecord::RecordNotFound
  id
end
klass() click to toggle source
# File lib/korgi/named_route_filter.rb, line 54
def klass
  Object.const_get(configured_value(:model))
end
pattern() click to toggle source
# File lib/korgi/named_route_filter.rb, line 21
def pattern
  %r{\$#([\w]+).([\d]+)\$}
end
primary_key() click to toggle source
# File lib/korgi/named_route_filter.rb, line 58
def primary_key
  configured_value(:primary_key) || :id
end
replace(matches) click to toggle source
# File lib/korgi/named_route_filter.rb, line 25
def replace(matches)
  origin, @target, @id = matches.to_a
  valid_target? ? resource_url : origin
rescue ActionController::UrlGenerationError
  origin
end
resource_url() click to toggle source
# File lib/korgi/named_route_filter.rb, line 32
def resource_url
  url_for(controller: controller, action: "show", id: find_object, only_path: true)
end
valid_target?() click to toggle source
# File lib/korgi/named_route_filter.rb, line 42
def valid_target?
  Korgi.config.named_routes.key?(target.to_sym)
end