postdoc 0.2.0 → 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: 992a2e72146f61bfe0312d91925d13335ec8959962c19c6427aefb8050e477ae
4
- data.tar.gz: c416947f3c790aa235f1fdc9e96f62dc6c84952c186d88e879bbacc16cf33626
3
+ metadata.gz: 529772412289f1fe24ffeedd9644f2f8799ee955c3dea07f256a33e23ca1bc51
4
+ data.tar.gz: 2b27cdf8389e6c096c1dc64f3005396542c7808e04449f79d81f1f62990b1f0a
5
5
  SHA512:
6
- metadata.gz: 0af41fee51b8552b2f8314788fb7c75898241dc1494c6772a192c249844087103dfd17fdb85ab121ad49527ef033548916790731ab501171a36694a5ec4873e8
7
- data.tar.gz: 715251ad3be74b4a8a44df09b21cbd13bd29fe523f11b7d08abdfdb81105893252034225468ad5bcbbd42e9dcf4abe311d3867a009b8b2ec6dabef4f5950c43e
6
+ metadata.gz: 948c6386bc64c6ee7d5d9423a905dfec09dbbc2a5ed80e8032817929f13e5b682ded267a4751aa3fe66cd5d38f83b66abf4ee0989f1b2a4bf2e3fb0bdc4ea9b4
7
+ data.tar.gz: ce0193c8374d7c6fb44f8196829531156b79b4684ace11d172224bc1bdcf87f089a82757344e00edad9d377d76e037d83215d482247ce30e0b115af496d9d75b
@@ -1,45 +1,67 @@
1
- require 'postdoc/postdoc_view_helper'
1
+ # frozen_string_literal: true
2
+
2
3
  require 'chrome_remote'
3
4
 
4
5
  module Postdoc
5
-
6
- class PostdocRailtie < Rails::Railtie
7
- initializer 'postdoc.register' do |_app|
8
- ActionView::Base.send :include, PostdocViewHelper
9
- end
6
+ ActionController::Renderers.add :pdf do |_filename, options|
7
+ Postdoc.render_from_string render_to_string(options), options
10
8
  end
11
9
 
12
- ActionController::Renderers.add :pdf do |filename, options|
10
+ def self.render_from_string(string, options)
13
11
  htmlfile = Tempfile.new ['input', '.html']
14
12
 
15
- htmlfile.write render_to_string(options)
13
+ htmlfile.write string
16
14
  htmlfile.flush
17
15
 
18
- # random port at 1025 or higher
19
- random_port = 1024 + Random.rand(65535 - 1024)
20
-
21
- pid = Process.spawn "chrome --remote-debugging-port=#{random_port} --headless"
22
-
23
- # FIXME
24
- sleep 1
16
+ if options[:client].nil?
17
+ # random port at 1025 or higher
18
+ random_port = 1024 + Random.rand(65_535 - 1024)
19
+ pid = Process.spawn "chrome --remote-debugging-port=#{random_port} --headless"
20
+ end
21
+
22
+ success = false
23
+ 10.times do
24
+ begin
25
+ TCPSocket.new('localhost', random_port)
26
+ success = true
27
+ break
28
+ rescue
29
+ end
30
+ sleep 1
31
+ end
32
+
33
+ return unless success
25
34
 
26
35
  begin
27
- chrome = ChromeRemote.client port: random_port
28
- chrome.send_cmd 'Page.enable'
36
+ chrome = options[:client].nil? ? ChromeRemote.client(port: random_port) : options[:client]
29
37
 
38
+ chrome.send_cmd 'Page.enable'
30
39
  chrome.send_cmd 'Page.navigate', url: "file://#{htmlfile.path}"
31
40
  chrome.wait_for 'Page.loadEventFired'
32
41
 
42
+ if options[:header_template].present? || options[:footer_template].present?
43
+ displayHeaderFooter = true
44
+ else
45
+ displayHeaderFooter = false
46
+ end
47
+
33
48
  response = chrome.send_cmd 'Page.printToPDF', {
34
49
  landscape: options[:landscape] || false,
35
50
  printBackground: true,
51
+ marginTop: options[:margin_top] || 1,
52
+ marginBottom: options[:margin_bottom] || 1,
53
+ displayHeaderFooter: displayHeaderFooter,
36
54
  headerTemplate: options[:header_template] || '',
37
- footerTemplate: options[:footer_template] || '',
55
+ footerTemplate: options[:footer_template] || ''
38
56
  }
39
57
  result = Base64.decode64 response['data']
40
58
  ensure
41
- Process.kill 'KILL', pid
42
- Process.wait pid
59
+ if options[:client].nil?
60
+ Process.kill 'KILL', pid
61
+ Process.wait pid
62
+ else
63
+ chrome.send_cmd 'Page.close'
64
+ end
43
65
 
44
66
  htmlfile.close
45
67
  htmlfile.unlink
metadata CHANGED
@@ -1,49 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postdoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Frank Groeneveld
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-15 00:00:00.000000000 Z
11
+ date: 2020-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rails
14
+ name: chrome_remote
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 4.0.0
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '6'
19
+ version: 0.2.0
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - ">="
28
25
  - !ruby/object:Gem::Version
29
- version: 4.0.0
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '6'
26
+ version: 0.2.0
33
27
  - !ruby/object:Gem::Dependency
34
- name: chrome_remote
28
+ name: rails
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
31
  - - ">="
38
32
  - !ruby/object:Gem::Version
39
- version: 0.2.0
33
+ version: 4.0.0
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '6.1'
40
37
  type: :runtime
41
38
  prerelease: false
42
39
  version_requirements: !ruby/object:Gem::Requirement
43
40
  requirements:
44
41
  - - ">="
45
42
  - !ruby/object:Gem::Version
46
- version: 0.2.0
43
+ version: 4.0.0
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '6.1'
47
47
  description: Description of Postdoc.
48
48
  email:
49
49
  - frank@ivaldi.nl
@@ -54,12 +54,11 @@ files:
54
54
  - LICENSE
55
55
  - Rakefile
56
56
  - lib/postdoc.rb
57
- - lib/postdoc/postdoc_view_helper.rb
58
57
  homepage: https://github.com/ivaldi/postdoc
59
58
  licenses:
60
59
  - BSD-2-Clause
61
60
  metadata: {}
62
- post_install_message:
61
+ post_install_message:
63
62
  rdoc_options: []
64
63
  require_paths:
65
64
  - lib
@@ -74,8 +73,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
73
  - !ruby/object:Gem::Version
75
74
  version: '0'
76
75
  requirements: []
77
- rubygems_version: 3.0.3
78
- signing_key:
76
+ rubygems_version: 3.1.4
77
+ signing_key:
79
78
  specification_version: 4
80
79
  summary: Summary of Postdoc.
81
80
  test_files: []
@@ -1,15 +0,0 @@
1
- module PostdocViewHelper
2
- def postdoc_stylesheet_link_tag(*path)
3
- content_tag :style, File.read(
4
- Rails.root.join('app', 'assets', 'stylesheets', *path)
5
- ).html_safe,
6
- type: 'text/css'
7
- end
8
-
9
- protected
10
-
11
- # include an assets from the gem app/assets folder
12
- def postdoc_gem_asset(*path)
13
- File.join(File.dirname(__FILE__), '..', '..', 'app', 'assets', *path)
14
- end
15
- end