pnm 0.6.0 → 0.7.0
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/README.md +7 -5
- data/Rakefile +1 -5
- data/benchmark/bm_converter.rb +2 -6
- data/lib/pnm/converter.rb +5 -5
- data/lib/pnm/image.rb +7 -13
- data/lib/pnm/parser.rb +10 -6
- data/lib/pnm/version.rb +2 -2
- data/lib/pnm.rb +16 -17
- data/pnm.gemspec +1 -4
- data/test/test_converter.rb +2 -7
- data/test/test_exceptions.rb +0 -6
- data/test/test_image.rb +0 -6
- data/test/test_parser.rb +24 -9
- data/test/test_pnm.rb +0 -6
- metadata +7 -36
- data/test/backports.rb +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef6f55635bbaa23976ceb49f1547b92cf78e2ad04d51363054ac12dbfe6943e0
|
4
|
+
data.tar.gz: 4b7c8730c80b28b6a98a4b27fc3a000a4e28eb11be34bf5c2717da188f833d9a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3b07074daa3fd1601d8d0c4f05dc2764c1c2434b24368d0e69c4752ecc9af1153751f14f1af679d2319d46b20b74cff4c9e10e50341eb12fbb82abc97ca69d5
|
7
|
+
data.tar.gz: 5356021622e4656db38f8f7c7b918c5e3bbffc63670e4b39b851ca542f55f5a51b7748b2384540426d7e154ebb3b151c4d106cd1adee00c526d6e249753e54c6
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
PNM - A Ruby library for PNM image files (PBM, PGM, PPM)
|
2
2
|
========================================================
|
3
3
|
|
4
|
+

