html2doc 1.4.2 → 1.4.3

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: 834f2d69887ce656cd78e78822c78c98a19017e01ff1fbaffb5bcf9951fb1419
4
- data.tar.gz: b7c12ae5d35ae84ac8de00d3cde42dc27549f5567623a5d88a50c3757a4c6dcd
3
+ metadata.gz: bb9828e9edbe4e0dabb525267ac5274793a2691d72eb837f46de3191c3159031
4
+ data.tar.gz: 5ad4f6a3856ef6ab784db79db8e4f69fdd2b6aeeb5b179e90f0b7d06c1c55eea
5
5
  SHA512:
6
- metadata.gz: 02a2b5f53337616b673d43f20a3f90594bcf5355288235d4eafe2622cac8e6af01d24ea2b05a8d2fea0fb9256b4d43686f3c81cb075ea562f6fcb616791abfeb
7
- data.tar.gz: 565a6554f2de5e99bbaa9cc5de81e3c7d9789e36d9251641518cf82f44c2183a36a9305d2054535396813b21e475a31af1ca9577c9cb7c4bd7a9dbc0b872cf6b
6
+ metadata.gz: 4d904e3cc7747cd0167c440b41d4123a6a46d00709f114149b4784bd9c6824361c26169569a44e0f3837c8d102c3eefea2fa256533fa6dbc492f6d31a13e5234
7
+ data.tar.gz: 167943e0582c2fcae1724e9d6c9f38fdefdb2641cd2e5ccd6dfc47ebea7b29a6748e353f58383be314390ea306895da781ab85f9a0ebb070672d17f84d30001b
@@ -10,6 +10,6 @@ on:
10
10
 
11
11
  jobs:
12
12
  rake:
13
- uses: metanorma/metanorma-build-scripts/.github/workflows/generic-rake.yml@main
13
+ uses: metanorma/ci/.github/workflows/generic-rake.yml@main
14
14
  secrets:
15
15
  pat_token: ${{ secrets.METANORMA_CI_PAT_TOKEN }}
@@ -0,0 +1,24 @@
1
+ # Auto-generated by Cimas: Do not edit it manually!
2
+ # See https://github.com/metanorma/cimas
3
+ name: release
4
+
5
+ on:
6
+ workflow_dispatch:
7
+ inputs:
8
+ next_version:
9
+ description: |
10
+ Next release version. Possible values: x.y.z, major, minor, patch or pre|rc|etc
11
+ required: true
12
+ default: 'skip'
13
+ push:
14
+ tags: [ v* ]
15
+
16
+ jobs:
17
+ release:
18
+ uses: metanorma/ci/.github/workflows/rubygems-release.yml@main
19
+ with:
20
+ next_version: ${{ github.event.inputs.next_version }}
21
+ secrets:
22
+ rubygems-api-key: ${{ secrets.METANORMA_CI_RUBYGEMS_API_KEY }}
23
+ pat_token: ${{ secrets.METANORMA_CI_PAT_TOKEN }}
24
+
@@ -58,6 +58,7 @@ class Html2Doc
58
58
  l["class"] ||= "MsoListParagraphCxSpMiddle"
59
59
  next unless l.first_element_child&.name == "p"
60
60
 
61
+ l["style"] ||= ""
61
62
  l["style"] += (l.first_element_child["style"]&.sub(/mso-list[^;]+;/, "") || "")
62
63
  l.first_element_child.replace(l.first_element_child.children)
63
64
  end
data/lib/html2doc/mime.rb CHANGED
@@ -67,22 +67,23 @@ class Html2Doc
67
67
  end
68
68
 
69
69
  def contentid(mhtml)
