Sha256: 8eeb2e3cf24bc57ec3064a011340541448f4bef6404e6ce499b238f056e350a5
Contents?: true
Size: 1.6 KB
Versions: 2
Compression:
Stored size: 1.6 KB
Contents
require 'sinatra/base' require 'haml' require 'redcarpet' require 'json' require 'cgi' module CabbageDoc module Helpers; end class Web < Sinatra::Base ROOT = File.expand_path("../../../web", __FILE__).freeze set :root, proc { Configuration.instance.validate! dir = File.join(Configuration.instance.root, 'web') if Dir.exists?(dir) dir else ROOT end } set :public_folder, proc { "#{root}/public" } set :views, proc { "#{root}/views" } helpers WebHelper Dir.glob("#{root}/**/*.rb").sort.each do |helper| require helper end CabbageDoc::Helpers.constants.each do |c| mod = CabbageDoc::Helpers.const_get(c) helpers mod if mod.is_a?(Module) end get '/' do haml :index end get '/api/:id' do response_by_id(params[:id]) end post '/api' do response = config.request.call(post_request) if post_request.valid? if response.is_a?(Response) format_json_response(response) elsif post_request.valid? response_by_id(post_request.id) else halt 500 end end get '/:slug' do slug = params[:slug].to_s.gsub(/[^a-z\-_]/, '') filename = File.join(config.root, config.page_root, "#{slug}.md") unless slug.empty? content = if !filename.empty? && File.exists?(filename) markdown.render(eval_with_erb(File.read(filename))) else status 404 "Page not found." end haml :page, layout: :page_layout, locals: { content: content } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
cabbage_doc-0.1.4 | lib/cabbage_doc/web.rb |
cabbage_doc-0.1.3 | lib/cabbage_doc/web.rb |