class StaticRoutes
Attributes
context[RW]
limits[RW]
prefixed_modules[RW]
Public Class Methods
new(attributes = {})
click to toggle source
# File lib/static_routes.rb, line 5 def initialize(attributes = {}) @context = attributes[:context] @limits = {} end
Public Instance Methods
for(attributes)
click to toggle source
# File lib/static_routes.rb, line 10 def for(attributes) splice_limits(attributes[:arguments]) self.prefixed_modules = attributes[:prefixed_modules]&.split('/') || [] attributes[:arguments].each do |controller| write_routes_for(controller) end end
Private Instance Methods
controller_from_chars(chars)
click to toggle source
# File lib/static_routes.rb, line 26 def controller_from_chars(chars) create_namespaced_controller(chars).constantize end
create_namespaced_controller(chars)
click to toggle source
# File lib/static_routes.rb, line 30 def create_namespaced_controller(chars) main_controller = "#{chars.to_s.camelize}Controller" if prefixed_modules (prefixed_modules.map(&:camelize) << main_controller).join('::') else main_controller end end
desired_routes_from(controller)
click to toggle source
# File lib/static_routes.rb, line 53 def desired_routes_from(controller) instance_methods = controller.instance_methods(false) if limits[:only] limits[:only].select { |method| instance_methods.include?(method) } else instance_methods.reject do |route| limits[:except]&.include?(route) end end end
route_from_action(action)
click to toggle source
# File lib/static_routes.rb, line 22 def route_from_action(action) action.to_s.gsub(/[^a-zA-Z]/, '-') end
splice_limits(arguments)
click to toggle source
# File lib/static_routes.rb, line 40 def splice_limits(arguments) return unless arguments.last.is_a? Hash self.limits = arguments.slice!(-1) end
write_routes_for(controller)
click to toggle source
# File lib/static_routes.rb, line 46 def write_routes_for(controller) controller_constant = controller_from_chars(controller) desired_routes_from(controller_constant).each do |action| context.get(route_from_action(action), to: "#{controller}##{action}") end end