pnm 0.6.0 → 0.6.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 +4 -4
- data/README.md +6 -4
- data/Rakefile +1 -1
- data/benchmark/bm_converter.rb +1 -1
- data/lib/pnm/converter.rb +2 -2
- data/lib/pnm/image.rb +5 -11
- data/lib/pnm/version.rb +2 -2
- data/lib/pnm.rb +15 -16
- data/pnm.gemspec +0 -3
- data/test/backports.rb +1 -1
- data/test/test_converter.rb +3 -2
- data/test/test_exceptions.rb +1 -1
- data/test/test_image.rb +1 -1
- data/test/test_parser.rb +1 -1
- data/test/test_pnm.rb +1 -1
- metadata +6 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fdfdb7ac32419e9381856654116f77070fabb87713e2353c10230fb6ac9c79c9
|
4
|
+
data.tar.gz: 06042a5b1c3d26d5b4e982b3e2e4983b652d1e1ffab8987d5f8b183a017c4abb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17970b6a53282e449e76f9225e65c914f92084e4060b5fbe3b9bbbd56cae9ae830e122fbf8ed0bbb321bf443ef1c9538d4b8a2b859759528aa8862d479375796
|
7
|
+
data.tar.gz: b66f7f50567bb137a5b091293c7b77206966e570e300157a0ebde66647e46f2c09d07cb093499f3527a5b6149d01a0f88baa235c5450e61d9b0ba02db2a2cb5e
|
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
|
|
@@ -98,9 +100,9 @@ Requirements
|
|
98
100
|
|
99
101
|
- PNM has been tested with
|
100
102
|
|
101
|
-
- Ruby
|
102
|
-
- Ruby 2.6, 2.5, 2.4, 2.3, 2.2, 2.1, 2.0.0,
|
103
|
-
- JRuby 9.
|
103
|
+
- Ruby 3.1, 3.0,
|
104
|
+
- Ruby 2.7, 2.6, 2.5, 2.4, 2.3, 2.2, 2.1, 2.0.0,
|
105
|
+
- JRuby 9.3.4.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-2022 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
data/benchmark/bm_converter.rb
CHANGED
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
|
@@ -107,7 +107,7 @@ 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
112
|
data.gsub(/\A[ \t\r\n]+/, "").split(/[ \t\r\n]+/)
|
113
113
|
end
|
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
|
|
@@ -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
|
@@ -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/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-2022 Marcus Stollsteimer
|
91
91
|
#
|
92
92
|
# License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
93
93
|
#
|
@@ -98,7 +98,7 @@ module PNM
|
|
98
98
|
TAGLINE = "create/read/write PNM image files (PBM, PGM, PPM)"
|
99
99
|
|
100
100
|
COPYRIGHT = <<-TEXT.gsub(/^ +/, "")
|
101
|
-
Copyright (C) 2013-
|
101
|
+
Copyright (C) 2013-2022 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
@@ -27,9 +27,6 @@ Gem::Specification.new do |s|
|
|
27
27
|
|
28
28
|
s.required_ruby_version = ">= 2.0.0"
|
29
29
|
|
30
|
-
s.add_development_dependency "minitest", ">= 5.0"
|
31
|
-
s.add_development_dependency "rake", ">= 10.0"
|
32
|
-
|
33
30
|
s.require_paths = ["lib"]
|
34
31
|
|
35
32
|
s.test_files = Dir.glob("test/**/test_*.rb")
|
data/test/backports.rb
CHANGED
data/test/test_converter.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# test_converter.rb: Unit tests for the PNM library.
|
4
4
|
#
|
5
|
-
# Copyright (C) 2013-
|
5
|
+
# Copyright (C) 2013-2022 Marcus Stollsteimer
|
6
6
|
|
7
7
|
require "minitest/autorun"
|
8
8
|
require "pnm/converter"
|
@@ -136,9 +136,10 @@ describe PNM::Converter do
|
|
136
136
|
it "accepts an additional whitespace character for binary encoded data" do
|
137
137
|
width = @pbm14[:width]
|
138
138
|
height = @pbm14[:height]
|
139
|
-
data = @pbm14[:binary]
|
139
|
+
data = @pbm14[:binary].dup << "\t"
|
140
140
|
expected = @pbm14[:array]
|
141
141
|
|
142
|
+
refute_equal data, @pbm14[:binary]
|
142
143
|
_(@converter.binary2array(:pbm, width, height, data)).must_equal expected
|
143
144
|
end
|
144
145
|
|
data/test/test_exceptions.rb
CHANGED
data/test/test_image.rb
CHANGED
data/test/test_parser.rb
CHANGED
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.6.
|
4
|
+
version: 0.6.1
|
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: 2022-05-09 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).'
|
@@ -96,13 +68,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
68
|
- !ruby/object:Gem::Version
|
97
69
|
version: '0'
|
98
70
|
requirements: []
|
99
|
-
rubygems_version: 3.
|
71
|
+
rubygems_version: 3.3.7
|
100
72
|
signing_key:
|
101
73
|
specification_version: 4
|
102
74
|
summary: PNM - create/read/write PNM image files (PBM, PGM, PPM)
|
103
75
|
test_files:
|
104
|
-
- test/test_exceptions.rb
|
105
76
|
- test/test_converter.rb
|
106
|
-
- test/
|
77
|
+
- test/test_exceptions.rb
|
107
78
|
- test/test_image.rb
|
108
79
|
- test/test_parser.rb
|
80
|
+
- test/test_pnm.rb
|