70
- mhtml.gsub %r{(<img[^>]*?src=")([^\"']+)(['"])}m do |m|
70
+ mhtml.gsub %r{(<img[^>]*?src=")([^"']+)(['"])}m do |m|
71
71
  repl = "#{$1}cid:#{File.basename($2)}#{$3}"
72
- /^data:|^https?:/.match($2) ? m : repl
73
- end.gsub %r{(<v:imagedata[^>]*?src=")([^\"']+)(['"])}m do |m|
72
+ /^data:|^https?:/ =~ $2 ? m : repl
73
+ end.gsub %r{(<v:imagedata[^>]*?src=")([^"']+)(['"])}m do |m|
74
74
  repl = "#{$1}cid:#{File.basename($2)}#{$3}"
75
- /^data:|^https?:/.match($2) ? m : repl
75
+ /^data:|^https?:/ =~ $2 ? m : repl
76
76
  end
77
77
  end
78
78
 
79
79
  # max width for Word document is 400, max height is 680
80
80
  def image_resize(img, path, maxheight, maxwidth)
81
- realsize = ImageSize.path(path).size
82
- s = [img["width"].to_i, img["height"].to_i]
83
- s = realsize if s[0].zero? && s[1].zero?
84
- return [nil, nil] if realsize.nil? || realsize[0].nil? || realsize[1].nil?
81
+ s, realsize = get_image_size(img, path)
82
+ return s if s[0] == nil && s[1] == nil
85
83
 
84
+ if img.name == "svg" && !img["viewBox"]
85
+ img["viewBox"] = "0 0 #{s[0]} #{s[1]}"
86
+ end
86
87
  s[1] = s[0] * realsize[1] / realsize[0] if s[1].zero? && !s[0].zero?
87
88
  s[0] = s[1] * realsize[0] / realsize[1] if s[0].zero? && !s[1].zero?
88
89
  s = [(s[0] * maxheight / s[1]).ceil, maxheight] if s[1] > maxheight
@@ -90,6 +91,16 @@ class Html2Doc
90
91
  s
91
92
  end
92
93
 
94
+ def get_image_size(img, path)
95
+ realsize = ImageSize.path(path).size # does not support emf
96
+ s = [img["width"].to_i, img["height"].to_i]
97
+ return [s, s] if /\.emf$/.match?(path)
98
+
99
+ s = realsize if s[0].zero? && s[1].zero?
100
+ s = [nil, nil] if realsize.nil? || realsize[0].nil? || realsize[1].nil?
101
+ [s, realsize]
102
+ end
103
+
93
104
  IMAGE_PATH = "//*[local-name() = 'img' or local-name() = 'imagedata']".freeze
94
105
 
95
106
  def mkuuid
@@ -1,3 +1,3 @@
1
1
  class Html2Doc
2
- VERSION = "1.4.2".freeze
2
+ VERSION = "1.4.3".freeze
3
3
  end
@@ -626,7 +626,7 @@ RSpec.describe Html2Doc do
626
626
  end
627
627
 
628
628
  it "resizes images with missing or auto sizes" do
629
- image = { "src" => "spec/19160-8.jpg" }
629
+ image = Nokogiri::XML("<img src='spec/19160-8.jpg'/>").root
630
630
  expect(Html2Doc.new({}).image_resize(image, "spec/19160-8.jpg", 100, 100))
631
631
  .to eq [30, 100]
632
632
  image["width"] = "20"
@@ -666,6 +666,12 @@ RSpec.describe Html2Doc do
666
666
  .to eq [30, 100]
667
667
  end
668
668
 
669
+ it "resizes SVG with missing or auto sizes" do
670
+ image = Nokogiri::XML(File.read("spec/odf.svg")).root
671
+ Html2Doc.new({}).image_resize(image, "spec/odf.svg", 100, 100)
672
+ expect(image.to_xml).to match_fuzzy '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"/>'
673
+ end
674
+
669
675
  it "does not move images if they are external URLs" do
670
676
  simple_body = '<img src="https://example.com/19160-6.png">'
671
677
  Html2Doc.new(filename: "test", imagedir: ".")
data/spec/odf.svg ADDED
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width=100 height=100><circle fill="#009" r="45" cx="50" cy="50"/><path d="M33,26H78A37,37,0,0,1,33,83V57H59V43H33Z" fill="#FFF"/></svg>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: html2doc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
4
+ version: 1.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-04 00:00:00.000000000 Z
11
+ date: 2022-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciimath
@@ -274,6 +274,7 @@ extra_rdoc_files: []
274
274
  files:
275
275
  - ".gitattributes"
276
276
  - ".github/workflows/rake.yml"
277
+ - ".github/workflows/release.yml"
277
278
  - ".gitignore"
278
279
  - ".hound.yml"
279
280
  - ".oss-guides.rubocop.yml"
@@ -313,13 +314,14 @@ files:
313
314
  - spec/header.html
314
315
  - spec/header_img.html
315
316
  - spec/html2doc_spec.rb
317
+ - spec/odf.svg
316
318
  - spec/spec_helper.rb
317
319
  homepage: https://github.com/metanorma/html2doc
318
320
  licenses:
319
321
  - CC-BY-SA-3.0
320
322
  - BSD-2-Clause
321
323
  metadata: {}
322
- post_install_message:
324
+ post_install_message:
323
325
  rdoc_options: []
324
326
  require_paths:
325
327
  - lib
@@ -334,8 +336,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
334
336
  - !ruby/object:Gem::Version
335
337
  version: '0'
336
338
  requirements: []
337
- rubygems_version: 3.3.16
338
- signing_key:
339
+ rubygems_version: 3.1.6
340
+ signing_key:
339
341
  specification_version: 4
340
342
  summary: Convert HTML document to Microsoft Word document
341
343
  test_files: []