pdfcraft 0.0.1

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.
Files changed (55) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +65 -0
  4. data/Rakefile +32 -0
  5. data/lib/pdfcraft.rb +5 -0
  6. data/lib/pdfcraft/document.rb +42 -0
  7. data/lib/pdfcraft/pdf_renderer.rb +6 -0
  8. data/lib/pdfcraft/pdf_template_handler.rb +17 -0
  9. data/lib/pdfcraft/version.rb +3 -0
  10. data/lib/tasks/pdfcraft_tasks.rake +4 -0
  11. data/test/dummy/README.rdoc +28 -0
  12. data/test/dummy/Rakefile +6 -0
  13. data/test/dummy/app/assets/javascripts/application.js +13 -0
  14. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  15. data/test/dummy/app/controllers/application_controller.rb +5 -0
  16. data/test/dummy/app/controllers/home_controller.rb +25 -0
  17. data/test/dummy/app/helpers/application_helper.rb +7 -0
  18. data/test/dummy/app/views/home/_the_partial.pdf.pdfcraft +3 -0
  19. data/test/dummy/app/views/home/helpers.pdf.pdfcraft +1 -0
  20. data/test/dummy/app/views/home/index.pdf.pdfcraft +1 -0
  21. data/test/dummy/app/views/home/partials.pdf.pdfcraft +4 -0
  22. data/test/dummy/app/views/home/pdf_layout.pdf.pdfcraft +3 -0
  23. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  24. data/test/dummy/bin/bundle +3 -0
  25. data/test/dummy/bin/rails +4 -0
  26. data/test/dummy/bin/rake +4 -0
  27. data/test/dummy/config.ru +4 -0
  28. data/test/dummy/config/application.rb +23 -0
  29. data/test/dummy/config/boot.rb +5 -0
  30. data/test/dummy/config/database.yml +25 -0
  31. data/test/dummy/config/environment.rb +5 -0
  32. data/test/dummy/config/environments/development.rb +29 -0
  33. data/test/dummy/config/environments/production.rb +80 -0
  34. data/test/dummy/config/environments/test.rb +36 -0
  35. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  36. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  37. data/test/dummy/config/initializers/inflections.rb +16 -0
  38. data/test/dummy/config/initializers/mime_types.rb +5 -0
  39. data/test/dummy/config/initializers/secret_token.rb +12 -0
  40. data/test/dummy/config/initializers/session_store.rb +3 -0
  41. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  42. data/test/dummy/config/locales/en.yml +23 -0
  43. data/test/dummy/config/routes.rb +7 -0
  44. data/test/dummy/db/development.sqlite3 +0 -0
  45. data/test/dummy/db/test.sqlite3 +0 -0
  46. data/test/dummy/log/development.log +90 -0
  47. data/test/dummy/log/test.log +4165 -0
  48. data/test/dummy/public/404.html +58 -0
  49. data/test/dummy/public/422.html +58 -0
  50. data/test/dummy/public/500.html +57 -0
  51. data/test/dummy/public/favicon.ico +0 -0
  52. data/test/integration/pdf_rendering_test.rb +55 -0
  53. data/test/pdfcraft_test.rb +7 -0
  54. data/test/test_helper.rb +15 -0
  55. metadata +211 -0
