lib/tapioca/compilers/dsl/url_helpers.rb in tapioca-0.4.4 vs lib/tapioca/compilers/dsl/url_helpers.rb in tapioca-0.4.5

- old
+ new

@@ -12,9 +12,77 @@ end module Tapioca module Compilers module Dsl + # `Tapioca::Compilers::Dsl::UrlHelpers` generates RBI files for classes that include or extend + # `Rails.application.routes.url_helpers` + # (see https://api.rubyonrails.org/v5.1.7/classes/ActionDispatch/Routing/UrlFor.html#module-ActionDispatch::Routing::UrlFor-label-URL+generation+for+named+routes). + # + # For example, with the following setup: + # + # ~~~rb + # # config/application.rb + # class Application < Rails::Application + # routes.draw do + # resource :index + # end + # end + # ~~~ + # + # ~~~rb + # app/models/post.rb + # class Post + # include Rails.application.routes.url_helpers + # end + # ~~~ + # + # this generator will produce the following RBI files: + # + # ~~~rbi + # # generated_path_helpers_module.rbi + # # typed: true + # module GeneratedPathHelpersModule + # include ActionDispatch::Routing::PolymorphicRoutes + # include ActionDispatch::Routing::UrlFor + # + # sig { params(args: T.untyped).returns(String) } + # def edit_index_path(*args); end + # + # sig { params(args: T.untyped).returns(String) } + # def index_path(*args); end + # + # sig { params(args: T.untyped).returns(String) } + # def new_index_path(*args); end + # end + # ~~~ + # + # ~~~rbi + # # generated_url_helpers_module.rbi + # # typed: true + # module GeneratedUrlHelpersModule + # include ActionDispatch::Routing::PolymorphicRoutes + # include ActionDispatch::Routing::UrlFor + # + # sig { params(args: T.untyped).returns(String) } + # def edit_index_url(*args); end + # + # sig { params(args: T.untyped).returns(String) } + # def index_url(*args); end + # + # sig { params(args: T.untyped).returns(String) } + # def new_index_url(*args); end + # end + # ~~~ + # + # ~~~rbi + # # post.rbi + # # typed: true + # class Post + # include GeneratedPathHelpersModule + # include GeneratedUrlHelpersModule + # end + # ~~~ class UrlHelpers < Base extend T::Sig sig { override.params(root: Parlour::RbiGenerator::Namespace, constant: T.class_of(Module)).void } def decorate(root, constant)