lib/page_viewer.rb in page_viewer-0.0.1 vs lib/page_viewer.rb in page_viewer-0.0.5

- old
+ new

@@ -1,72 +1,68 @@ require 'sinatra/base' require 'redcarpet' -require 'pygments' +require 'rouge' +require 'rouge/plugins/redcarpet' require 'docverter' +require 'page_viewer/page' module PageViewer - class HTMLwithPygments < Redcarpet::Render::HTML - def block_code(code, language) - Pygments.highlight(code, :lexer => language) - end - + class HTMLwithHighlights < Redcarpet::Render::HTML + include Rouge::Plugins::Redcarpet + def postprocess(document) document.gsub('&#39;', "'") end end class App < Sinatra::Base RENDERER = Redcarpet::Markdown.new( - HTMLwithPygments.new(:with_toc_data => true), + HTMLwithHighlights.new(:with_toc_data => true), :fenced_code_blocks => true, :tables => true, ) before do - Docverter.base_url = 'http://c.docverter.com' + Docverter.base_url = 'http://localhost:5000' end - def page_contents(page) - File.read(page_path(page)) + before '/:page' do + @page = Page.new(settings.page_root, params[:page]) end - def page_path(page) - File.join(settings.page_root, page + '.md') - end - get '/' do - if File.exists?(page_path('_index')) + if File.exists?(Page.path('_index')) redirect '/_index' else @title = "Index" - @files = Dir.glob(page_path('*')).map { |f| File.basename(f, ".md") }.sort + @files = Dir.glob(Page.path('*')).map { |f| File.basename(f, ".md") }.sort erb :index end end get '/:page.md' do content_type 'text/plain' - page_contents(params[:page]) + @page.body end get '/:page.pdf' do - @content = RENDERER.render(page_contents(params[:page])) - @title = params[:page].gsub('_', ' ') + @title ||= params[:page].gsub('_', ' ') pdf = erb :page, :layout => :pdf content_type 'application/pdf' Docverter::Conversion.run do |c| - c.from = 'html' + c.from = 'markdown' c.to = 'pdf' - c.content = pdf + c.table_of_contents = true + c.content = @page.body end end get '/:page' do @page_name = params[:page] - @content = RENDERER.render(page_contents(params[:page])) - @title = params[:page].gsub("_", " ") + @content = RENDERER.render(@page.body) + @title ||= @page.headers['title'] || params[:page].gsub("_", " ") erb :page end end end