hexapdf 0.26.0 → 0.26.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: 9e41c50e1ddb3dc2b063e8a858ccf612fb069df46189d592dccec3778d58d738
4
- data.tar.gz: cf62d302bd4728816c9920d09fcf27224004b6e70bc23b19d9a0f8b37dc27a3b
3
+ metadata.gz: '071877a8fbc781ac3d35f5432d6b7d83b80d5d7f981d3fd7110551e0e09bc18b'
4
+ data.tar.gz: a0ac1aa3be4d720561b9d58d197f547e9c3958fb0c252d8da27d9e9a356c0b7b
5
5
  SHA512:
6
- metadata.gz: 83afdc841024adb116efbeb75bd34c2feb71042cbccb368e32b220634f3f8122f1a29bf07d8b7532836953fe1d3edb0733cb6c31fd50177a28bddea9bcdee2a2
7
- data.tar.gz: fa3e26f634fc7e3e6461ade1555a063bffbf52c4e956d802b4bee5d01290bc2415571501b4afa083aaefd9f514a38a10fb10546418dbd5b7ef9bfbd121abd37f
6
+ metadata.gz: 7528b421de6360e09bf4caeb72caec3b71f317314c8e0389fca287ee00bfab0ee952d8cecced2df937ff2e8198655fe81ebd12a494fac94847ae28ca20169384
7
+ data.tar.gz: 52a0ab62632122772162fa1dbbb80e05b11956d187385c813f97f0a6c6c8b23c83f568cef2df81e93caf2ae558cda005ef0923de45f16d2c943cc9d86f92c868
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## 0.26.1 - 2022-10-14
2
+
3
+ ### Changed
4
+
5
+ * [HexaPDF::Serializer] to provide better error messages when encountering
6
+ unserializable objects
7
+
8
+ ### Fixed
9
+
10
+ * [HexaPDF::Importer] to correctly expose previously mapped objects
11
+
12
+
1
13
  ## 0.26.0 - 2022-10-14
2
14
 
3
15
  ### Added
@@ -117,7 +117,7 @@ module HexaPDF
117
117
  when HexaPDF::Object
118
118
  if object.type == :Catalog || object.type == :Pages
119
119
  @mapper[object.data] = nil
120
- elsif (mapped_object = @mapper[object.data]) && !mapped_object.null?
120
+ elsif (mapped_object = @mapper[object.data]&.__getobj__) && !mapped_object.null?
121
121
  mapped_object
122
122
  else
123
123
  obj = object.dup
@@ -151,6 +151,16 @@ module HexaPDF
151
151
  @io = nil
152
152
  end
153
153
 
154
+ # Raises an error to provide better failure messages.
155
+ def serialize_basicobject(obj)
156
+ object_message = if @object.kind_of?(HexaPDF::Object)
157
+ "#{obj} (part of #{@object.oid},#{@object.gen})"
158
+ else
159
+ obj.inspect
160
+ end
161
+ raise HexaPDF::Error, "No serialization method for #{object_message}"
162
+ end
163
+
154
164
  # Serializes the +nil+ value.
155
165
  #
156
166
  # See: PDF1.7 s7.3.9
@@ -37,6 +37,6 @@
37
37
  module HexaPDF
38
38
 
39
39
  # The version of HexaPDF.
40
- VERSION = '0.26.0'
40
+ VERSION = '0.26.1'
41
41
 
42
42
  end
@@ -78,6 +78,14 @@ describe HexaPDF::Importer do
78
78
  assert_equal(["one", "two"], @obj[:array])
79
79
  end
80
80
 
81
+ it "uses already mapped HexaPDF::Object instances instead of mapping them again" do
82
+ hash = @importer.import(@hash)
83
+ assert_kind_of(HexaPDF::Dictionary, hash)
84
+ obj = @importer.import(@obj)
85
+ assert_kind_of(HexaPDF::Dictionary, obj[:hash])
86
+ assert_same(hash, obj[:hash])
87
+ end
88
+
81
89
  it "duplicates the stream if it is a string" do
82
90
  src_obj = @source.add({}, stream: 'data')
83
91
  dst_obj = @importer.import(src_obj)
@@ -31,6 +31,14 @@ describe HexaPDF::Serializer do
31
31
  assert_serialized("(test)", s)
32
32
  end
33
33
 
34
+ it "raises an error for unknown objects" do
35
+ obj = HexaPDF::Dictionary.new({x: 5, y: Object.new}, oid: 5, gen: 1)
36
+ error = assert_raises(HexaPDF::Error) { @serializer.serialize(obj) }
37
+ assert_match(/\(part of 5,1\)/, error.message)
38
+ error = assert_raises(HexaPDF::Error) { @serializer.serialize(Object.new) }
39
+ assert_match(/Object/, error.message)
40
+ end
41
+
34
42
  it "serializes nil" do
35
43
  assert_serialized("null", nil)
36
44
  end
@@ -40,7 +40,7 @@ describe HexaPDF::Writer do
40
40
  219
41
41
  %%EOF
42
42
  3 0 obj
43
- <</Producer(HexaPDF version 0.26.0)>>
43
+ <</Producer(HexaPDF version 0.26.1)>>
44
44
  endobj
45
45
  xref
46
46
  3 1
@@ -72,7 +72,7 @@ describe HexaPDF::Writer do
72
72
  141
73
73
  %%EOF
74
74
  6 0 obj
75
- <</Producer(HexaPDF version 0.26.0)>>
75
+ <</Producer(HexaPDF version 0.26.1)>>
76
76
  endobj
77
77
  2 0 obj
78
78
  <</Length 10>>stream
@@ -206,7 +206,7 @@ describe HexaPDF::Writer do
206
206
  <</Type/Page/MediaBox[0 0 595 842]/Parent 2 0 R/Resources<<>>>>
207
207
  endobj
208
208
  5 0 obj
209
- <</Producer(HexaPDF version 0.26.0)>>
209
+ <</Producer(HexaPDF version 0.26.1)>>
210
210
  endobj
211
211
  4 0 obj
212
212
  <</Root 1 0 R/Info 5 0 R/Size 6/Type/XRef/W[1 1 2]/Index[0 6]/Filter/FlateDecode/DecodeParms<</Columns 4/Predictor 12>>/Length 33>>stream
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hexapdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.26.0
4
+ version: 0.26.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Leitner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-13 00:00:00.000000000 Z
11
+ date: 2022-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cmdparse
@@ -706,7 +706,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
706
706
  - !ruby/object:Gem::Version
707
707
  version: '0'
708
708
  requirements: []
709
- rubygems_version: 3.2.32
709
+ rubygems_version: 3.3.3
710
710
  signing_key:
711
711
  specification_version: 4
712
712
  summary: HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby