page_viewer 0.0.1 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NzllOTlkZTcyYmQyMTMwYTYxMWUxM2Y1MWU1MWE2YjViZjRjMzZkYQ==
5
+ data.tar.gz: !binary |-
6
+ YjM4ZGZmMWQwM2I3OTYxMzI5NmUxMjk1ZjNkOTRhNDkzZGY1NzkwZA==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ YTRlNjU5ODRlOTRjODZiOGU5OTU2YTVlMWQ4YzllMmQzZWVkZGZkNGQwNWJj
10
+ MTJkMDE3YWFiYTEyMjBmN2ZlMTMzNmU1ZmVlMzI0YzFlZDMxN2M3OThkYTk1
11
+ OTQ4MTljMGRjZDU5NTc2ZDE1ODMzNDY3YzUwMzNiNzlkNTQ2MmM=
12
+ data.tar.gz: !binary |-
13
+ MDQ5OTNmY2FlMTQzMWViNjBhM2QyNDYwMmZkZmVlNmU3MjdhOGNhMTUyNTU4
14
+ NjhmZjJkZWZhNmNmOTRlMTUwZDQ4MjdiM2Y3Y2EyYjc0NWM0NTJkZWVjZWY0
15
+ MzUxYTcxN2FhM2MzZjMyZDExMDhiMTVmZGE1N2JkYTg4ZWM1MzA=
@@ -1,15 +1,15 @@
1
1
  require 'sinatra/base'
2
2
  require 'redcarpet'
3
- require 'pygments'
3
+ require 'rouge'
4
+ require 'rouge/plugins/redcarpet'
4
5
  require 'docverter'
6
+ require 'page_viewer/page'
5
7
 
6
8
  module PageViewer
7
9
 
8
- class HTMLwithPygments < Redcarpet::Render::HTML
9
- def block_code(code, language)
10
- Pygments.highlight(code, :lexer => language)
11
- end
12
-
10
+ class HTMLwithHighlights < Redcarpet::Render::HTML
11
+ include Rouge::Plugins::Redcarpet
12
+
13
13
  def postprocess(document)
14
14
  document.gsub('&#39;', "'")
15
15
  end
@@ -18,54 +18,50 @@ module PageViewer
18
18
  class App < Sinatra::Base
19
19
 
20
20
  RENDERER = Redcarpet::Markdown.new(
21
- HTMLwithPygments.new(:with_toc_data => true),
21
+ HTMLwithHighlights.new(:with_toc_data => true),
22
22
  :fenced_code_blocks => true,
23
23
  :tables => true,
24
24
  )
25
25
 
26
26
  before do
27
- Docverter.base_url = 'http://c.docverter.com'
28
- end
29
-
30
- def page_contents(page)
31
- File.read(page_path(page))
27
+ Docverter.base_url = 'http://localhost:5000'
32
28
  end
33
29
 
34
- def page_path(page)
35
- File.join(settings.page_root, page + '.md')
30
+ before '/:page' do
31
+ @page = Page.new(settings.page_root, params[:page])
36
32
  end
37
33
 
38
34
  get '/' do
39
- if File.exists?(page_path('_index'))
35
+ if File.exists?(Page.path('_index'))
40
36
  redirect '/_index'
41
37
  else
42
38
  @title = "Index"
43
- @files = Dir.glob(page_path('*')).map { |f| File.basename(f, ".md") }.sort
39
+ @files = Dir.glob(Page.path('*')).map { |f| File.basename(f, ".md") }.sort
44
40
  erb :index
45
41
  end
46
42
  end
47
43
 
48
44
  get '/:page.md' do
49
45
  content_type 'text/plain'
50
- page_contents(params[:page])
46
+ @page.body
51
47
  end
52
48
 
53
49
  get '/:page.pdf' do
54
- @content = RENDERER.render(page_contents(params[:page]))
55
- @title = params[:page].gsub('_', ' ')
50
+ @title ||= params[:page].gsub('_', ' ')
56
51
  pdf = erb :page, :layout => :pdf
57
52
  content_type 'application/pdf'
58
53
  Docverter::Conversion.run do |c|
59
- c.from = 'html'
54
+ c.from = 'markdown'
60
55
  c.to = 'pdf'
61
- c.content = pdf
56
+ c.table_of_contents = true
57
+ c.content = @page.body
62
58
  end
63
59
  end
64
60
 
65
61
  get '/:page' do
66
62
  @page_name = params[:page]
67
- @content = RENDERER.render(page_contents(params[:page]))
68
- @title = params[:page].gsub("_", " ")
63
+ @content = RENDERER.render(@page.body)
64
+ @title ||= @page.headers['title'] || params[:page].gsub("_", " ")
69
65
  erb :page