|
5
|
+
|
4
6
|
PNM is a pure [Ruby][Ruby] library for creating, reading,
|
5
7
|
and writing of `PNM` image files (Portable Anymap):
|
6
8
|
|
@@ -96,11 +98,11 @@ Requirements
|
|
96
98
|
|
97
99
|
- No additional Ruby gems or native libraries are needed.
|
98
100
|
|
99
|
-
- PNM has been tested with
|
101
|
+
- PNM's current version has been tested with
|
100
102
|
|
101
|
-
- Ruby 2.
|
102
|
-
- Ruby 2.
|
103
|
-
- JRuby 9.
|
103
|
+
- Ruby 3.3, 3.2, 3.1, 3.0,
|
104
|
+
- Ruby 2.7, 2.6,
|
105
|
+
- JRuby 9.4.5.0.
|
104
106
|
|
105
107
|
Documentation
|
106
108
|
-------------
|
@@ -116,7 +118,7 @@ Report bugs on the PNM home page: <https://github.com/stomar/pnm/>
|
|
116
118
|
License
|
117
119
|
-------
|
118
120
|
|
119
|
-
Copyright © 2013-
|
121
|
+
Copyright © 2013-2024 Marcus Stollsteimer
|
120
122
|
|
121
123
|
`PNM` is free software: you can redistribute it and/or modify
|
122
124
|
it under the terms of the GNU General Public License version 3 or later (GPLv3+),
|
data/Rakefile
CHANGED
@@ -1,9 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# rakefile for the PNM library.
|
4
|
-
#
|
5
|
-
# Copyright (C) 2013-2020 Marcus Stollsteimer
|
6
|
-
|
7
3
|
require "rake/testtask"
|
8
4
|
|
9
5
|
require_relative "lib/pnm"
|
@@ -25,7 +21,7 @@ end
|
|
25
21
|
|
26
22
|
desc "Run benchmarks"
|
27
23
|
task :benchmark do
|
28
|
-
Dir["benchmark/**/bm_*.rb"].each {|f| require_relative f }
|
24
|
+
Dir["benchmark/**/bm_*.rb"].sort.each {|f| require_relative f }
|
29
25
|
end
|
30
26
|
|
31
27
|
|
data/benchmark/bm_converter.rb
CHANGED
@@ -1,10 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
# bm_converter.rb: Benchmarks for the PNM library.
|
5
|
-
#
|
6
|
-
# Copyright (C) 2013-2020 Marcus Stollsteimer
|
7
|
-
|
8
4
|
require "benchmark"
|
9
5
|
require_relative "../lib/pnm"
|
10
6
|
|
@@ -12,8 +8,8 @@ require_relative "../lib/pnm"
|
|
12
8
|
class ConverterBenchmark
|
13
9
|
|
14
10
|
def initialize
|
15
|
-
@repetitions =
|
16
|
-
@repetitions
|
11
|
+
@repetitions = ENV.fetch("BM_RUNS", "")
|
12
|
+
@repetitions = @repetitions.match?(/\A[0-9]+\z/) ? @repetitions.to_i : 10
|
17
13
|
|
18
14
|
@srcpath = File.dirname(__FILE__)
|
19
15
|
|
data/lib/pnm/converter.rb
CHANGED
@@ -11,7 +11,7 @@ module PNM
|
|
11
11
|
def self.byte_width(type, width)
|
12
12
|
case type
|
13
13
|
when :pbm
|
14
|
-
(width - 1) / 8 + 1
|
14
|
+
((width - 1) / 8) + 1
|
15
15
|
when :pgm
|
16
16
|
width
|
17
17
|
when :ppm
|
@@ -53,14 +53,14 @@ module PNM
|
|
53
53
|
bytes_per_row = byte_width(type, width)
|
54
54
|
expected_size = bytes_per_row * height
|
55
55
|
|
56
|
-
data.slice!(-1) if data.size == expected_size + 1 && data[-1]
|
56
|
+
data.slice!(-1) if data.size == expected_size + 1 && data[-1].match?(/[ \t\r\n]/)
|
57
57
|
|
58
58
|
assert_data_size(data.size, expected_size)
|
59
59
|
|
60
60
|
pixel_matrix = case type
|
61
61
|
when :pbm
|
62
62
|
rows = data.scan(/.{#{bytes_per_row}}/m)
|
63
|
-
rows.map {|row| row.
|
63
|
+
rows.map {|row| row.unpack1("B*")[0, width].each_char.map(&:to_i) }
|
64
64
|
when :pgm
|
65
65
|
data.each_byte.each_slice(bytes_per_row).to_a
|
66
66
|
when :ppm
|
@@ -107,9 +107,9 @@ module PNM
|
|
107
107
|
|
108
108
|
def self.convert_to_integers(data, type)
|
109
109
|
values_as_string = if type == :pbm
|
110
|
-
data.gsub(/[ \t\r\n]+/, "").
|
110
|
+
data.gsub(/[ \t\r\n]+/, "").chars
|
111
111
|
else
|
112
|
-
data.
|
112
|
+
data.sub(/\A[ \t\r\n]+/, "").split(/[ \t\r\n]+/)
|
113
113
|
end
|
114
114
|
|
115
115
|
values_as_string.map {|value| Integer(value) }
|
data/lib/pnm/image.rb
CHANGED
@@ -47,11 +47,7 @@ module PNM
|
|
47
47
|
type ||= detect_type(pixels, maxgray)
|
48
48
|
|
49
49
|
# except for type detection, the maxgray option must be ignored for PBM
|
50
|
-
maxgray = if type == :pbm
|
51
|
-
nil
|
52
|
-
else
|
53
|
-
maxgray
|
54
|
-
end
|
50
|
+
maxgray = nil if type == :pbm
|
55
51
|
|
56
52
|
image_class = case type
|
57
53
|
when :pbm
|
@@ -98,9 +94,10 @@ module PNM
|
|
98
94
|
#
|
99
95
|
# Returns the number of bytes written.
|
100
96
|
def write(file, add_extension: false, encoding: :binary)
|
101
|
-
content =
|
97
|
+
content = case encoding
|
98
|
+
when :ascii
|
102
99
|
to_ascii
|
103
|
-
|
100
|
+
when :binary
|
104
101
|
to_binary
|
105
102
|
end
|
106
103
|
|
@@ -184,7 +181,7 @@ module PNM
|
|
184
181
|
|
185
182
|
def self.assert_valid_maxgray(maxgray) # :nodoc:
|
186
183
|
return unless maxgray
|
187
|
-
return if maxgray.is_a?(Integer) && maxgray
|
184
|
+
return if maxgray.is_a?(Integer) && maxgray.positive? && maxgray <= 255
|
188
185
|
|
189
186
|
msg = "invalid maxgray value - #{maxgray.inspect}"
|
190
187
|
raise PNM::ArgumentError, msg
|
@@ -205,7 +202,7 @@ module PNM
|
|
205
202
|
|
206
203
|
type = type.to_sym if type.is_a?(String)
|
207
204
|
|
208
|
-
unless [
|
205
|
+
unless %i[pbm pgm ppm].include?(type)
|
209
206
|
msg = "invalid image type - #{type.inspect}"
|
210
207
|
raise PNM::ArgumentError, msg
|
211
208
|
end
|
@@ -261,7 +258,7 @@ module PNM
|
|
261
258
|
return [""] if comment.empty?
|
262
259
|
|
263
260
|
keep_trailing_null_fields = -1 # magic value for split limit
|
264
|
-
comment.split(
|
261
|
+
comment.split("\n", keep_trailing_null_fields)
|
265
262
|
end
|
266
263
|
|
267
264
|
def to_ascii # :nodoc:
|
@@ -289,7 +286,6 @@ module PNM
|
|
289
286
|
end
|
290
287
|
end
|
291
288
|
|
292
|
-
|
293
289
|
# Class for +PBM+ images. See the Image class for documentation.
|
294
290
|
class PBMImage < Image
|
295
291
|
|
@@ -320,7 +316,6 @@ module PNM
|
|
320
316
|
end
|
321
317
|
end
|
322
318
|
|
323
|
-
|
324
319
|
# Class for +PGM+ images. See the Image class for documentation.
|
325
320
|
class PGMImage < Image
|
326
321
|
|
@@ -351,7 +346,6 @@ module PNM
|
|
351
346
|
end
|
352
347
|
end
|
353
348
|
|
354
|
-
|
355
349
|
# Class for +PPM+ images. See the Image class for documentation.
|
356
350
|
class PPMImage < Image
|
357
351
|
|
data/lib/pnm/parser.rb
CHANGED
@@ -29,7 +29,7 @@ module PNM
|
|
29
29
|
token = next_token!(content)
|
30
30
|
|
31
31
|
if token.start_with?("#")
|
32
|
-
comments << token
|
32
|
+
comments << strip_comment_prefix(token)
|
33
33
|
else
|
34
34
|
magic_number = token
|
35
35
|
end
|
@@ -38,11 +38,11 @@ module PNM
|
|
38
38
|
assert_valid_magic_number(magic_number)
|
39
39
|
|
40
40
|
while tokens.size < token_number[magic_number]
|
41
|
-
content.
|
41
|
+
content.sub!(/\A[ \t\r\n]+/, "")
|
42
42
|
token = next_token!(content)
|
43
43
|
|
44
44
|
if token.start_with?("#")
|
45
|
-
comments << token
|
45
|
+
comments << strip_comment_prefix(token)
|
46
46
|
else
|
47
47
|
tokens << token
|
48
48
|
end
|
@@ -100,6 +100,10 @@ module PNM
|
|
100
100
|
token
|
101
101
|
end
|
102
102
|
|
103
|
+
def self.strip_comment_prefix(comment)
|
104
|
+
comment.sub(/\A# */, "")
|
105
|
+
end
|
106
|
+
|
103
107
|
def self.assert_valid_magic_number(magic_number)
|
104
108
|
return if %w[P1 P2 P3 P4 P5 P6].include?(magic_number)
|
105
109
|
|
@@ -108,21 +112,21 @@ module PNM
|
|
108
112
|
end
|
109
113
|
|
110
114
|
def self.assert_integer(value_string, value_name)
|
111
|
-
return if value_string
|
115
|
+
return if value_string.match?(/\A[0-9]+\z/)
|
112
116
|
|
113
117
|
msg = "#{value_name} must be an integer - `#{value_string}'"
|
114
118
|
raise PNM::ParserError, msg
|
115
119
|
end
|
116
120
|
|
117
121
|
def self.assert_positive(value, name)
|
118
|
-
return if value
|
122
|
+
return if value.positive?
|
119
123
|
|
120
124
|
msg = "#{name} must be greater than 0 - `#{value}'"
|
121
125
|
raise PNM::ParserError, msg
|
122
126
|
end
|
123
127
|
|
124
128
|
def self.assert_in_maxgray_range(value)
|
125
|
-
return if value
|
129
|
+
return if value.positive? && value <= 255
|
126
130
|
|
127
131
|
msg = "invalid maxgray value - `#{value}'"
|
128
132
|
raise PNM::ParserError, msg
|
data/lib/pnm/version.rb
CHANGED
data/lib/pnm.rb
CHANGED
@@ -87,7 +87,7 @@ require_relative "pnm/exceptions"
|
|
87
87
|
#
|
88
88
|
# == Author
|
89
89
|
#
|
90
|
-
# Copyright (C) 2013-
|
90
|
+
# Copyright (C) 2013-2024 Marcus Stollsteimer
|
91
91
|
#
|
92
92
|
# License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
93
93
|
#
|
@@ -97,8 +97,8 @@ module PNM
|
|
97
97
|
HOMEPAGE = "https://github.com/stomar/pnm"
|
98
98
|
TAGLINE = "create/read/write PNM image files (PBM, PGM, PPM)"
|
99
99
|
|
100
|
-
COPYRIGHT =
|
101
|
-
Copyright (C) 2013-
|
100
|
+
COPYRIGHT = <<~TEXT
|
101
|
+
Copyright (C) 2013-2024 Marcus Stollsteimer.
|
102
102
|
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
|
103
103
|
This is free software: you are free to change and redistribute it.
|
104
104
|
There is NO WARRANTY, to the extent permitted by law.
|
@@ -119,20 +119,7 @@ module PNM
|
|
119
119
|
|
120
120
|
content = Parser.parse(raw_data)
|
121
121
|
|
122
|
-
type, encoding =
|
123
|
-
when "P1"
|
124
|
-
[:pbm, :ascii]
|
125
|
-
when "P2"
|
126
|
-
[:pgm, :ascii]
|
127
|
-
when "P3"
|
128
|
-
[:ppm, :ascii]
|
129
|
-
when "P4"
|
130
|
-
[:pbm, :binary]
|
131
|
-
when "P5"
|
132
|
-
[:pgm, :binary]
|
133
|
-
when "P6"
|
134
|
-
[:ppm, :binary]
|
135
|
-
end
|
122
|
+
type, encoding = type_and_encoding[content[:magic_number]]
|
136
123
|
|
137
124
|
width = content[:width]
|
138
125
|
height = content[:height]
|
@@ -191,4 +178,16 @@ module PNM
|
|
191
178
|
ppm: { ascii: "P3", binary: "P6" }
|
192
179
|
}
|
193
180
|
end
|
181
|
+
|
182
|
+
# @private
|
183
|
+
def self.type_and_encoding # :nodoc:
|
184
|
+
{
|
185
|
+
"P1" => %i[pbm ascii],
|
186
|
+
"P2" => %i[pgm ascii],
|
187
|
+
"P3" => %i[ppm ascii],
|
188
|
+
"P4" => %i[pbm binary],
|
189
|
+
"P5" => %i[pgm binary],
|
190
|
+
"P6" => %i[ppm binary]
|
191
|
+
}
|
192
|
+
end
|
194
193
|
end
|
data/pnm.gemspec
CHANGED
@@ -25,10 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
|
26
26
|
s.license = "GPL-3.0"
|
27
27
|
|
28
|
-
s.required_ruby_version = ">= 2.
|
29
|
-
|
30
|
-
s.add_development_dependency "minitest", ">= 5.0"
|
31
|
-
s.add_development_dependency "rake", ">= 10.0"
|
28
|
+
s.required_ruby_version = ">= 2.6.0"
|
32
29
|
|
33
30
|
s.require_paths = ["lib"]
|
34
31
|
|
data/test/test_converter.rb
CHANGED
@@ -1,14 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# test_converter.rb: Unit tests for the PNM library.
|
4
|
-
#
|
5
|
-
# Copyright (C) 2013-2020 Marcus Stollsteimer
|
6
|
-
|
7
3
|
require "minitest/autorun"
|
8
4
|
require "pnm/converter"
|
9
5
|
|
10
|
-
require_relative "backports"
|
11
|
-
|
12
6
|
|
13
7
|
describe PNM::Converter do
|
14
8
|
|
@@ -136,9 +130,10 @@ describe PNM::Converter do
|
|
136
130
|
it "accepts an additional whitespace character for binary encoded data" do
|
137
131
|
width = @pbm14[:width]
|
138
132
|
height = @pbm14[:height]
|
139
|
-
data = @pbm14[:binary]
|
133
|
+
data = @pbm14[:binary].dup << "\t"
|
140
134
|
expected = @pbm14[:array]
|
141
135
|
|
136
|
+
refute_equal data, @pbm14[:binary]
|
142
137
|
_(@converter.binary2array(:pbm, width, height, data)).must_equal expected
|
143
138
|
end
|
144
139
|
|
data/test/test_exceptions.rb
CHANGED
@@ -1,15 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# test_exceptions.rb: Unit tests for the PNM library.
|
4
|
-
#
|
5
|
-
# Copyright (C) 2013-2020 Marcus Stollsteimer
|
6
|
-
|
7
3
|
require "minitest/autorun"
|
8
4
|
require "stringio"
|
9
5
|
require "pnm"
|
10
6
|
|
11
|
-
require_relative "backports"
|
12
|
-
|
13
7
|
|
14
8
|
describe "PNM.create" do
|
15
9
|
|
data/test/test_image.rb
CHANGED
data/test/test_parser.rb
CHANGED
@@ -1,14 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# test_parser.rb: Unit tests for the PNM library.
|
4
|
-
#
|
5
|
-
# Copyright (C) 2013-2020 Marcus Stollsteimer
|
6
|
-
|
7
3
|
require "minitest/autorun"
|
8
4
|
require "pnm/parser"
|
9
5
|
|
10
|
-
require_relative "backports"
|
11
|
-
|
12
6
|
|
13
7
|
describe PNM::Parser do
|
14
8
|
|
@@ -17,7 +11,7 @@ describe PNM::Parser do
|
|
17
11
|
end
|
18
12
|
|
19
13
|
it "can parse ASCII encoded PBM data" do
|
20
|
-
content =
|
14
|
+
content = <<~PBM.chomp
|
21
15
|
P1 6 2
|
22
16
|
0 1 0 0 1 1
|
23
17
|
0 0 0 1 1 1
|
@@ -33,7 +27,7 @@ describe PNM::Parser do
|
|
33
27
|
end
|
34
28
|
|
35
29
|
it "can parse ASCII encoded PGM data" do
|
36
|
-
content =
|
30
|
+
content = <<~PGM.chomp
|
37
31
|
P2 4 2 100
|
38
32
|
10 20 30 40
|
39
33
|
50 60 70 80
|
@@ -98,7 +92,7 @@ describe PNM::Parser do
|
|
98
92
|
end
|
99
93
|
|
100
94
|
it "can parse comments" do
|
101
|
-
content =
|
95
|
+
content = <<~PBM.chomp
|
102
96
|
# Comment 1
|
103
97
|
P1 # Comment 2
|
104
98
|
6# Comment 3
|
@@ -119,4 +113,25 @@ describe PNM::Parser do
|
|
119
113
|
|
120
114
|
_(@parser.parse(content)).must_equal expected
|
121
115
|
end
|
116
|
+
|
117
|
+
it "can parse a comment containing a # character" do
|
118
|
+
content = <<~PBM.chomp
|
119
|
+
# Comment 1 with # character
|
120
|
+
P1
|
121
|
+
# Comment 2: '# foo' is a comment
|
122
|
+
3
|
123
|
+
2
|
124
|
+
0 1 0
|
125
|
+
1 0 1
|
126
|
+
PBM
|
127
|
+
expected = {
|
128
|
+
magic_number: "P1",
|
129
|
+
width: 3,
|
130
|
+
height: 2,
|
131
|
+
comments: ["Comment 1 with # character", "Comment 2: '# foo' is a comment"],
|
132
|
+
data: "0 1 0\n1 0 1"
|
133
|
+
}
|
134
|
+
|
135
|
+
_(@parser.parse(content)).must_equal expected
|
136
|
+
end
|
122
137
|
end
|
data/test/test_pnm.rb
CHANGED
metadata
CHANGED
@@ -1,43 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pnm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcus Stollsteimer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: minitest
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '5.0'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '5.0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '10.0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '10.0'
|
11
|
+
date: 2024-01-05 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
41
13
|
description: 'PNM is a pure Ruby library for creating, reading, and writing of PNM
|
42
14
|
image files (Portable Anymap): PBM (Portable Bitmap), PGM (Portable Graymap), and
|
43
15
|
PPM (Portable Pixmap).'
|
@@ -61,7 +33,6 @@ files:
|
|
61
33
|
- lib/pnm/parser.rb
|
62
34
|
- lib/pnm/version.rb
|
63
35
|
- pnm.gemspec
|
64
|
-
- test/backports.rb
|
65
36
|
- test/bilevel_2_binary.pbm
|
66
37
|
- test/bilevel_ascii.pbm
|
67
38
|
- test/bilevel_binary.pbm
|
@@ -89,20 +60,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
89
60
|
requirements:
|
90
61
|
- - ">="
|
91
62
|
- !ruby/object:Gem::Version
|
92
|
-
version: 2.
|
63
|
+
version: 2.6.0
|
93
64
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
65
|
requirements:
|
95
66
|
- - ">="
|
96
67
|
- !ruby/object:Gem::Version
|
97
68
|
version: '0'
|
98
69
|
requirements: []
|
99
|
-
rubygems_version: 3.
|
70
|
+
rubygems_version: 3.5.3
|
100
71
|
signing_key:
|
101
72
|
specification_version: 4
|
102
73
|
summary: PNM - create/read/write PNM image files (PBM, PGM, PPM)
|
103
74
|
test_files:
|
104
|
-
- test/test_exceptions.rb
|
105
75
|
- test/test_converter.rb
|
106
|
-
- test/
|
76
|
+
- test/test_exceptions.rb
|
107
77
|
- test/test_image.rb
|
108
78
|
- test/test_parser.rb
|
79
|
+
- test/test_pnm.rb
|
data/test/backports.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module PNM
|
4
|
-
module Backports # :nodoc:
|
5
|
-
module Minitest # :nodoc:
|
6
|
-
|
7
|
-
# Provides workaround for missing value wrappers in minitest < 5.6.0.
|
8
|
-
def _(value = nil, &block)
|
9
|
-
block || value
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
|
16
|
-
if Gem.loaded_specs["minitest"].version < Gem::Version.new("5.6.0")
|
17
|
-
warn "Using workaround for missing value wrappers in minitest < 5.6.0."
|
18
|
-
include PNM::Backports::Minitest
|
19
|
-
end
|