mn2pdf 1.34 → 1.41

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