diff --git a/app.rb b/app.rb index 750d2c2..6a03c5c 100644 --- a/app.rb +++ b/app.rb @@ -2,44 +2,8 @@ require 'gollum/app' require 'sinatra/flash' require "sqlite3" require 'tonton_web' -require 'pathname' - +# TODO: better, simpler route matching class TonTonWeb::App < Sinatra::Base - # Renders a view by the filename without the extension (without a predefined render) - # TODO: pass this to tonton-web code - def render_any template_name, base_dir, options = {} - for extension in ['.markdown', '.erb'] - template_name.delete_suffix!(extension) - end - - views_root = settings.views || "./views" - - # Search for any file with the given name and any extension - # Dir.glob returns an array of matching file paths - views_dir = Dir.new("#{views_root}/#{base_dir}") - - found = false - filename = nil - - while not found and ( filename = views_dir.read ) != nil - if File.basename(filename, ".*") == template_name - found = true - end - end - - if not found - halt 404, "Template named '#{template_name}' not found." - end - - file_path = "#{base_dir}/#{template_name}" - - engine = File.extname(filename).delete('.').to_sym - - # Dynamically call the correct Sinatra method (e.g., erb :hello, markdown :hello) - # We use 'send' to call the method by its name symbol - send(engine, file_path.to_sym, options) - end - set :host_authorization, { permitted_hosts: ['localhost', 'mytonton.com.br'] } set :sessions, true @@ -52,17 +16,19 @@ class TonTonWeb::App < Sinatra::Base markdown File.read("readme.md"), layout_engine: :erb, layout: true end - # Chapa Sigmóide + get '/:name' do + markdown request.path_info.to_sym, layout_engine: :erb, layout: true + end - get '/chapa-sigmoide' do + get '/chapa-sigmoide/readme' do redirect "/chapa-sigmoide/readme.markdown" end get '/chapa-sigmoide/:name' do - render_any params['name'], 'chapa-sigmoide', layout_engine: :erb, layout: :chapa_sigmoide - end - - get '/chapa-sigmoide/members/:name' do - render_any params['name'], 'chapa-sigmoide/members', layout_engine: :erb, layout: :chapa_sigmoide + if request.path_info.end_with? '.markdown' + markdown request.path_info.sub('.markdown', '').to_sym, layout_engine: :erb, layout: :chapa_sigmoide + elsif request.path_info.end_with? '.erb' + erb request.path_info.sub('.erb', '').to_sym, layout_engine: :erb, layout: :chapa_sigmoide + end end end \ No newline at end of file diff --git a/views/chapa-sigmoide/members/henrique.markdown b/views/chapa-sigmoide/henrique.markdown similarity index 100% rename from views/chapa-sigmoide/members/henrique.markdown rename to views/chapa-sigmoide/henrique.markdown diff --git a/views/chapa-sigmoide/members/joao.markdown b/views/chapa-sigmoide/joao.markdown similarity index 100% rename from views/chapa-sigmoide/members/joao.markdown rename to views/chapa-sigmoide/joao.markdown diff --git a/views/chapa-sigmoide/members/leonardo.markdown b/views/chapa-sigmoide/leonardo.markdown similarity index 100% rename from views/chapa-sigmoide/members/leonardo.markdown rename to views/chapa-sigmoide/leonardo.markdown diff --git a/views/chapa-sigmoide/members/lucas.markdown b/views/chapa-sigmoide/lucas.markdown similarity index 100% rename from views/chapa-sigmoide/members/lucas.markdown rename to views/chapa-sigmoide/lucas.markdown diff --git a/views/chapa-sigmoide/members/mateus.markdown b/views/chapa-sigmoide/mateus.markdown similarity index 100% rename from views/chapa-sigmoide/members/mateus.markdown rename to views/chapa-sigmoide/mateus.markdown diff --git a/views/chapa-sigmoide/readme.markdown b/views/chapa-sigmoide/readme.md similarity index 100% rename from views/chapa-sigmoide/readme.markdown rename to views/chapa-sigmoide/readme.md diff --git a/views/chapa-sigmoide/symbology.markdown b/views/chapa-sigmoide/symbology.md similarity index 100% rename from views/chapa-sigmoide/symbology.markdown rename to views/chapa-sigmoide/symbology.md