Sha256: c31eeb136b7b05f8c78f0abcf4b2092ae452af5eb772b7ca7b7189c76d4403ae
Contents?: true
Size: 1.21 KB
Versions: 3
Compression:
Stored size: 1.21 KB
Contents
module Vapid module Controllers # Project routes module ProjectController extend Sinatra::Extension # rubocop:disable Metrics/AbcSize, MethodLength 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 # rubocop:enable Metrics/AbcSize, MethodLength end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
vapid-0.1.2 | lib/vapid/controllers/project_controller.rb |
vapid-0.1.1 | lib/vapid/controllers/project_controller.rb |
vapid-0.1.0 | lib/vapid/controllers/project_controller.rb |