mn2pdf 1.35 → 1.41.1

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: 9da4d3e27d47a7c3481099c318bbcd84f2cddf6f99fe20c780a2dce5cc7cfbf8
4
- data.tar.gz: 5016a600084d804e9af4eab8963eadec037618e735775fd71834cab7a28ec7d0
3
+ metadata.gz: 0f6b75a4c0cb45a4c674233bd1375d83636d08428d0a85dfa7c4b49cd84f0a96
4
+ data.tar.gz: 26caeb9c3f8a3f7ad24c565e9515aad2701e248dc2a97efab5e139f5adb3c1a3
5
5
  SHA512:
6
- metadata.gz: 7144cda257263609b1b6af00fef463efc246b31cfc3616a5725a1fb822e6db38d7d8c1bf4fb7692f5da96bacd6317f4e0ce79c07f7571cbc20936f6fcbaaddae
7
- data.tar.gz: ec963f56db73727fec464af90be84e61db929410239cb3bb2b6fde0a874f57528ee0f8a96d91bef8861f71772f3962305ab71d78e568ce033a294b0b2daefce2
6
+ metadata.gz: 15b8bfc72495756a092fe272037a1bbe988054fcde62e7398694e0c04d664f6c949416274496f7970b199ebdc4c047d8c443f635d4ccbdb26a92385373283082
7
+ data.tar.gz: 95073bc9550325ac5435e71c21249a992ffdcb74118f87631c81c84086809c08a481484e3089405439cf85403c0b4455d8d82c95ffcbba6a15d060b3738e7572
@@ -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 && bundle exec 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/Rakefile CHANGED
@@ -9,7 +9,7 @@ task :default => :spec
9
9
  require 'open-uri'
10
10
 
11
11
  file 'bin/mn2pdf.jar' do |file|
12
- ver = Mn2pdf::VERSION
12
+ ver = Mn2pdf::MN2PDF_JAR_VERSION
13
13
  url = "https://github.com/metanorma/mn2pdf/releases/download/v#{ver}/mn2pdf-#{ver}.jar"
14
14
  File.open(file.name, 'wb') do |file|
15
15
  file.write open(url).read
data/bin/mn2pdf.jar CHANGED
Binary file
@@ -1,3 +1,4 @@
1
1
  module Mn2pdf
2
- VERSION = "1.35".freeze
2
+ VERSION = "1.41.1".freeze
3
+ MN2PDF_JAR_VERSION = "1.41".freeze
3
4
  end
data/lib/mn2pdf.rb CHANGED
@@ -1,12 +1,15 @@
1
1
  require "open3"
2
2
  require "rbconfig"
3
- require "mn2pdf/version"
3
+ require "tempfile"
4
+ require "yaml"
4
5
 
5
6
  module Mn2pdf
6
7
  MN2PDF_JAR_PATH = File.join(File.dirname(__FILE__), "../bin/mn2pdf.jar")
8
+ DEFAULT_JAVA_OPTS = ["-Xss5m", "-Xmx2048m"].freeze
9
+ FONTS_MANIFEST = :font_manifest
7
10
 
8
11
  def self.jvm_options
9
- options = []
12
+ options = DEFAULT_JAVA_OPTS.dup
10
13
 
11
14
  if RbConfig::CONFIG["host_os"].match?(/darwin|mac os/)
12
15
  options << "-Dapple.awt.UIElement=true"
@@ -17,8 +20,9 @@ module Mn2pdf
17
20
 
18
21
  def self.help
19
22
  cmd = ["java", *jvm_options, "-jar", MN2PDF_JAR_PATH].join(" ")
20
- message, = Open3.capture3(cmd)
21
- message
23
+ # help message goes to STDERR (from mn2pdf v1.36)
24
+ _, help_message, = Open3.capture3(cmd)
25
+ help_message
22
26
  end
23
27
 
24
28
  def self.version
@@ -27,22 +31,73 @@ module Mn2pdf
27
31
  message.strip
28
32
  end
29
33
 
30
- def self.convert(url_path, output_path, xsl_stylesheet, options = "")
31
- return if url_path.nil? || output_path.nil? || xsl_stylesheet.nil?
34
+ def self.convert(url_path, output_path, xsl_stylesheet, options = {})
35
+ cmd = build_cmd(url_path, output_path, xsl_stylesheet)
36
+
37
+ return unless cmd
38
+
39
+ case options
40
+ when String
41
+ cmd << options
42
+
43
+ mn2pdf(cmd)
44
+ when Hash
45
+ manifest = options.delete(FONTS_MANIFEST)
46
+
47
+ options.each do |k, v|
48
+ sep = k.to_s.end_with?("=") ? "" : " "
49
+ cmd << "#{k}#{sep}#{quote(v)}"
50
+ end
51
+ if manifest
52
+ dump_fontist_manifest_locations(manifest) do |manifest_path|
53
+ cmd << "--font-manifest" << quote(manifest_path)
54
+ mn2pdf(cmd)
55
+ end
56
+ else
57
+ mn2pdf(cmd)
58
+ end
59
+ else
60
+ warn "Unsupported options type #{options.class}"
61
+ end
62
+ end
63
+
64
+ def self.build_cmd(url, output, xslt)
65
+ return if url.nil? || output.nil? || xslt.nil?
32
66
 
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(" ")
67
+ ["java", *jvm_options,
68
+ "-jar", MN2PDF_JAR_PATH,
69
+ "--xml-file", quote(url),
70
+ "--xsl-file", quote(xslt),
71
+ "--pdf-file", quote(output)]
72
+ end
36
73
 
74
+ def self.mn2pdf(cmd)
75
+ cmd = cmd.join(" ")
37
76
  puts cmd
38
- stdout_str, error_str, status = Open3.capture3(cmd)
77
+ out, err, status = Open3.capture3(cmd)
39
78
 
40
- raise prepare_error_msg(stdout_str, error_str) unless status.success?
79
+ raise prepare_error_msg(out, err) unless status.success?
41
80
  end
42
81
 
43
- def self.prepare_error_msg(stdout_str, error_str)
82
+ def self.prepare_error_msg(stdout, stderr)
44
83
  # Strip default mn2pdf message
45
- stdout_str = stdout_str.gsub("Preparing...", "").strip
46
- ["[mn2pdf] Fatal:", stdout_str, error_str].join(" ").strip
84
+ stdout = stdout.gsub("Preparing...", "").strip
85
+ ["[mn2pdf] Fatal:", stdout, stderr].join(" ").strip
86
+ end
87
+
88
+ def self.quote(str)
89
+ return "" if str.nil? || str.empty?
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.35'
4
+ version: 1.41.1
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-08-03 00:00:00.000000000 Z
11
+ date: 2022-02-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  mn2pdf converts Metanorma XML into PDF.
@@ -49,7 +49,7 @@ 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
  - - ">="