lib/roda/plugins/view_subdir_leading_slash.rb
# frozen-string-literal: true # class Roda module RodaPlugins # The view_subdir_leading_slash plugin builds on the view_options # plugin, and changes the behavior so that if a view subdir is set, # it is used for all templates, unless the template starts with a # leading slash: # # plugin :view_subdir_leading_slash # # route do |r| # r.on "users" do # set_view_subdir 'users' # # r.get 'list' do # view 'lists/users' # uses ./views/users/lists/users.erb # end # # r.get 'list' do # view '/lists/users' # uses ./views//lists/users.erb # end # end # end # # The default for the view_options plugin is to not use a # view subdir if the template name contains a slash at all. module ViewSubdirLeadingSlash # Load the view_options plugin before this plugin, since this plugin # works by overriding a method in the view_options plugin. def self.load_dependencies(app) app.plugin :view_options end module InstanceMethods private # Use a view subdir unless the template starts with a slash. def use_view_subdir_for_template_name?(name) !name.start_with?('/') end end end register_plugin(:view_subdir_leading_slash, ViewSubdirLeadingSlash) end end