html2odt 0.4.0 → 0.4.6
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 +4 -4
- data/.travis.yml +16 -5
- data/CHANGELOG.md +25 -0
- data/README.md +1 -1
- data/html2odt.gemspec +7 -7
- data/lib/html2odt.rb +1 -0
- data/lib/html2odt/dimensions_patches.rb +28 -0
- data/lib/html2odt/document.rb +7 -4
- data/lib/html2odt/image.rb +6 -4
- data/lib/html2odt/version.rb +1 -1
- metadata +33 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f516bc8a83378731a7fa9962c56543784bbaf8d9
|
4
|
+
data.tar.gz: 9851cb1589a9cb5b30aed2061b38c8686202b02e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f28b6b63b34290a0eaff83ed813ca0b7add7f57911bf89e965073b1fec4ea745c575f0f49ab0cf67a596090b444411d3507e5699279d74241164b65db08e792e
|
7
|
+
data.tar.gz: 55f00819a1e29f07a3de4a239c579cd7c7e33703ae948f8aec9ee56ea96666941b818e7e44395207887af5caac20f3ca8a5e145c8c6ec6b6168bb03f9e173d2f
|
data/.travis.yml
CHANGED
@@ -1,12 +1,23 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 2.
|
4
|
-
- 2.
|
5
|
-
- 2.
|
6
|
-
- 2.
|
3
|
+
- 2.1.10
|
4
|
+
- 2.2.10
|
5
|
+
- 2.3.7
|
6
|
+
- 2.4.9
|
7
|
+
- 2.5.7
|
8
|
+
- 2.6.5
|
9
|
+
- 2.7.0
|
7
10
|
|
8
11
|
before_install:
|
9
|
-
|
12
|
+
# Bundler 2.0 requires at least Ruby 2.3. We need to explicitly install an
|
13
|
+
# older version of bundler for older Ruby versions since they can't / won't
|
14
|
+
# check their required versions on their own.
|
15
|
+
- |
|
16
|
+
if [[ "$(rvm current)" =~ ^ruby-2\.[012] ]]; then
|
17
|
+
gem install bundler -v '< 2.0'
|
18
|
+
else
|
19
|
+
gem install bundler
|
20
|
+
fi
|
10
21
|
|
11
22
|
cache: bundler
|
12
23
|
sudo: false
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,28 @@
|
|
1
|
+
# v0.4.6 - 2021-03-23
|
2
|
+
|
3
|
+
Support resources behind redirects.
|
4
|
+
Check for source being a file before trying to read it
|
5
|
+
|
6
|
+
# v0.4.5 - 2021-01-06
|
7
|
+
|
8
|
+
Force binmode when writing out the ODT
|
9
|
+
|
10
|
+
# v0.4.4 - 2020-01-06
|
11
|
+
|
12
|
+
Fix exception occurring with some document contents
|
13
|
+
|
14
|
+
# v0.4.3 - 2017-12-15
|
15
|
+
|
16
|
+
Handle files smaller than 6144 bytes. Relaxed version requirements.
|
17
|
+
|
18
|
+
# v0.4.2 - 2017-12-15
|
19
|
+
|
20
|
+
Try harder to determine image dimensions.
|
21
|
+
|
22
|
+
# v0.4.1 - 2017-09-19
|
23
|
+
|
24
|
+
Add support for nokogiri 1.8 in adition to the currently supported versions
|
25
|
+
|
1
26
|
# v0.4.0 - 2017-03-30
|
2
27
|
|
3
28
|
Bump required nokogiri version
|
data/README.md
CHANGED
@@ -12,7 +12,7 @@ line tools by Aurélien Bompard are called **`x`**`html2odt`?
|
|
12
12
|
|
13
13
|
This project uses [nokogiri](http://www.nokogiri.org) to parse the HTML and
|
14
14
|
apply the XSLT transformations. Nokogiri implements a forgiving HTML parser and
|
15
|
-
tries be as forgiving as possible. Furthermore, the basic API expects HTML
|
15
|
+
tries to be as forgiving as possible. Furthermore, the basic API expects HTML
|
16
16
|
fragments, not full documents. We are not expecting the users of this library to
|
17
17
|
pass in a complete, valid XHTML document. A reasonably good piece of HTML should
|
18
18
|
be good enough. Therefore we skipped the `X` in the name as well.
|
data/html2odt.gemspec
CHANGED
@@ -19,12 +19,12 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
spec.executables << "html2odt.rb"
|
21
21
|
|
22
|
-
spec.add_dependency "dimensions"
|
23
|
-
spec.add_dependency "nokogiri"
|
24
|
-
spec.add_dependency "rubyzip"
|
22
|
+
spec.add_dependency "dimensions"
|
23
|
+
spec.add_dependency "nokogiri"
|
24
|
+
spec.add_dependency "rubyzip"
|
25
25
|
|
26
|
-
spec.add_development_dependency "bundler"
|
27
|
-
spec.add_development_dependency "rake"
|
28
|
-
spec.add_development_dependency "minitest"
|
29
|
-
spec.add_development_dependency "
|
26
|
+
spec.add_development_dependency "bundler"
|
27
|
+
spec.add_development_dependency "rake"
|
28
|
+
spec.add_development_dependency "minitest"
|
29
|
+
spec.add_development_dependency "webmock"
|
30
30
|
end
|
data/lib/html2odt.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
module Html2Odt::DimensionsPatches
|
2
|
+
# Default implemenation of IO#peek from GEM_PATH/dimensions-1.3.0/lib/dimensions/io.rb:
|
3
|
+
#
|
4
|
+
# def peek
|
5
|
+
# unless no_peeking?
|
6
|
+
# read(pos + 1024) while @reader.width.nil? && pos < 6144
|
7
|
+
# rewind
|
8
|
+
# end
|
9
|
+
# end
|
10
|
+
#
|
11
|
+
# It had two problems:
|
12
|
+
#
|
13
|
+
# a) if the file is shorter than 6144 bytes, it would keep reading infinitely
|
14
|
+
# b) if the width can only be detected after the 6144 limit, it would not work
|
15
|
+
# as expected
|
16
|
+
#
|
17
|
+
# Now we keep reading the file, until we can determine a width or until
|
18
|
+
# there's nothing left to read.
|
19
|
+
#
|
20
|
+
def peek
|
21
|
+
return if no_peeking?
|
22
|
+
|
23
|
+
while read(pos + 1024) && @reader.width.nil?
|
24
|
+
end
|
25
|
+
|
26
|
+
rewind
|
27
|
+
end
|
28
|
+
end
|
data/lib/html2odt/document.rb
CHANGED
@@ -58,7 +58,7 @@ class Html2Odt::Document
|
|
58
58
|
xml = xslt_tranform(html, Html2Odt::XHTML2ODT_XSL)
|
59
59
|
|
60
60
|
xml = xml.sub('<?xml version="1.0" encoding="utf-8"?>', '')
|
61
|
-
xml = @tpl_content_xml.sub(CONTENT_REGEX
|
61
|
+
xml = @tpl_content_xml.sub(CONTENT_REGEX) { xml }
|
62
62
|
|
63
63
|
xml = xslt_tranform(xml, Html2Odt::XHTML2ODT_STYLES_XSL)
|
64
64
|
|
@@ -174,7 +174,7 @@ class Html2Odt::Document
|
|
174
174
|
end
|
175
175
|
|
176
176
|
def write_to(path)
|
177
|
-
File.write(path, data)
|
177
|
+
File.write(path, data, mode: 'wb')
|
178
178
|
end
|
179
179
|
|
180
180
|
protected
|
@@ -363,8 +363,8 @@ class Html2Odt::Document
|
|
363
363
|
height = img["height"].to_i
|
364
364
|
width = height * image.height / image.width
|
365
365
|
else
|
366
|
-
width = image.width
|
367
|
-
height = image.height
|
366
|
+
width = image.width.to_i
|
367
|
+
height = image.height.to_i
|
368
368
|
end
|
369
369
|
|
370
370
|
img["width"] = "#{(width / DPI * INCH_TO_CM).round(2)}cm"
|
@@ -399,6 +399,9 @@ class Html2Odt::Document
|
|
399
399
|
def uri_to_file(uri)
|
400
400
|
Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == "https") do |http|
|
401
401
|
resp = http.get(uri.path)
|
402
|
+
if resp.is_a?(Net::HTTPRedirection) and redirect_uri = URI.parse(resp['location'])
|
403
|
+
resp = http.get(redirect_uri)
|
404
|
+
end
|
402
405
|
|
403
406
|
return nil unless resp.is_a?(Net::HTTPSuccess)
|
404
407
|
|
data/lib/html2odt/image.rb
CHANGED
@@ -18,11 +18,12 @@ class Html2Odt::Image
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def valid?
|
21
|
-
return false if source.nil? or !File.readable?(source)
|
21
|
+
return false if source.nil? or !File.readable?(source) or !File.file?(source)
|
22
22
|
|
23
23
|
if @valid.nil?
|
24
24
|
File.open(source, "rb") do |io|
|
25
25
|
Dimensions(io)
|
26
|
+
io.extend Html2Odt::DimensionsPatches
|
26
27
|
|
27
28
|
# Interacting with Dimensions::Reader directly to
|
28
29
|
#
|
@@ -32,11 +33,12 @@ class Html2Odt::Image
|
|
32
33
|
io.send :peek
|
33
34
|
reader = io.instance_variable_get :@reader
|
34
35
|
|
35
|
-
if reader.type
|
36
|
+
if reader.type && reader.width && reader.height
|
36
37
|
@type = reader.type
|
37
|
-
|
38
|
+
|
39
|
+
@width = reader.width
|
38
40
|
@height = reader.height
|
39
|
-
@angle
|
41
|
+
@angle = reader.angle
|
40
42
|
|
41
43
|
@valid = true
|
42
44
|
else
|
data/lib/html2odt/version.rb
CHANGED
metadata
CHANGED
@@ -1,113 +1,113 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: html2odt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregor Schmidt (Planio)
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dimensions
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: nokogiri
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rubyzip
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: minitest
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: webmock
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
103
|
+
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
110
|
+
version: '0'
|
111
111
|
description: html2odt generates ODT documents based on HTML fragments using xhtml2odt
|
112
112
|
email:
|
113
113
|
- gregor@plan.io
|
@@ -129,6 +129,7 @@ files:
|
|
129
129
|
- bin/html2odt.rb
|
130
130
|
- html2odt.gemspec
|
131
131
|
- lib/html2odt.rb
|
132
|
+
- lib/html2odt/dimensions_patches.rb
|
132
133
|
- lib/html2odt/document.rb
|
133
134
|
- lib/html2odt/image.rb
|
134
135
|
- lib/html2odt/version.rb
|
@@ -180,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
180
181
|
version: '0'
|
181
182
|
requirements: []
|
182
183
|
rubyforge_project:
|
183
|
-
rubygems_version: 2.
|
184
|
+
rubygems_version: 2.6.14.4
|
184
185
|
signing_key:
|
185
186
|
specification_version: 4
|
186
187
|
summary: html2odt generates ODT documents based on HTML fragments
|