mn2pdf 1.34 → 1.41

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: 6710166bd3dd09708552b3ff121b7c6ac72c4177e06d0e70b15505d7be3ec6bb
4
- data.tar.gz: 9b7dd555669aa93472086ded118286ea1b1c5414647bc456e2c04c25d348a53f
3
+ metadata.gz: 4a0c240f5a70e4ac365e0a73680af079529857cf58260bfa430dd84367b73e0c
4
+ data.tar.gz: a327cd5eca2ee959345b8c32701868d24082fb9e2718f52ec7191c9b43e17547
5
5
  SHA512:
6
- metadata.gz: d23b6e8db7771fa842ef76496e2e60c26deca2e992cc28823cb653f29cbe621cc75db447521a6be6ae1fbe3b058d06bbe6754756e9af3763bdd8afe4b766bf42
7
- data.tar.gz: 59ef4ef16510648f6ffc95e078a339def1b41c3e8c4fda72a8e22c4055bd7cf3161ed8971e97dc4d7d50f5332975fbbf95d2d91571b6d585b674cefbf6fef3b4
6
+ metadata.gz: a11c040d8123f84e6686d42021fbcc51d72d3a17d16a1af762f0d5d895b0d1f557f9bb39d1cf40d6fb883fcffa3197fcf0ff8af54779e5786fc683eca603b287
7
+ data.tar.gz: aed4221c3d24355f347d5a89fdba8c45a8ff8a8eb06e6ccad84c4c8180387f17e5e952cf6614505de6840f73946b260e313a3c62b5826e2e825ee7151325777b
@@ -10,23 +10,6 @@ on:
10
10
 
11
11
  jobs:
12
12
  rake:
13
- name: Test on Ruby ${{ matrix.ruby }} ${{ matrix.os }}
14
- runs-on: ${{ matrix.os }}
15
- continue-on-error: ${{ matrix.experimental }}
16
- strategy:
17
- fail-fast: false
18
- matrix:
19
- ruby: [ '3.0', '2.7', '2.6', '2.5' ]
20
- os: [ ubuntu-latest, windows-latest, macos-latest ]
21
- experimental: [ false ]
22
- steps:
23
- - uses: actions/checkout@v2
24
- with:
25
- submodules: true
26
-
27
- - uses: ruby/setup-ruby@v1
28
- with:
29
- ruby-version: ${{ matrix.ruby }}
30
- bundler-cache: true
31
-
32
- - run: bundle exec rake
13
+ uses: metanorma/metanorma-build-scripts/.github/workflows/generic-rake.yml@main
14
+ secrets:
15
+ pat_token: ${{ secrets.METANORMA_CI_PAT_TOKEN }}
@@ -4,28 +4,38 @@ on:
4
4
  push:
5
5
  tags:
6
6
  - '*'
7
+ workflow_dispatch:
8
+ inputs:
9
+ next_version:
10
+ description: |
11
+ Next release version. Possible values: x.y.z, major, minor, patch or pre|rc|etc
12
+ required: true
13
+ default: 'skip'
7
14
 
8
15
  jobs:
9
16
  release:
10
17
  runs-on: ubuntu-18.04
11
18
  steps:
12
19
  - uses: actions/checkout@v1
13
- - name: Use Ruby
14
- uses: actions/setup-ruby@v1
20
+
21
+ - uses: ruby/setup-ruby@v1
15
22
  with:
16
23
  ruby-version: '2.6'
17
- architecture: 'x64'
18
- - name: Update gems
19
- run: |
20
- gem install bundler
21
- bundle install --jobs 4 --retry 3
22
- - name: Update mn2pdf.jar
23
- run: |
24
- rm -f bin/mn2pdf.jar
25
- rake bin/mn2pdf.jar
26
- - name: Run specs
27
- run: |
28
- bundle exec rake
24
+ bundler-cache: true
25
+
26
+ - run: rm -f bin/mn2pdf.jar && rake bin/mn2pdf.jar
27
+
28
+ - run: bundle exec rake
29
+
30
+ - run: gem install gem-release
31
+
32
+ - run: |
33
+ git config user.name github-actions
34
+ git config user.email github-actions@github.com
35
+
36
+ - if: github.event_name == 'workflow_dispatch' && github.event.inputs.next_version != 'skip'
37
+ run: gem bump --version ${{ github.event.inputs.next_version }} --tag --push
38
+
29
39
  - name: Publish to rubygems.org
30
40
  env:
31
41
  RUBYGEMS_API_KEY: ${{secrets.METANORMA_CI_RUBYGEMS_API_KEY}}
data/bin/mn2pdf.jar CHANGED
Binary file
@@ -1,3 +1,3 @@
1
1
  module Mn2pdf
2
- VERSION = "1.34".freeze
2
+ VERSION = "1.41".freeze
3
3
  end
data/lib/mn2pdf.rb CHANGED
@@ -1,12 +1,17 @@
1
1
  require "open3"
2
2
  require "rbconfig"
3
+ require "tempfile"
4
+ require "yaml"
5
+
3
6
  require "mn2pdf/version"
4
7
 
5
8
  module Mn2pdf
6
9
  MN2PDF_JAR_PATH = File.join(File.dirname(__FILE__), "../bin/mn2pdf.jar")
