pixelpress 0.2.3 → 0.3.0

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 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