@@ -0,0 +1,58 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style>
6
+ body {
7
+ background-color: #EFEFEF;
8
+ color: #2E2F30;
9
+ text-align: center;
10
+ font-family: arial, sans-serif;
11
+ }
12
+
13
+ div.dialog {
14
+ width: 25em;
15
+ margin: 4em auto 0 auto;
16
+ border: 1px solid #CCC;
17
+ border-right-color: #999;
18
+ border-left-color: #999;
19
+ border-bottom-color: #BBB;
20
+ border-top: #B00100 solid 4px;
21
+ border-top-left-radius: 9px;
22
+ border-top-right-radius: 9px;
23
+ background-color: white;
24
+ padding: 7px 4em 0 4em;
25
+ }
26
+
27
+ h1 {
28
+ font-size: 100%;
29
+ color: #730E15;
30
+ line-height: 1.5em;
31
+ }
32
+
33
+ body > p {
34
+ width: 33em;
35
+ margin: 0 auto 1em;
36
+ padding: 1em 0;
37
+ background-color: #F7F7F7;
38
+ border: 1px solid #CCC;
39
+ border-right-color: #999;
40
+ border-bottom-color: #999;
41
+ border-bottom-left-radius: 4px;
42
+ border-bottom-right-radius: 4px;
43
+ border-top-color: #DADADA;
44
+ color: #666;
45
+ box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
46
+ }
47
+ </style>
48
+ </head>
49
+
50
+ <body>
51
+ <!-- This file lives in public/404.html -->
52
+ <div class="dialog">
53
+ <h1>The page you were looking for doesn't exist.</h1>
54
+ <p>You may have mistyped the address or the page may have moved.</p>
55
+ </div>
56
+ <p>If you are the application owner check the logs for more information.</p>
57
+ </body>
58
+ </html>
@@ -0,0 +1,58 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style>
6
+ body {
7
+ background-color: #EFEFEF;
8
+ color: #2E2F30;
9
+ text-align: center;
10
+ font-family: arial, sans-serif;
11
+ }
12
+
13
+ div.dialog {
14
+ width: 25em;
15
+ margin: 4em auto 0 auto;
16
+ border: 1px solid #CCC;
17
+ border-right-color: #999;
18
+ border-left-color: #999;
19
+ border-bottom-color: #BBB;
20
+ border-top: #B00100 solid 4px;
21
+ border-top-left-radius: 9px;
22
+ border-top-right-radius: 9px;
23
+ background-color: white;
24
+ padding: 7px 4em 0 4em;
25
+ }
26
+
27
+ h1 {
28
+ font-size: 100%;
29
+ color: #730E15;
30
+ line-height: 1.5em;
31
+ }
32
+
33
+ body > p {
34
+ width: 33em;
35
+ margin: 0 auto 1em;
36
+ padding: 1em 0;
37
+ background-color: #F7F7F7;
38
+ border: 1px solid #CCC;
39
+ border-right-color: #999;
40
+ border-bottom-color: #999;
41
+ border-bottom-left-radius: 4px;
42
+ border-bottom-right-radius: 4px;
43
+ border-top-color: #DADADA;
44
+ color: #666;
45
+ box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
46
+ }
47
+ </style>
48
+ </head>
49
+
50
+ <body>
51
+ <!-- This file lives in public/422.html -->
52
+ <div class="dialog">
53
+ <h1>The change you wanted was rejected.</h1>
54
+ <p>Maybe you tried to change something you didn't have access to.</p>
55
+ </div>
56
+ <p>If you are the application owner check the logs for more information.</p>
57
+ </body>
58
+ </html>
@@ -0,0 +1,57 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style>
6
+ body {
7
+ background-color: #EFEFEF;
8
+ color: #2E2F30;
9
+ text-align: center;
10
+ font-family: arial, sans-serif;
11
+ }
12
+
13
+ div.dialog {
14
+ width: 25em;
15
+ margin: 4em auto 0 auto;
16
+ border: 1px solid #CCC;
17
+ border-right-color: #999;
18
+ border-left-color: #999;
19
+ border-bottom-color: #BBB;
20
+ border-top: #B00100 solid 4px;
21
+ border-top-left-radius: 9px;
22
+ border-top-right-radius: 9px;
23
+ background-color: white;
24
+ padding: 7px 4em 0 4em;
25
+ }
26
+
27
+ h1 {
28
+ font-size: 100%;
29
+ color: #730E15;
30
+ line-height: 1.5em;
31
+ }
32
+
33
+ body > p {
34
+ width: 33em;
35
+ margin: 0 auto 1em;
36
+ padding: 1em 0;
37
+ background-color: #F7F7F7;
38
+ border: 1px solid #CCC;
39
+ border-right-color: #999;
40
+ border-bottom-color: #999;
41
+ border-bottom-left-radius: 4px;
42
+ border-bottom-right-radius: 4px;
43
+ border-top-color: #DADADA;
44
+ color: #666;
45
+ box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
46
+ }
47
+ </style>
48
+ </head>
49
+
50
+ <body>
51
+ <!-- This file lives in public/500.html -->
52
+ <div class="dialog">
53
+ <h1>We're sorry, but something went wrong.</h1>
54
+ </div>
55
+ <p>If you are the application owner check the logs for more information.</p>
56
+ </body>
57
+ </html>
File without changes
@@ -0,0 +1,55 @@
1
+ require 'test_helper'
2
+
3
+ class PdfRenderingTest < ActionDispatch::IntegrationTest
4
+
5
+ test "pdf request sends a pdf as a file" do
6
+ get home_path(format: :pdf)
7
+
8
+ assert_match "PDF", response.body
9
+ assert_equal "binary", headers["Content-Transfer-Encoding"]
10
+ assert_equal 'inline; filename="contents.pdf"', headers["Content-Disposition"]
11
+ assert_equal "application/pdf", headers["Content-Type"]
12
+ end
13
+
14
+ test "pdf renderer uses the specified template" do
15
+ get another_path(format: :pdf)
16
+
17
+ assert_match "PDF", response.body
18
+ assert_equal "binary", headers["Content-Transfer-Encoding"]
19
+ assert_equal "inline; filename=\"contents.pdf\"", headers["Content-Disposition"]
20
+ assert_equal "application/pdf", headers["Content-Type"]
21
+ end
22
+
23
+ test "pdf rendering can use partials" do
24
+ get partials_path(format: :pdf)
25
+
26
+ assert_match "PDF", response.body
27
+ assert_equal "binary", headers["Content-Transfer-Encoding"]
28
+ assert_equal "inline; filename=\"contents.pdf\"", headers["Content-Disposition"]
29
+ assert_equal "application/pdf", headers["Content-Type"]
30
+ assert_match "I was rendered in a partial", pdf.page(1).text
31
+ end
32
+
33
+ test "pdf rendering can access helpers" do
34
+ get helpers_path(format: :pdf)
35
+
36
+ assert_match "PDF", response.body
37
+ assert_equal "binary", headers["Content-Transfer-Encoding"]
38
+ assert_equal "inline; filename=\"contents.pdf\"", headers["Content-Disposition"]
39
+ assert_equal "application/pdf", headers["Content-Type"]
40
+ assert_match "This string came from a helper", pdf.page(1).text
41
+ end
42
+
43
+ test "pdf layout can be set in view" do
44
+ get pdf_layout_path(format: :pdf)
45
+
46
+ assert_match "PDF", response.body
47
+ assert_equal [0,0,792,612].map(&:to_f), pdf.page(1).attributes[:MediaBox]
48
+ end
49
+
50
+ private
51
+
52
+ def pdf
53
+ @pdf ||= PDF::Reader.new(StringIO.new(response.body))
54
+ end
55
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class PdfcraftTest < ActiveSupport::TestCase
4
+ test "truth" do
5
+ assert_kind_of Module, Pdfcraft
6
+ end
7
+ end
@@ -0,0 +1,15 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
+ require "rails/test_help"
6
+
7
+ Rails.backtrace_cleaner.remove_silencers!
8
+
9
+ # Load support files
10
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
11
+
12
+ # Load fixtures from the engine
13
+ if ActiveSupport::TestCase.method_defined?(:fixture_path=)
14
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
15
+ end
metadata ADDED
@@ -0,0 +1,211 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pdfcraft
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Ryan L. Bell
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-01-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 4.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 4.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: prawn
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '0.13'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '0.13'
41
+ - !ruby/object:Gem::Dependency
42
+ name: sqlite3
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: guard
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard-minitest
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: PDFCraft adds templated rendering of PDF documents to Rails. Now PDF
84
+ generation of a resource can work just like HTML, XML builders, or JSON.
85
+ email:
86
+ - ryan.l.bell@gmail.com
87
+ executables: []
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - MIT-LICENSE
92
+ - README.rdoc
93
+ - Rakefile
94
+ - lib/pdfcraft.rb
95
+ - lib/pdfcraft/document.rb
96
+ - lib/pdfcraft/pdf_renderer.rb
97
+ - lib/pdfcraft/pdf_template_handler.rb
98
+ - lib/pdfcraft/version.rb
99
+ - lib/tasks/pdfcraft_tasks.rake
100
+ - test/dummy/README.rdoc
101
+ - test/dummy/Rakefile
102
+ - test/dummy/app/assets/javascripts/application.js
103
+ - test/dummy/app/assets/stylesheets/application.css
104
+ - test/dummy/app/controllers/application_controller.rb
105
+ - test/dummy/app/controllers/home_controller.rb
106
+ - test/dummy/app/helpers/application_helper.rb
107
+ - test/dummy/app/views/home/_the_partial.pdf.pdfcraft
108
+ - test/dummy/app/views/home/helpers.pdf.pdfcraft
109
+ - test/dummy/app/views/home/index.pdf.pdfcraft
110
+ - test/dummy/app/views/home/partials.pdf.pdfcraft
111
+ - test/dummy/app/views/home/pdf_layout.pdf.pdfcraft
112
+ - test/dummy/app/views/layouts/application.html.erb
113
+ - test/dummy/bin/bundle
114
+ - test/dummy/bin/rails
115
+ - test/dummy/bin/rake
116
+ - test/dummy/config.ru
117
+ - test/dummy/config/application.rb
118
+ - test/dummy/config/boot.rb
119
+ - test/dummy/config/database.yml
120
+ - test/dummy/config/environment.rb
121
+ - test/dummy/config/environments/development.rb
122
+ - test/dummy/config/environments/production.rb
123
+ - test/dummy/config/environments/test.rb
124
+ - test/dummy/config/initializers/backtrace_silencers.rb
125
+ - test/dummy/config/initializers/filter_parameter_logging.rb
126
+ - test/dummy/config/initializers/inflections.rb
127
+ - test/dummy/config/initializers/mime_types.rb
128
+ - test/dummy/config/initializers/secret_token.rb
129
+ - test/dummy/config/initializers/session_store.rb
130
+ - test/dummy/config/initializers/wrap_parameters.rb
131
+ - test/dummy/config/locales/en.yml
132
+ - test/dummy/config/routes.rb
133
+ - test/dummy/db/development.sqlite3
134
+ - test/dummy/db/test.sqlite3
135
+ - test/dummy/log/development.log
136
+ - test/dummy/log/test.log
137
+ - test/dummy/public/404.html
138
+ - test/dummy/public/422.html
139
+ - test/dummy/public/500.html
140
+ - test/dummy/public/favicon.ico
141
+ - test/integration/pdf_rendering_test.rb
142
+ - test/pdfcraft_test.rb
143
+ - test/test_helper.rb
144
+ homepage: http://github.com/kofno/pdfcraft
145
+ licenses: []
146
+ metadata: {}
147
+ post_install_message:
148
+ rdoc_options: []
149
+ require_paths:
150
+ - lib
151
+ required_ruby_version: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - '>='
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ required_rubygems_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - '>='
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ requirements: []
162
+ rubyforge_project:
163
+ rubygems_version: 2.2.0
164
+ signing_key:
165
+ specification_version: 4
166
+ summary: Templated PDF generation for Rails
167
+ test_files:
168
+ - test/dummy/app/assets/javascripts/application.js
169
+ - test/dummy/app/assets/stylesheets/application.css
170
+ - test/dummy/app/controllers/application_controller.rb
171
+ - test/dummy/app/controllers/home_controller.rb
172
+ - test/dummy/app/helpers/application_helper.rb
173
+ - test/dummy/app/views/home/_the_partial.pdf.pdfcraft
174
+ - test/dummy/app/views/home/helpers.pdf.pdfcraft
175
+ - test/dummy/app/views/home/index.pdf.pdfcraft
176
+ - test/dummy/app/views/home/partials.pdf.pdfcraft
177
+ - test/dummy/app/views/home/pdf_layout.pdf.pdfcraft
178
+ - test/dummy/app/views/layouts/application.html.erb
179
+ - test/dummy/bin/bundle
180
+ - test/dummy/bin/rails
181
+ - test/dummy/bin/rake
182
+ - test/dummy/config/application.rb
183
+ - test/dummy/config/boot.rb
184
+ - test/dummy/config/database.yml
185
+ - test/dummy/config/environment.rb
186
+ - test/dummy/config/environments/development.rb
187
+ - test/dummy/config/environments/production.rb
188
+ - test/dummy/config/environments/test.rb
189
+ - test/dummy/config/initializers/backtrace_silencers.rb
190
+ - test/dummy/config/initializers/filter_parameter_logging.rb
191
+ - test/dummy/config/initializers/inflections.rb
192
+ - test/dummy/config/initializers/mime_types.rb
193
+ - test/dummy/config/initializers/secret_token.rb
194
+ - test/dummy/config/initializers/session_store.rb
195
+ - test/dummy/config/initializers/wrap_parameters.rb
196
+ - test/dummy/config/locales/en.yml
197
+ - test/dummy/config/routes.rb
198
+ - test/dummy/config.ru
199
+ - test/dummy/db/development.sqlite3
200
+ - test/dummy/db/test.sqlite3
201
+ - test/dummy/log/development.log
202
+ - test/dummy/log/test.log
203
+ - test/dummy/public/404.html
204
+ - test/dummy/public/422.html
205
+ - test/dummy/public/500.html
206
+ - test/dummy/public/favicon.ico
207
+ - test/dummy/Rakefile
208
+ - test/dummy/README.rdoc
209
+ - test/integration/pdf_rendering_test.rb
210
+ - test/pdfcraft_test.rb
211
+ - test/test_helper.rb