Module: Vapid::Controllers::ProjectController
- Extended by:
- Sinatra::Extension
- Defined in:
- lib/vapid/controllers/project_controller.rb
Overview
Project routes
Class Method Summary collapse
-
.registered(app) ⇒ Object
rubocop:disable Metrics/AbcSize, MethodLength.
Class Method Details
.registered(app) ⇒ Object
rubocop:disable Metrics/AbcSize, MethodLength
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/vapid/controllers/project_controller.rb', line 8 def self.registered(app) app.configure do app.set :layouts, File.join(app.settings.project_views, "layouts") end # rubocop:disable Lint/NestedMethodDefinition app.helpers do def dynamic_layout(path) path_layout = path.split("/")[1] if path_layout && Dir.glob(File.join(settings.layouts, "#{path_layout}.*")).any? "layouts/#{path_layout}" else :default end end def render_or_index(path) render path, views: settings.project_views, layout: dynamic_layout(path) rescue render "#{path.chomp('/')}/index", views: settings.project_views, layout: dynamic_layout(path) end end # rubocop:enable Lint/NestedMethodDefinition app.get "*" do path = params[:splat].first.to_s html = render_or_index(path) Template.new(html).render end end |