pixelpress 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 24eff3a06b1b330d3a9618581272a409bc112f644d8b5a94d4d03f7170ffc0a9
4
- data.tar.gz: ae9057f69cc37d850d919f9857a91f8471935fce34d304230fc777fba5ad0e6e
3
+ metadata.gz: adc5a273dadf8a91499b4b7e9806fad56acbb8d26c88766d1839fa1e02b9a8a7
4
+ data.tar.gz: 16bd1a61566e8ff80fd8c7f7da1349d4a61e2768ebf1bc32ee2994f72ce97483
5
5
  SHA512:
6
- metadata.gz: 3942b17edb046e095dd4dcac758690eedc5211875a8fd61b7f99e1d347f126d3e0f2f8a3835896136ed218d454bae5a38219ea4a692953d54268701cbb2269f9
7
- data.tar.gz: e623bd0e8dcc209df47b7c9f8241e2ca2848b9449338f8511d9050da0e5b02b75e7edfbd8c6326451dda197a9f57eccb19066e492276b0302ef81cd547e59f00
6
+ metadata.gz: e1a3d1f8bcfa3fc497822885fc9c291a4d61da81200fbc541b95938bd7d8fb25a852d60f2d35fcbcd539006a3bc830b8016a8f693d6b86993727c166d2467ba1
7
+ data.tar.gz: cc584c23b2e0ffba1608e6cc984e718b9689c6d5e4a7357eb6bff244bc5da1feb79590ac321468fb4865773260c1ba54a6085e062caedf304029c23a8394c17a
@@ -11,5 +11,10 @@ jobs:
11
11
  uses: ruby/setup-ruby@v1
12
12
  with:
13
13
  bundler-cache: true
14
- - name: Lint Ruby
14
+ - name: Install dependencies
15
+ uses: awalsh128/cache-apt-pkgs-action@latest
16
+ with:
17
+ packages: weasyprint
18
+ version: 1.0
19
+ - name: Test
15
20
  run: bundle exec rspec
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.1.3
1
+ 3.1.4
data/Gemfile CHANGED
@@ -8,3 +8,4 @@ gem 'bundler'
8
8
  gem 'pry-byebug'
9
9
  gem 'rake'
10
10
  gem 'rspec', '~> 3.0'
11
+ gem 'generator_spec', '~> 0.9.3'
@@ -1,26 +1,23 @@
1
- require_relative 'fake_file'
2
-
3
1
  module Pixelpress
4
2
  class Document
5
- attr_reader :html
6
- attr_reader :file_name
3
+ attr_reader :filename
7
4
 
8
- def initialize(html, renderer, options = {})
9
- @html = html
5
+ def initialize(file, renderer, options = {})
6
+ @file = file
10
7
  @renderer = renderer
11
- @file_name = options[:file_name]
8
+ @filename = options[:filename]
9
+ end
10
+
11
+ def html
12
+ file.read
12
13
  end
13
14
 
14
15
  def pdf
15
- FakeFile.new pdf_data, original_filename: file_name
16
+ @pdf ||= renderer.render(file)
16
17
  end
17
18
 
18
19
  private
19
20
 
20
- attr_accessor :renderer
21
-
22
- def pdf_data
23
- @pdf_data ||= renderer.render(html)
24
- end
21
+ attr_accessor :renderer, :file
25
22
  end
26
23
  end
@@ -1,5 +1,5 @@
1
1
  class Pixelpress::TestRenderer
2
- def render(html)
3
- File.binread(File.join(__dir__, "test.pdf"))
2
+ def render(_)
3
+ File.open(File.join(__dir__, "test.pdf"))
4
4
  end
5
5
  end
@@ -1,7 +1,18 @@
1
- require 'weasyprint'
2
-
3
1
  class Pixelpress::WeasyPrintRenderer
4
- def render(html)
5
- WeasyPrint.new(html).to_pdf
2
+ def render(input)
3
+ output = Tempfile.new
4
+
5
+ system executable_path, input.path, output.path, exception: true
6
+ return output
7
+ end
8
+
9
+ def version
10
+ `#{executable_path} --version`.chomp.scan(/(\d+\.\d+)/).flatten.first
11
+ end
12
+
13
+ private
14
+
15
+ def executable_path
16
+ `which weasyprint`.chomp || raise(StandardError, "could not find weasyprint")
6
17
  end
7
18
  end
@@ -1,28 +1,26 @@
1
1
  module Pixelpress
2
2
  module Rendering
