# frozen_string_literal: true
module Rails
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength class <%= app_const_base %>ResourceRouteGenerator < Rails::Generators::NamedBase # :nodoc: # Properly nests namespaces passed into a generator # # $ bin/rails generate resource admin/users/products # # should give you # # namespace :admin do # namespace :users do # resources :products, concerns: :paginatable # end # end def add_resource_route return if options[:actions].present? depth = 0 lines = [] # Create 'namespace' ladder # namespace :foo do # namespace :bar do regular_class_path.each do |ns| lines << indent("namespace :#{ns} do\n", depth * 2) depth += 1 end # inserts the primary resource with pagination routes lines << indent("resources :#{file_name.pluralize}, concerns: :paginatable\n", depth * 2) # Create `end` ladder # end # end until depth.zero? depth -= 1 lines << indent("end\n", depth * 2) end route lines.join end def add_paginatable_concern route <<~PAGINATABLE concern :paginatable do get "page/:page", action: :index, on: :collection, as: "" end PAGINATABLE end end # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
end