class SorbetRails::RoutesRbiFormatter
typed: strict
Public Class Methods
new()
click to toggle source
# File lib/sorbet-rails/routes_rbi_formatter.rb, line 6 def initialize @parlour = T.let(Parlour::RbiGenerator.new, Parlour::RbiGenerator) end
Public Instance Methods
header(routes)
click to toggle source
# File lib/sorbet-rails/routes_rbi_formatter.rb, line 21 def header(routes) @parlour.root.add_comment([ 'This is an autogenerated file for Rails routes.', 'Please run bundle exec rake rails_rbi:routes to regenerate.' ]) @parlour.root.create_class('ActionController::Base') do |klass| klass.create_include('GeneratedUrlHelpers') end @parlour.root.create_class('ActionController::API') do |klass| klass.create_include('GeneratedUrlHelpers') end @parlour.root.create_module('ActionView::Helpers') do |mod| mod.create_include('GeneratedUrlHelpers') end @parlour.root.create_class('ActionMailer::Base') do |mod| mod.create_include('GeneratedUrlHelpers') end end
no_routes(routes = nil, filter = nil)
click to toggle source
# File lib/sorbet-rails/routes_rbi_formatter.rb, line 45 def no_routes(routes = nil, filter = nil) @parlour.root.add_comment([ 'You do not have any routes defined!', 'Please add some routes in config/routes.rb.', 'For more information about routes, see the Rails guide: https://guides.rubyonrails.org/routing.html.' ]) end
result()
click to toggle source
# File lib/sorbet-rails/routes_rbi_formatter.rb, line 54 def result @parlour.rbi end
section(routes)
click to toggle source
# File lib/sorbet-rails/routes_rbi_formatter.rb, line 16 def section(routes) draw_section(routes) end
section_title(title)
click to toggle source
# File lib/sorbet-rails/routes_rbi_formatter.rb, line 11 def section_title(title) nil end
Private Instance Methods
draw_section(routes)
click to toggle source
# File lib/sorbet-rails/routes_rbi_formatter.rb, line 61 def draw_section(routes) @parlour.root.create_module('GeneratedUrlHelpers') do |klass| routes.each do |r| next unless r[:name].present? klass.add_comment_to_next_child("Sigs for route #{r[:path]}") klass.create_method( "#{r[:name]}_path", parameters: [ Parlour::RbiGenerator::Parameter.new("*args", type: "T.untyped"), Parlour::RbiGenerator::Parameter.new("**kwargs", type: "T.untyped") ], return_type: "String" ) klass.create_method( "#{r[:name]}_url", parameters: [ Parlour::RbiGenerator::Parameter.new("*args", type: "T.untyped"), Parlour::RbiGenerator::Parameter.new("**kwargs", type: "T.untyped") ], return_type: "String" ) end end end