10
+ DEFAULT_JAVA_OPTS = ["-Xss5m", "-Xmx2048m"].freeze
11
+ FONTS_MANIFEST = :font_manifest
7
12
 
8
13
  def self.jvm_options
9
- options = []
14
+ options = DEFAULT_JAVA_OPTS.dup
10
15
 
11
16
  if RbConfig::CONFIG["host_os"].match?(/darwin|mac os/)
12
17
  options << "-Dapple.awt.UIElement=true"
@@ -17,8 +22,9 @@ module Mn2pdf
17
22
 
18
23
  def self.help
19
24
  cmd = ["java", *jvm_options, "-jar", MN2PDF_JAR_PATH].join(" ")
20
- message, = Open3.capture3(cmd)
21
- message
25
+ # help message goes to STDERR (from mn2pdf v1.36)
26
+ _, help_message, = Open3.capture3(cmd)
27
+ help_message
22
28
  end
23
29
 
24
30
  def self.version
@@ -27,22 +33,71 @@ module Mn2pdf
27
33
  message.strip
28
34
  end
29
35
 
30
- def self.convert(url_path, output_path, xsl_stylesheet, options = "")
31
- return if url_path.nil? || output_path.nil? || xsl_stylesheet.nil?
36
+ def self.convert(url_path, output_path, xsl_stylesheet, options = {})
37
+ cmd = build_cmd(url_path, output_path, xsl_stylesheet)
38
+
39
+ return unless cmd
32
40
 
33
- cmd = ["java", "-Xss5m", "-Xmx2048m", *jvm_options,
34
- "-jar", MN2PDF_JAR_PATH, "--xml-file", url_path,
35
- "--xsl-file", xsl_stylesheet, "--pdf-file", output_path, options].join(" ")
41
+ case options
42
+ when String
43
+ cmd << options
36
44
 
45
+ mn2pdf(cmd)
46
+ when Hash
47
+ manifest = options.delete(FONTS_MANIFEST)
48
+
49
+ options.each do |k, v|
50
+ cmd << "#{k} #{quote(v)}"
51
+ end
52
+ if manifest
53
+ dump_fontist_manifest_locations(manifest) do |manifest_path|
54
+ cmd << "--font-manifest" << quote(manifest_path)
55
+ mn2pdf(cmd)
56
+ end
57
+ else
58
+ mn2pdf(cmd)
59
+ end
60
+ else
61
+ warn "Unsupported options type #{options.class}"
62
+ end
63
+ end
64
+
65
+ def self.build_cmd(url, output, xslt)
66
+ return if url.nil? || output.nil? || xslt.nil?
67
+
68
+ ["java", *jvm_options,
69
+ "-jar", MN2PDF_JAR_PATH,
70
+ "--xml-file", quote(url),
71
+ "--xsl-file", quote(xslt),
72
+ "--pdf-file", quote(output)]
73
+ end
74
+
75
+ def self.mn2pdf(cmd)
76
+ cmd = cmd.join(" ")
37
77
  puts cmd
38
- stdout_str, error_str, status = Open3.capture3(cmd)
78
+ out, err, status = Open3.capture3(cmd)
39
79
 
40
- raise prepare_error_msg(stdout_str, error_str) unless status.success?
80
+ raise prepare_error_msg(out, err) unless status.success?
41
81
  end
42
82
 
43
- def self.prepare_error_msg(stdout_str, error_str)
83
+ def self.prepare_error_msg(stdout, stderr)
44
84
  # Strip default mn2pdf message
45
- stdout_str = stdout_str.gsub("Preparing...", "").strip
46
- ["[mn2pdf] Fatal:", stdout_str, error_str].join(" ").strip
85
+ stdout = stdout.gsub("Preparing...", "").strip
86
+ ["[mn2pdf] Fatal:", stdout, stderr].join(" ").strip
87
+ end
88
+
89
+ def self.quote(str)
90
+ return str if /^'.*'$/.match(str) || /^".*"$/.match(str)
91
+
92
+ %("#{str}")
93
+ end
94
+
95
+ def self.dump_fontist_manifest_locations(manifest)
96
+ Tempfile.create(["fontist_locations", ".yml"]) do |f|
97
+ f.write manifest.to_yaml
98
+ f.flush
99
+
100
+ yield f.path
101
+ end
47
102
  end
48
103
  end
data/mn2pdf.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ["lib"]
21
21
  spec.files = `git ls-files`.split("\n")
22
22
  spec.test_files = `git ls-files -- {spec}/*`.split("\n")
23
- spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
23
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
24
24
 
25
25
  # Specify which files should be added to the gem when it is released.
26
26
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mn2pdf
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.34'
4
+ version: '1.41'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-19 00:00:00.000000000 Z
11
+ date: 2022-02-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  mn2pdf converts Metanorma XML into PDF.
@@ -49,14 +49,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
49
49
  requirements:
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 2.4.0
52
+ version: 2.5.0
53
53
  required_rubygems_version: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - ">="
56
56
  - !ruby/object:Gem::Version
57
57
  version: '0'
58
58
  requirements: []
59
- rubygems_version: 3.0.3.1
59
+ rubygems_version: 3.0.3
60
60
  signing_key:
61
61
  specification_version: 4
62
62
  summary: mn2pdf converts Metanorma XML into PDF.