lib/hexapdf/document.rb in hexapdf-0.7.0 vs lib/hexapdf/document.rb in hexapdf-0.8.0

- old
+ new

@@ -552,22 +552,26 @@ def security_handler @security_handler end # :call-seq: - # doc.validate(auto_correct: true) -> true or false - # doc.validate(auto_correct: true) {|msg, correctable| block } -> true or false + # doc.validate(auto_correct: true) -> true or false + # doc.validate(auto_correct: true) {|object, msg, correctable| block } -> true or false # # Validates all objects of the document, with optional auto-correction, and returns +true+ if # everything is fine. # # If a block is given, it is called on validation problems. # # See HexaPDF::Object#validate for more information. - def validate(auto_correct: true, &block) + def validate(auto_correct: true) + cur_obj = trailer + block = (block_given? ? lambda {|msg, correctable| yield(cur_obj, msg, correctable) } : nil) + result = trailer.validate(auto_correct: auto_correct, &block) each(current: false) do |obj| + cur_obj = obj result &&= obj.validate(auto_correct: auto_correct, &block) end result end @@ -599,12 +603,12 @@ trailer.update_id trailer.info[:ModDate] = Time.now end if validate - self.validate(auto_correct: true) do |msg, correctable| + self.validate(auto_correct: true) do |obj, msg, correctable| next if correctable - raise HexaPDF::Error, "Validation error: #{msg}" + raise HexaPDF::Error, "Validation error for (#{obj.oid},#{obj.gen}): #{msg}" end end if optimize task(:optimize, object_streams: :generate)