page_viewer 0.0.1 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: []