Compare commits
No commits in common. "d1f991d8e73fa13a0f8bd62dfbd2900d84929cae" and "a4f601329536e6c90d7e6ff6be17bc75361f40ec" have entirely different histories.
d1f991d8e7
...
a4f6013295
8 changed files with 10 additions and 44 deletions
52
app.rb
52
app.rb
|
|
@ -2,44 +2,8 @@ require 'gollum/app'
|
||||||
require 'sinatra/flash'
|
require 'sinatra/flash'
|
||||||
require "sqlite3"
|
require "sqlite3"
|
||||||
require 'tonton_web'
|
require 'tonton_web'
|
||||||
require 'pathname'
|
# TODO: better, simpler route matching
|
||||||
|
|
||||||
class TonTonWeb::App < Sinatra::Base
|
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 :host_authorization, { permitted_hosts: ['localhost', 'mytonton.com.br'] }
|
||||||
|
|
||||||
set :sessions, true
|
set :sessions, true
|
||||||
|
|
@ -52,17 +16,19 @@ class TonTonWeb::App < Sinatra::Base
|
||||||
markdown File.read("readme.md"), layout_engine: :erb, layout: true
|
markdown File.read("readme.md"), layout_engine: :erb, layout: true
|
||||||
end
|
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"
|
redirect "/chapa-sigmoide/readme.markdown"
|
||||||
end
|
end
|
||||||
|
|
||||||
get '/chapa-sigmoide/:name' do
|
get '/chapa-sigmoide/:name' do
|
||||||
render_any params['name'], 'chapa-sigmoide', 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
|
||||||
|
|
||||||
get '/chapa-sigmoide/members/:name' do
|
|
||||||
render_any params['name'], 'chapa-sigmoide/members', layout_engine: :erb, layout: :chapa_sigmoide
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
Loading…
Add table
Add a link
Reference in a new issue