class ActionDispatch::Routing::RouteSet::Generator
Experimental RBS support (using type sampling data from the type_fusion
project).
# sig/action_dispatch/routing/route_set.rbs class ActionDispatch::Routing::RouteSet::Generator def controller: () -> untyped def generate: () -> untyped def initialize: (String named_route, Hash options, Hash recall, ActionDispatch::Routing::RouteSet set) -> void def normalize_controller!: () -> untyped def normalize_controller_action_id!: () -> untyped def segment_keys: () -> untyped def use_relative_controller!: () -> untyped end
def controller
Experimental RBS support (using type sampling data from the type_fusion
project).
def controller: () -> untyped
This signature was generated using 4 samples from 1 application.
def controller @options[:controller] end
def current_controller
def current_controller @recall[:controller] end
def different_controller?
def different_controller? return false unless current_controller controller.to_param != current_controller.to_param end
def generate
Experimental RBS support (using type sampling data from the type_fusion
project).
def generate: () -> untyped
This signature was generated using 2 samples from 1 application.
Generates a path from routes, returns a RouteWithParams or MissingRoute.
def generate @set.formatter.generate(named_route, options, recall) end
def initialize(named_route, options, recall, set)
Experimental RBS support (using type sampling data from the type_fusion
project).
def initialize: (String named_route, (controller | String | action | String | gem | String | version | String | controller | String | action | String | gem | String | version | String | class | String) options, controller | String | action | String | gem | String | version | String recall, ActionDispatch::Routing::RouteSet set) -> void
This signature was generated using 5 samples from 1 application.
def initialize(named_route, options, recall, set) @named_route = named_route @options = options @recall = recall @set = set normalize_options! normalize_controller_action_id! use_relative_controller! normalize_controller! end
def named_route_exists?
def named_route_exists? named_route && set.named_routes[named_route] end
def normalize_controller!
Experimental RBS support (using type sampling data from the type_fusion
project).
def normalize_controller!: () -> untyped
This signature was generated using 1 sample from 1 application.
def normalize_controller! if controller if controller.start_with?("/") @options[:controller] = controller[1..-1] else @options[:controller] = controller end end end
def normalize_controller_action_id!
Experimental RBS support (using type sampling data from the type_fusion
project).
def normalize_controller_action_id!: () -> untyped
This signature was generated using 1 sample from 1 application.
:controller, :action or :id is not found, don't pull any
or if the key in the options is identical. If any of
The recall key is only used if there is no key in the options
This pulls :controller, :action, and :id out of the recall.
def normalize_controller_action_id! use_recall_for(:controller) || return use_recall_for(:action) || return use_recall_for(:id) end
def normalize_options!
def normalize_options! # If an explicit :controller was given, always make :action explicit # too, so that action expiry works as expected for things like # # generate({controller: 'content'}, {controller: 'content', action: 'show'}) # # (the above is from the unit tests). In the above case, because the # controller was explicitly given, but no action, the action is implied to # be "index", not the recalled action of "show". if options[:controller] options[:action] ||= "index" options[:controller] = options[:controller].to_s end if options.key?(:action) options[:action] = (options[:action] || "index").to_s end end
def segment_keys
Experimental RBS support (using type sampling data from the type_fusion
project).
def segment_keys: () -> untyped
This signature was generated using 1 sample from 1 application.
def segment_keys set.named_routes[named_route].segment_keys end
def use_recall_for(key)
def use_recall_for(key) if @recall[key] && (!@options.key?(key) || @options[key] == @recall[key]) if !named_route_exists? || segment_keys.include?(key) @options[key] = @recall[key] end end end
def use_relative_controller!
Experimental RBS support (using type sampling data from the type_fusion
project).
def use_relative_controller!: () -> untyped
This signature was generated using 1 sample from 1 application.
if the current controller is "foo/bar/baz" and controller: "baz/bat"
def use_relative_controller! if !named_route && different_controller? && !controller.start_with?("/") old_parts = current_controller.split("/") size = controller.count("/") + 1 parts = old_parts[0...-size] << controller @options[:controller] = parts.join("/") end end