class FlexibleAccessibility::RouteProvider
Public Class Methods
new(controller=nil)
click to toggle source
# File lib/flexible_accessibility/route_provider.rb, line 5 def initialize(controller=nil) @path = "#{::Rails.root}/app/controllers/" @controllers = {} @current_controller = controller end
Public Instance Methods
app_controllers()
click to toggle source
# File lib/flexible_accessibility/route_provider.rb, line 11 def app_controllers app_controllers_recursive(@path) end
app_routes()
click to toggle source
# File lib/flexible_accessibility/route_provider.rb, line 15 def app_routes app_routes_as_hash if @@routes.empty? @@routes end
non_verifiable_routes_list()
click to toggle source
# File lib/flexible_accessibility/route_provider.rb, line 32 def non_verifiable_routes_list routes_table, list = @current_controller.instance_variable_get(:@_routes_table), [] unless routes_table.nil? unless routes_table[:skip].nil? list = routes_table[:skip].first == 'all' ? available_routes_list : routes_table[:skip] end end list end
verifiable_routes_list()
click to toggle source
# File lib/flexible_accessibility/route_provider.rb, line 20 def verifiable_routes_list routes_table, list = @current_controller.instance_variable_get(:@_routes_table), [] unless routes_table.nil? list = available_routes_list if routes_table[:all] list = routes_table[:only] unless routes_table[:only].nil? list = available_routes_list - routes_table[:except] unless routes_table[:except].nil? end list end
Private Instance Methods
app_controllers_recursive(path)
click to toggle source
All controller classes placed in :default scope
# File lib/flexible_accessibility/route_provider.rb, line 54 def app_controllers_recursive(path) invalid_entries = ['..', '.', 'concerns'] (Dir.entries(path) - invalid_entries).each do |entry| if File.directory?(path + entry) app_controllers_recursive(path + entry + '/') else if File.extname(entry) == '.rb' parent_directory = File.dirname(path + entry).split(/\//).last container = parent_directory == 'controllers' ? 'default' : parent_directory @controllers[container.to_sym] ||= [] @controllers[container.to_sym] << File.basename(path + entry, '.*') unless File.basename(path + entry, '.*') == 'application_controller' end end end @controllers end
app_routes_as_hash()
click to toggle source
Routes from routes.rb
# File lib/flexible_accessibility/route_provider.rb, line 72 def app_routes_as_hash Rails.application.routes.routes.each do |route| controller = route.defaults[:controller] unless controller.nil? key = controller.split('/').map { |p| p.camelize }.join('::') @@routes[key] ||= [] @@routes[key] << route.defaults[:action] end end end
available_routes_list()
click to toggle source
# File lib/flexible_accessibility/route_provider.rb, line 46 def available_routes_list available_routes = self.app_routes[@current_controller.to_s.gsub(/Controller/, '')] # available_routes = self.action_methods if available_routes.nil? raise NoWayToDetectAvailableRoutesException if available_routes.nil? available_routes.to_set end