Sha256: aae819c4e3a3406c0c7cc07cba4584714493d3a78275891c3f872577b44a9958

Contents?: true

Size: 1.14 KB

Versions: 9

Compression:

Stored size: 1.14 KB

Contents

# typed: strict
require('parlour')
require('sorbet-rails/sorbet_utils.rb')

class SorbetRails::MailerRbiFormatter
  extend T::Sig

  sig { params(mailer_class: T.class_of(ActionMailer::Base)).void }
  def initialize(mailer_class)
    @mailer_class = T.let(mailer_class, T.class_of(ActionMailer::Base))
    @parlour = T.let(Parlour::RbiGenerator.new, Parlour::RbiGenerator)
  end

  sig {returns(String)}
  def generate_rbi
    puts "-- Generate sigs for mailer #{@mailer_class.name} --"

    @parlour.root.add_comments([
      'This is an autogenerated file for Rails helpers.',
      'Please rerun rake rails_rbi:mailers to regenerate.'
    ])

    @parlour.root.create_class(@mailer_class.name) do |mailer_rbi|
      @mailer_class.action_methods.to_a.sort.each do |mailer_method|
        method_def = @mailer_class.instance_method(mailer_method)
        parameters = SorbetRails::SorbetUtils.parameters_from_method_def(method_def)
        mailer_rbi.create_method(
          mailer_method,
          parameters: parameters,
          return_type: 'ActionMailer::MessageDelivery',
          class_method: true,
        )
      end
    end

    @parlour.rbi
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
sorbet-rails-0.6.0 lib/sorbet-rails/mailer_rbi_formatter.rb
sorbet-rails-0.5.9.1 lib/sorbet-rails/mailer_rbi_formatter.rb
sorbet-rails-0.5.9 lib/sorbet-rails/mailer_rbi_formatter.rb
sorbet-rails-0.5.8.1 lib/sorbet-rails/mailer_rbi_formatter.rb
sorbet-rails-0.5.8 lib/sorbet-rails/mailer_rbi_formatter.rb
sorbet-rails-0.5.7 lib/sorbet-rails/mailer_rbi_formatter.rb
sorbet-rails-0.5.6 lib/sorbet-rails/mailer_rbi_formatter.rb
sorbet-rails-0.5.5.1 lib/sorbet-rails/mailer_rbi_formatter.rb
sorbet-rails-0.5.5 lib/sorbet-rails/mailer_rbi_formatter.rb