slim2pdf 0.0.3 → 0.0.8
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.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/.travis.yml +3 -2
- data/doc/examples/agreement/script.rb +1 -1
- data/lib/slim2pdf.rb +7 -7
- data/lib/slim2pdf/version.rb +1 -1
- data/lib/slim2pdf/writer.rb +30 -24
- data/slim2pdf.gemspec +4 -3
- data/test/writer_test.rb +20 -20
- metadata +42 -47
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 9814f702d186324bae874a073b16882f961d9a8d58346de02ad5469de30ff9b9
|
4
|
+
data.tar.gz: a94b7e0e7b748ee5136fdb4e5f20fe931c74e97ff23311330f90a1789312c3f7
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 848d253708c820a5382430b2f0ab2438af90095a5bc61f0995320a8c07e2dd044f9c34daabeb58372a980ab7ae7db3ca0d15d3e4692d3ef05e47209ab57312f2
|
7
|
+
data.tar.gz: 0ab7dcb15ddee0b7d7708ea0b6c3bd3cf392b7b7e86e73633d3f264bab2c904b8376a1806e0dd882affe989d6481ce281da0c9cba1e781c4528f0a8e2e895660
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -2,6 +2,6 @@ require 'slim2pdf'
|
|
2
2
|
|
3
3
|
writer = Slim2pdf::Writer.new
|
4
4
|
writer.template = 'doc/examples/agreement/template.slim'
|
5
|
-
writer.data = {date: '2014-01-14', part1: 'Google', part2: 'Microsoft'}
|
5
|
+
writer.data = { date: '2014-01-14', part1: 'Google', part2: 'Microsoft' }
|
6
6
|
writer.footer_text = 'Agreement footer'
|
7
7
|
writer.save_to_pdf('doc/examples/agreement/output.pdf')
|
data/lib/slim2pdf.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
1
|
+
require 'slim2pdf/version'
|
2
|
+
require 'slim'
|
3
|
+
require 'ostruct'
|
4
|
+
require 'fileutils'
|
5
|
+
require 'pathname'
|
6
|
+
require 'tempfile'
|
7
|
+
require 'slim2pdf/writer'
|
data/lib/slim2pdf/version.rb
CHANGED
data/lib/slim2pdf/writer.rb
CHANGED
@@ -1,13 +1,16 @@
|
|
1
1
|
module Slim2pdf
|
2
2
|
class Writer
|
3
3
|
attr_accessor :template, :data
|
4
|
-
attr_accessor :wkhtmltopdf_path
|
4
|
+
attr_accessor :wkhtmltopdf_path
|
5
|
+
attr_writer :wkhtmltopdf_command
|
5
6
|
attr_accessor :footer_text, :footer_font, :footer_font_size
|
6
|
-
|
7
|
+
attr_writer :logger
|
7
8
|
|
8
|
-
def initialize(template=nil, data={})
|
9
|
+
def initialize(template = nil, data = {})
|
9
10
|
@template = template
|
10
11
|
@data = data
|
12
|
+
@wkhtmltopdf_path = nil
|
13
|
+
@wkhtmltopdf_command = nil
|
11
14
|
end
|
12
15
|
|
13
16
|
def render_to_html
|
@@ -38,33 +41,36 @@ module Slim2pdf
|
|
38
41
|
|
39
42
|
def logger
|
40
43
|
@logger ||= defined?(Rails) ? Rails.logger : nil
|
44
|
+
rescue NoMethodError
|
45
|
+
nil
|
41
46
|
end
|
42
47
|
|
43
48
|
private
|
44
|
-
# Change hash data to scope object
|
45
|
-
def scope
|
46
|
-
OpenStruct.new(data)
|
47
|
-
end
|
48
49
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
50
|
+
# Change hash data to scope object
|
51
|
+
def scope
|
52
|
+
OpenStruct.new(data)
|
53
|
+
end
|
53
54
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
ensure
|
59
|
-
tmp.close
|
60
|
-
end
|
61
|
-
tmp
|
62
|
-
end
|
55
|
+
# Create dir if not exists
|
56
|
+
def create_dir(path)
|
57
|
+
FileUtils.mkdir_p(Pathname.new(path).dirname)
|
58
|
+
end
|
63
59
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
60
|
+
def create_tmp_html
|
61
|
+
tmp = Tempfile.new ['slim2pdf', '.html']
|
62
|
+
begin
|
63
|
+
tmp.write render_to_html
|
64
|
+
ensure
|
65
|
+
tmp.close
|
68
66
|
end
|
67
|
+
tmp
|
68
|
+
end
|
69
|
+
|
70
|
+
def footer_params
|
71
|
+
return unless footer_text
|
72
|
+
"--footer-line --footer-font-name '#{footer_font || 'verdana'}' " +
|
73
|
+
"--footer-font-size '#{footer_font_size || 10}' --footer-left '#{footer_text}'"
|
74
|
+
end
|
69
75
|
end
|
70
76
|
end
|
data/slim2pdf.gemspec
CHANGED
@@ -18,10 +18,11 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler"
|
21
|
+
spec.add_development_dependency "bundler"
|
22
22
|
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "minitest"
|
23
24
|
spec.add_development_dependency "simplecov"
|
24
25
|
|
25
|
-
spec.add_dependency 'slim', '~>
|
26
|
-
spec.add_dependency "wkhtmltopdf-binary",
|
26
|
+
spec.add_dependency 'slim', '~> 4.0'
|
27
|
+
spec.add_dependency "wkhtmltopdf-binary", '~> 0.12'
|
27
28
|
end
|
data/test/writer_test.rb
CHANGED
@@ -3,9 +3,9 @@ require 'logger'
|
|
3
3
|
require 'stringio'
|
4
4
|
|
5
5
|
module Slim2pdf
|
6
|
-
class WriterTest <
|
6
|
+
class WriterTest < Minitest::Test
|
7
7
|
def setup
|
8
|
-
@data = {title: 'Slim2pdf', content: 'Slim to PDF conversion gem'}
|
8
|
+
@data = { title: 'Slim2pdf', content: 'Slim to PDF conversion gem' }
|
9
9
|
@template = File.expand_path('../tpl/test.slim', __FILE__)
|
10
10
|
@writer = Writer.new(@template, @data)
|
11
11
|
end
|
@@ -29,36 +29,36 @@ module Slim2pdf
|
|
29
29
|
|
30
30
|
def test_render_to_html
|
31
31
|
html = @writer.render_to_html
|
32
|
-
assert_match %r
|
33
|
-
assert_match %r
|
32
|
+
assert_match %r{<title>Slim2pdf</title>}, html
|
33
|
+
assert_match %r{<p>Slim to PDF conversion gem</p>}, html
|
34
34
|
end
|
35
35
|
|
36
36
|
def test_save_to_html
|
37
37
|
path = '/tmp/test.html'
|
38
38
|
@writer.save_to_html(path)
|
39
|
-
assert File.
|
39
|
+
assert File.exist?(path)
|
40
40
|
html = File.read(path)
|
41
|
-
assert_match %r
|
42
|
-
assert_match %r
|
41
|
+
assert_match %r{<title>Slim2pdf</title>}, html
|
42
|
+
assert_match %r{<p>Slim to PDF conversion gem</p>}, html
|
43
43
|
File.unlink(path)
|
44
|
-
assert_equal false, File.
|
44
|
+
assert_equal false, File.exist?(path)
|
45
45
|
end
|
46
46
|
|
47
47
|
def test_save_to_html_with_dir_creation
|
48
48
|
path = '/tmp/a/b/c/test.html'
|
49
49
|
@writer.save_to_html(path)
|
50
50
|
html = File.read(path)
|
51
|
-
assert_match
|
51
|
+
assert_match(/<html>/, html)
|
52
52
|
FileUtils.rm_rf('/tmp/a')
|
53
|
-
assert_equal false, File.
|
53
|
+
assert_equal false, File.exist?('/tmp/a')
|
54
54
|
end
|
55
55
|
|
56
56
|
def test_save_to_pdf
|
57
57
|
path = '/tmp/test.pdf'
|
58
58
|
@writer.save_to_pdf(path)
|
59
|
-
assert File.
|
59
|
+
assert File.exist?(path)
|
60
60
|
File.unlink(path)
|
61
|
-
assert_equal false, File.
|
61
|
+
assert_equal false, File.exist?(path)
|
62
62
|
end
|
63
63
|
|
64
64
|
def test_wkhtmltopdf_path
|
@@ -76,14 +76,14 @@ module Slim2pdf
|
|
76
76
|
def test_footer_params
|
77
77
|
@writer.footer_text = 'Footer'
|
78
78
|
command = @writer.wkhtmltopdf_command
|
79
|
-
assert_match
|
80
|
-
assert_match
|
81
|
-
assert_match
|
79
|
+
assert_match(/Footer/, command)
|
80
|
+
assert_match(/10/, command)
|
81
|
+
assert_match(/verdana/, command)
|
82
82
|
@writer.footer_font = 'arial'
|
83
83
|
@writer.footer_font_size = 14
|
84
84
|
command = @writer.wkhtmltopdf_command
|
85
|
-
assert_match
|
86
|
-
assert_match
|
85
|
+
assert_match(/14/, command)
|
86
|
+
assert_match(/arial/, command)
|
87
87
|
end
|
88
88
|
|
89
89
|
def test_logger_accessor
|
@@ -102,9 +102,9 @@ module Slim2pdf
|
|
102
102
|
@writer.save_to_pdf('/tmp/out.pdf')
|
103
103
|
File.unlink('/tmp/out.pdf')
|
104
104
|
log = sio.string
|
105
|
-
assert_match %r
|
106
|
-
assert_match %r
|
107
|
-
assert_match
|
105
|
+
assert_match %r{/tmp/out.html}, log
|
106
|
+
assert_match %r{/tmp/out.pdf}, log
|
107
|
+
assert_match(/Run command: wkhtmltopdf/, log)
|
108
108
|
end
|
109
109
|
end
|
110
110
|
end
|
metadata
CHANGED
@@ -1,96 +1,99 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slim2pdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.8
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Piotr Macuk
|
9
|
-
autorequire:
|
8
|
+
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2020-10-28 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
19
|
+
version: '0'
|
22
20
|
type: :development
|
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
|
29
|
-
version: '
|
26
|
+
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
36
46
|
- !ruby/object:Gem::Version
|
37
47
|
version: '0'
|
38
48
|
type: :development
|
39
49
|
prerelease: false
|
40
50
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
51
|
requirements:
|
43
|
-
- -
|
52
|
+
- - ">="
|
44
53
|
- !ruby/object:Gem::Version
|
45
54
|
version: '0'
|
46
55
|
- !ruby/object:Gem::Dependency
|
47
56
|
name: simplecov
|
48
57
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
58
|
requirements:
|
51
|
-
- -
|
59
|
+
- - ">="
|
52
60
|
- !ruby/object:Gem::Version
|
53
61
|
version: '0'
|
54
62
|
type: :development
|
55
63
|
prerelease: false
|
56
64
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
65
|
requirements:
|
59
|
-
- -
|
66
|
+
- - ">="
|
60
67
|
- !ruby/object:Gem::Version
|
61
68
|
version: '0'
|
62
69
|
- !ruby/object:Gem::Dependency
|
63
70
|
name: slim
|
64
71
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
72
|
requirements:
|
67
|
-
- - ~>
|
73
|
+
- - "~>"
|
68
74
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
75
|
+
version: '4.0'
|
70
76
|
type: :runtime
|
71
77
|
prerelease: false
|
72
78
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
79
|
requirements:
|
75
|
-
- - ~>
|
80
|
+
- - "~>"
|
76
81
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
82
|
+
version: '4.0'
|
78
83
|
- !ruby/object:Gem::Dependency
|
79
84
|
name: wkhtmltopdf-binary
|
80
85
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
86
|
requirements:
|
83
|
-
- - ~>
|
87
|
+
- - "~>"
|
84
88
|
- !ruby/object:Gem::Version
|
85
|
-
version: 0.
|
89
|
+
version: '0.12'
|
86
90
|
type: :runtime
|
87
91
|
prerelease: false
|
88
92
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
93
|
requirements:
|
91
|
-
- - ~>
|
94
|
+
- - "~>"
|
92
95
|
- !ruby/object:Gem::Version
|
93
|
-
version: 0.
|
96
|
+
version: '0.12'
|
94
97
|
description: Slim2pdf renders slim template with data hash and save the results as
|
95
98
|
pdf file.
|
96
99
|
email:
|
@@ -99,8 +102,8 @@ executables: []
|
|
99
102
|
extensions: []
|
100
103
|
extra_rdoc_files: []
|
101
104
|
files:
|
102
|
-
- .gitignore
|
103
|
-
- .travis.yml
|
105
|
+
- ".gitignore"
|
106
|
+
- ".travis.yml"
|
104
107
|
- Gemfile
|
105
108
|
- LICENSE.txt
|
106
109
|
- README.md
|
@@ -127,33 +130,25 @@ files:
|
|
127
130
|
homepage: ''
|
128
131
|
licenses:
|
129
132
|
- MIT
|
130
|
-
|
133
|
+
metadata: {}
|
134
|
+
post_install_message:
|
131
135
|
rdoc_options: []
|
132
136
|
require_paths:
|
133
137
|
- lib
|
134
138
|
required_ruby_version: !ruby/object:Gem::Requirement
|
135
|
-
none: false
|
136
139
|
requirements:
|
137
|
-
- -
|
140
|
+
- - ">="
|
138
141
|
- !ruby/object:Gem::Version
|
139
142
|
version: '0'
|
140
|
-
segments:
|
141
|
-
- 0
|
142
|
-
hash: 3380417682014750478
|
143
143
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
144
|
-
none: false
|
145
144
|
requirements:
|
146
|
-
- -
|
145
|
+
- - ">="
|
147
146
|
- !ruby/object:Gem::Version
|
148
147
|
version: '0'
|
149
|
-
segments:
|
150
|
-
- 0
|
151
|
-
hash: 3380417682014750478
|
152
148
|
requirements: []
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
specification_version: 3
|
149
|
+
rubygems_version: 3.0.8
|
150
|
+
signing_key:
|
151
|
+
specification_version: 4
|
157
152
|
summary: Slim template to pdf file conversion tool.
|
158
153
|
test_files:
|
159
154
|
- test/test_helper.rb
|