70
66
  end
71
67
  end
@@ -0,0 +1,32 @@
1
+ module PageViewer
2
+ class Page
3
+
4
+ attr_reader :root, :name, :headers, :body
5
+
6
+ def self.path(root, name)
7
+ File.join(root, name + '.md')
8
+ end
9
+
10
+ def initialize(root, name)
11
+ @root = root
12
+ @name = name
13
+ parse_page
14
+ end
15
+
16
+ def parse_page
17
+ if contents =~ /\A(---\s*\n.*?\n?)^(---\s*$\n?)(.*)/m
18
+ @headers = YAML.load($1)
19
+ @body = $3
20
+ else
21
+ @headers = {}
22
+ @body = contents
23
+ end
24
+ end
25
+
26
+ def contents
27
+ @contents ||= File.open(self.class.path(root, name), 'r:utf-8') do |file|
28
+ file.read
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,3 +1,3 @@
1
1
  module PageViewer
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.5'
3
3
  end
@@ -46,7 +46,7 @@
46
46
  }
47
47
  </style>
48
48
  <style type="text/css">
49
- <%= Pygments.css %>
49
+ <%= Rouge::Themes::Github.render %>
50
50
  </style>
51
51
  </head>
52
52
 
@@ -5,8 +5,8 @@
5
5
  <title><%= @title %></title>
6
6
  <style type="text/css">
7
7
  @page {
8
- size: 8in 8.8in;
9
- margin: 15%;
8
+ size: <%= @pdf_dimensions || "8in 8.8in" %>;
9
+ margin: <%= @pdf_margin || "15%" %>;
10
10
 
11
11
  @bottom-left {
12
12
  font-size: 60%;
@@ -24,6 +24,10 @@
24
24
  page-break-after: always;
25
25
  }
26
26
 
27
+ h1 {
28
+ page-break-before: always;
29
+ }
30
+
27
31
  .cover .title {
28
32
  font-family: helvetica, arial, sans-serif;
29
33
  border-bottom: 1px solid #CCC;
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: page_viewer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 0.0.5
6
5
  platform: ruby
7
6
  authors:
8
7
  - Pete Keen
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-06-16 00:00:00.000000000 Z
11
+ date: 2014-08-08 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: sinatra
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,23 +27,20 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: docverter
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
37
- version: 0.0.7
33
+ version: 1.0.1
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
45
- version: 0.0.7
40
+ version: 1.0.1
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: redcarpet
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,27 +48,24 @@ dependencies:
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
61
54
  version: 2.3.0
62
55
  - !ruby/object:Gem::Dependency
63
- name: pygments.rb
56
+ name: rouge
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ~>
68
60
  - !ruby/object:Gem::Version
69
- version: 0.4.2
61
+ version: 1.4.0
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ~>
76
67
  - !ruby/object:Gem::Version
77
- version: 0.4.2
68
+ version: 1.4.0
78
69
  description: Displays a directory full of markdown files in a web app
79
70
  email:
80
71
  - pete@petekeen.com
@@ -82,36 +73,36 @@ executables: []
82
73
  extensions: []
83
74
  extra_rdoc_files: []
84
75
  files:
85
- - lib/page_viewer/version.rb
76
+ - LICENSE
77
+ - README.md
86
78
  - lib/page_viewer.rb
79
+ - lib/page_viewer/page.rb
80
+ - lib/page_viewer/version.rb
87
81
  - lib/views/index.erb
88
82
  - lib/views/layout.erb
89
83
  - lib/views/page.erb
90
84
  - lib/views/pdf.erb
91
- - LICENSE
92
- - README.md
93
85
  homepage: http://www.petekeen.com
94
86
  licenses: []
87
+ metadata: {}
95
88
  post_install_message:
96
89
  rdoc_options: []
97
90
  require_paths:
98
91
  - lib
99
92
  required_ruby_version: !ruby/object:Gem::Requirement
100
- none: false
101
93
  requirements:
102
94
  - - ! '>='
103
95
  - !ruby/object:Gem::Version
104
96
  version: '0'
105
97
  required_rubygems_version: !ruby/object:Gem::Requirement
106
- none: false
107
98
  requirements:
108
99
  - - ! '>='
109
100
  - !ruby/object:Gem::Version
110
101
  version: '0'
111
102
  requirements: []
112
103
  rubyforge_project:
113
- rubygems_version: 1.8.23
104
+ rubygems_version: 2.2.2
114
105
  signing_key:
115
- specification_version: 3
106
+ specification_version: 4
116
107
  summary: A Simple Markdown Viewer
117
108
  test_files: []