3
- module ClassMethods
4
- attr_writer :default_renderer
5
- def default_renderer
6
- @default_renderer ||= WeasyPrintRenderer.new
7
- end
8
- end
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ class_attribute :renderer, default: WeasyPrintRenderer.new
9
7
 
10
- def self.included(base)
11
- base.extend(ClassMethods)
12
- end
13
-
14
- def document
15
- @document ||= Document.new render_to_string(template), renderer, file_name: try(:file_name)
16
- end
17
-
18
- protected
8
+ def document
9
+ @document ||= begin
10
+ file = Tempfile.new
11
+ file.write render_to_string(template)
12
+ file.rewind
13
+ Document.new file, renderer, filename: (try(:filename) || try(:file_name))
14
+ end
15
+ end
19
16
 
20
- def renderer
21
- @renderer || self.class.default_renderer
22
- end
17
+ protected
18
+
19
+ delegate :renderer, to: :class
23
20
 
24
- def template
25
- ['printers', controller_path.sub('_printer', ''), @template_name].join('/')
21
+ def template
22
+ ['printers', controller_path.sub('_printer', ''), @template_name].join('/')
23
+ end
26
24
  end
27
25
  end
28
26
  end
@@ -1,3 +1,3 @@
1
1
  module Pixelpress
2
- VERSION = '0.2.3'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
data/pixelpress.gemspec CHANGED
@@ -6,8 +6,8 @@ require 'pixelpress/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'pixelpress'
8
8
  spec.version = Pixelpress::VERSION
9
- spec.authors = ['Alex']
10
- spec.email = ['aleksandra@nerdgeschoss.de']
9
+ spec.authors = ['Alex', 'Jens Ravens']
10
+ spec.email = ['aleksandra@nerdgeschoss.de', 'jens@nerdgeschoss.de']
11
11
 
12
12
  spec.summary = 'PDF printer'
13
13
  spec.homepage = 'https://github.com/nerdgeschoss/pixelpress'
@@ -21,6 +21,5 @@ Gem::Specification.new do |spec|
21
21
  spec.require_paths = ['lib']
22
22
 
23
23
  spec.add_dependency 'actionpack'
24
- spec.add_dependency 'weasyprint'
25
- spec.add_dependency 'generator_spec', '~> 0.9.3'
24
+ spec.add_dependency 'activesupport'
26
25
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pixelpress
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex
8
+ - Jens Ravens
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2023-01-24 00:00:00.000000000 Z
12
+ date: 2024-05-14 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: actionpack
@@ -25,7 +26,7 @@ dependencies:
25
26
  - !ruby/object:Gem::Version
26
27
  version: '0'
27
28
  - !ruby/object:Gem::Dependency
28
- name: weasyprint
29
+ name: activesupport
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
32
  - - ">="
@@ -38,23 +39,10 @@ dependencies:
38
39
  - - ">="
39
40
  - !ruby/object:Gem::Version
40
41
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: generator_spec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: 0.9.3
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: 0.9.3
55
42
  description:
56
43
  email:
57
44
  - aleksandra@nerdgeschoss.de
45
+ - jens@nerdgeschoss.de
58
46
  executables: []
59
47
  extensions: []
60
48
  extra_rdoc_files: []
@@ -72,7 +60,6 @@ files:
72
60
  - app/views/pixelpress/printers/index.html.erb
73
61
  - bin/console
74
62
  - bin/setup
75
- - bundle
76
63
  - config/routes.rb
77
64
  - lib/generators/pixelpress/printer/USAGE
78
65
  - lib/generators/pixelpress/printer/printer_generator.rb
@@ -88,7 +75,6 @@ files:
88
75
  - lib/pixelpress/base.rb
89
76
  - lib/pixelpress/document.rb
90
77
  - lib/pixelpress/engine.rb
91
- - lib/pixelpress/fake_file.rb
92
78
  - lib/pixelpress/instance_invocation.rb
93
79
  - lib/pixelpress/preview.rb
94
80
  - lib/pixelpress/renderers/test.pdf
data/bundle DELETED
File without changes
@@ -1,19 +0,0 @@
1
- module Pixelpress
2
- class FakeFile < StringIO
3
- attr_accessor :original_filename, :content_type
4
-
5
- def initialize(data, options = {})
6
- @original_filename = options[:original_filename]
7
- @content_type = options[:content_type]
8
- super data
9
- end
10
-
11
- def original_filename
12
- @original_filename || "document.pdf"
13
- end
14
-
15
- def content_type
16
- @content_type || "application/pdf"
17
- end
18
- end
19
- end