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(''', "'")
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