png_conform 0.1.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.
Files changed (108) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +19 -0
  4. data/.rubocop_todo.yml +197 -0
  5. data/CODE_OF_CONDUCT.md +84 -0
  6. data/CONTRIBUTING.md +323 -0
  7. data/Gemfile +13 -0
  8. data/LICENSE +43 -0
  9. data/README.adoc +859 -0
  10. data/Rakefile +10 -0
  11. data/SECURITY.md +147 -0
  12. data/docs/ARCHITECTURE.adoc +681 -0
  13. data/docs/CHUNK_TYPES.adoc +450 -0
  14. data/docs/CLI_OPTIONS.adoc +913 -0
  15. data/docs/COMPATIBILITY.adoc +616 -0
  16. data/examples/README.adoc +398 -0
  17. data/examples/advanced_usage.rb +304 -0
  18. data/examples/basic_usage.rb +210 -0
  19. data/exe/png_conform +6 -0
  20. data/lib/png_conform/analyzers/comparison_analyzer.rb +230 -0
  21. data/lib/png_conform/analyzers/metrics_analyzer.rb +176 -0
  22. data/lib/png_conform/analyzers/optimization_analyzer.rb +190 -0
  23. data/lib/png_conform/analyzers/resolution_analyzer.rb +274 -0
  24. data/lib/png_conform/bindata/chunk_structure.rb +153 -0
  25. data/lib/png_conform/bindata/jng_file.rb +79 -0
  26. data/lib/png_conform/bindata/mng_file.rb +97 -0
  27. data/lib/png_conform/bindata/png_file.rb +162 -0
  28. data/lib/png_conform/cli.rb +116 -0
  29. data/lib/png_conform/commands/check_command.rb +323 -0
  30. data/lib/png_conform/commands/list_command.rb +67 -0
  31. data/lib/png_conform/models/chunk.rb +84 -0
  32. data/lib/png_conform/models/chunk_info.rb +71 -0
  33. data/lib/png_conform/models/compression_info.rb +49 -0
  34. data/lib/png_conform/models/decoded_chunk_data.rb +143 -0
  35. data/lib/png_conform/models/file_analysis.rb +181 -0
  36. data/lib/png_conform/models/file_info.rb +91 -0
  37. data/lib/png_conform/models/image_info.rb +52 -0
  38. data/lib/png_conform/models/validation_error.rb +89 -0
  39. data/lib/png_conform/models/validation_result.rb +137 -0
  40. data/lib/png_conform/readers/full_load_reader.rb +113 -0
  41. data/lib/png_conform/readers/streaming_reader.rb +180 -0
  42. data/lib/png_conform/reporters/base_reporter.rb +53 -0
  43. data/lib/png_conform/reporters/color_reporter.rb +65 -0
  44. data/lib/png_conform/reporters/json_reporter.rb +18 -0
  45. data/lib/png_conform/reporters/palette_reporter.rb +48 -0
  46. data/lib/png_conform/reporters/quiet_reporter.rb +18 -0
  47. data/lib/png_conform/reporters/reporter_factory.rb +108 -0
  48. data/lib/png_conform/reporters/summary_reporter.rb +65 -0
  49. data/lib/png_conform/reporters/text_reporter.rb +66 -0
  50. data/lib/png_conform/reporters/verbose_reporter.rb +87 -0
  51. data/lib/png_conform/reporters/very_verbose_reporter.rb +33 -0
  52. data/lib/png_conform/reporters/visual_elements.rb +66 -0
  53. data/lib/png_conform/reporters/yaml_reporter.rb +18 -0
  54. data/lib/png_conform/services/profile_manager.rb +242 -0
  55. data/lib/png_conform/services/validation_service.rb +457 -0
  56. data/lib/png_conform/services/zlib_validator.rb +270 -0
  57. data/lib/png_conform/validators/ancillary/bkgd_validator.rb +140 -0
  58. data/lib/png_conform/validators/ancillary/chrm_validator.rb +178 -0
  59. data/lib/png_conform/validators/ancillary/cicp_validator.rb +202 -0
  60. data/lib/png_conform/validators/ancillary/gama_validator.rb +105 -0
  61. data/lib/png_conform/validators/ancillary/hist_validator.rb +147 -0
  62. data/lib/png_conform/validators/ancillary/iccp_validator.rb +243 -0
  63. data/lib/png_conform/validators/ancillary/itxt_validator.rb +280 -0
  64. data/lib/png_conform/validators/ancillary/mdcv_validator.rb +201 -0
  65. data/lib/png_conform/validators/ancillary/offs_validator.rb +132 -0
  66. data/lib/png_conform/validators/ancillary/pcal_validator.rb +289 -0
  67. data/lib/png_conform/validators/ancillary/phys_validator.rb +107 -0
  68. data/lib/png_conform/validators/ancillary/sbit_validator.rb +176 -0
  69. data/lib/png_conform/validators/ancillary/scal_validator.rb +180 -0
  70. data/lib/png_conform/validators/ancillary/splt_validator.rb +223 -0
  71. data/lib/png_conform/validators/ancillary/srgb_validator.rb +117 -0
  72. data/lib/png_conform/validators/ancillary/ster_validator.rb +111 -0
  73. data/lib/png_conform/validators/ancillary/text_validator.rb +129 -0
  74. data/lib/png_conform/validators/ancillary/time_validator.rb +132 -0
  75. data/lib/png_conform/validators/ancillary/trns_validator.rb +154 -0
  76. data/lib/png_conform/validators/ancillary/ztxt_validator.rb +173 -0
  77. data/lib/png_conform/validators/apng/actl_validator.rb +81 -0
  78. data/lib/png_conform/validators/apng/fctl_validator.rb +155 -0
  79. data/lib/png_conform/validators/apng/fdat_validator.rb +117 -0
  80. data/lib/png_conform/validators/base_validator.rb +241 -0
  81. data/lib/png_conform/validators/chunk_registry.rb +219 -0
  82. data/lib/png_conform/validators/critical/idat_validator.rb +77 -0
  83. data/lib/png_conform/validators/critical/iend_validator.rb +68 -0
  84. data/lib/png_conform/validators/critical/ihdr_validator.rb +160 -0
  85. data/lib/png_conform/validators/critical/plte_validator.rb +120 -0
  86. data/lib/png_conform/validators/jng/jdat_validator.rb +66 -0
  87. data/lib/png_conform/validators/jng/jhdr_validator.rb +116 -0
  88. data/lib/png_conform/validators/jng/jsep_validator.rb +66 -0
  89. data/lib/png_conform/validators/mng/back_validator.rb +87 -0
  90. data/lib/png_conform/validators/mng/clip_validator.rb +65 -0
  91. data/lib/png_conform/validators/mng/clon_validator.rb +45 -0
  92. data/lib/png_conform/validators/mng/defi_validator.rb +104 -0
  93. data/lib/png_conform/validators/mng/dhdr_validator.rb +104 -0
  94. data/lib/png_conform/validators/mng/disc_validator.rb +44 -0
  95. data/lib/png_conform/validators/mng/endl_validator.rb +65 -0
  96. data/lib/png_conform/validators/mng/fram_validator.rb +91 -0
  97. data/lib/png_conform/validators/mng/loop_validator.rb +75 -0
  98. data/lib/png_conform/validators/mng/mend_validator.rb +31 -0
  99. data/lib/png_conform/validators/mng/mhdr_validator.rb +69 -0
  100. data/lib/png_conform/validators/mng/move_validator.rb +61 -0
  101. data/lib/png_conform/validators/mng/save_validator.rb +39 -0
  102. data/lib/png_conform/validators/mng/seek_validator.rb +42 -0
  103. data/lib/png_conform/validators/mng/show_validator.rb +52 -0
  104. data/lib/png_conform/validators/mng/term_validator.rb +84 -0
  105. data/lib/png_conform/version.rb +5 -0
  106. data/lib/png_conform.rb +101 -0
  107. data/png_conform.gemspec +43 -0
  108. metadata +201 -0
@@ -0,0 +1,101 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bindata"
4
+ require "lutaml/model"
5
+ require "thor"
6
+
7
+ require_relative "png_conform/version"
8
+
9
+ # Configure lutaml-model for YAML/JSON serialization
10
+ Lutaml::Model::Config.configure do |config|
11
+ config.yaml_adapter_type = :standard_yaml
12
+ config.json_adapter_type = :standard_json
13
+ end
14
+
15
+ module PngConform
16
+ class Error < StandardError; end
17
+
18
+ class ValidationError < Error; end
19
+
20
+ class ParseError < Error; end
21
+
22
+ # Load BinData structures (Phase 2 - implemented)
23
+ require_relative "png_conform/bindata/chunk_structure"
24
+ require_relative "png_conform/bindata/png_file"
25
+ require_relative "png_conform/bindata/mng_file"
26
+ require_relative "png_conform/bindata/jng_file"
27
+
28
+ # Load readers (Phase 2 - implemented)
29
+ require_relative "png_conform/readers/streaming_reader"
30
+ require_relative "png_conform/readers/full_load_reader"
31
+
32
+ # Load domain models (Phase 3 & 10 - implemented)
33
+ require_relative "png_conform/models/decoded_chunk_data"
34
+ require_relative "png_conform/models/chunk"
35
+ require_relative "png_conform/models/validation_error"
36
+ require_relative "png_conform/models/chunk_info"
37
+ require_relative "png_conform/models/image_info"
38
+ require_relative "png_conform/models/compression_info"
39
+ require_relative "png_conform/models/file_info"
40
+ require_relative "png_conform/models/validation_result"
41
+ require_relative "png_conform/models/file_analysis"
42
+
43
+ # Load validators (Phase 4 & 5 - implemented)
44
+ require_relative "png_conform/validators/base_validator"
45
+
46
+ # Critical validators
47
+ require_relative "png_conform/validators/critical/ihdr_validator"
48
+ require_relative "png_conform/validators/critical/plte_validator"
49
+ require_relative "png_conform/validators/critical/idat_validator"
50
+ require_relative "png_conform/validators/critical/iend_validator"
51
+
52
+ # Ancillary validators
53
+ require_relative "png_conform/validators/ancillary/gama_validator"
54
+ require_relative "png_conform/validators/ancillary/trns_validator"
55
+ require_relative "png_conform/validators/ancillary/chrm_validator"
56
+ require_relative "png_conform/validators/ancillary/srgb_validator"
57
+ require_relative "png_conform/validators/ancillary/iccp_validator"
58
+ require_relative "png_conform/validators/ancillary/text_validator"
59
+ require_relative "png_conform/validators/ancillary/ztxt_validator"
60
+ require_relative "png_conform/validators/ancillary/itxt_validator"
61
+ require_relative "png_conform/validators/ancillary/bkgd_validator"
62
+ require_relative "png_conform/validators/ancillary/phys_validator"
63
+ require_relative "png_conform/validators/ancillary/sbit_validator"
64
+ require_relative "png_conform/validators/ancillary/splt_validator"
65
+ require_relative "png_conform/validators/ancillary/hist_validator"
66
+ require_relative "png_conform/validators/ancillary/time_validator"
67
+ require_relative "png_conform/validators/ancillary/offs_validator"
68
+ require_relative "png_conform/validators/ancillary/pcal_validator"
69
+ require_relative "png_conform/validators/ancillary/scal_validator"
70
+ require_relative "png_conform/validators/ancillary/ster_validator"
71
+ require_relative "png_conform/validators/ancillary/cicp_validator"
72
+ require_relative "png_conform/validators/ancillary/mdcv_validator"
73
+
74
+ # Load services (Phase 9 - implemented)
75
+ require_relative "png_conform/validators/chunk_registry"
76
+ require_relative "png_conform/services/validation_service"
77
+ require_relative "png_conform/services/profile_manager"
78
+
79
+ # Load analyzers (Phase 13 - Quick Win features)
80
+ require_relative "png_conform/analyzers/optimization_analyzer"
81
+ require_relative "png_conform/analyzers/metrics_analyzer"
82
+ require_relative "png_conform/analyzers/resolution_analyzer"
83
+ require_relative "png_conform/analyzers/comparison_analyzer"
84
+
85
+ # Load reporters (Phase 10 & 7 - implemented)
86
+ require_relative "png_conform/reporters/visual_elements"
87
+ require_relative "png_conform/reporters/base_reporter"
88
+ require_relative "png_conform/reporters/summary_reporter"
89
+ require_relative "png_conform/reporters/verbose_reporter"
90
+ require_relative "png_conform/reporters/very_verbose_reporter"
91
+ require_relative "png_conform/reporters/quiet_reporter"
92
+ require_relative "png_conform/reporters/palette_reporter"
93
+ require_relative "png_conform/reporters/text_reporter"
94
+ require_relative "png_conform/reporters/color_reporter"
95
+ require_relative "png_conform/reporters/yaml_reporter"
96
+ require_relative "png_conform/reporters/json_reporter"
97
+ require_relative "png_conform/reporters/reporter_factory"
98
+
99
+ # Load CLI (Phase 11 - implemented)
100
+ require_relative "png_conform/cli"
101
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/png_conform/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "png_conform"
7
+ spec.version = PngConform::VERSION
8
+ spec.authors = ["Ribose Inc."]
9
+ spec.email = ["open.source@ribose.com"]
10
+
11
+ spec.summary = "Pure Ruby PNG/MNG/JNG validity checker with profile support"
12
+ spec.description = <<~HEREDOC
13
+ PngConform provides a comprehensive PNG, MNG, and JNG file validation library
14
+ in pure Ruby. It validates file structure, chunk validity, CRC checksums,
15
+ zlib compression, and profile conformance. Built with a layered architecture
16
+ using BinData for binary parsing, Lutaml::Model for domain models, and Thor
17
+ for CLI. Supports PNG baseline, MNG-VLC, MNG-LC, and JNG profiles with
18
+ detailed validation reporting compatible with pngcheck output.
19
+ HEREDOC
20
+
21
+ spec.homepage = "https://github.com/claricle/png_conform"
22
+ spec.license = "BSD-2-Clause"
23
+ spec.required_ruby_version = ">= 3.0.0"
24
+
25
+ spec.metadata["homepage_uri"] = spec.homepage
26
+ spec.metadata["source_code_uri"] = "https://github.com/claricle/png_conform"
27
+ spec.metadata["changelog_uri"] = "https://github.com/claricle/png_conform"
28
+
29
+ # Specify which files should be added to the gem when it is released.
30
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
31
+ spec.files = Dir.chdir(__dir__) do
32
+ `git ls-files -z`.split("\x0").reject do |f|
33
+ (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
34
+ end
35
+ end
36
+ spec.bindir = "exe"
37
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
38
+ spec.require_paths = ["lib"]
39
+
40
+ spec.add_dependency "bindata", "~> 2.5"
41
+ spec.add_dependency "lutaml-model", "~> 0.7"
42
+ spec.add_dependency "thor", "~> 1.4"
43
+ end
metadata ADDED
@@ -0,0 +1,201 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: png_conform
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ribose Inc.
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2025-11-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bindata
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.5'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: lutaml-model
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.7'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.7'
41
+ - !ruby/object:Gem::Dependency
42
+ name: thor
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.4'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.4'
55
+ description: |
56
+ PngConform provides a comprehensive PNG, MNG, and JNG file validation library
57
+ in pure Ruby. It validates file structure, chunk validity, CRC checksums,
58
+ zlib compression, and profile conformance. Built with a layered architecture
59
+ using BinData for binary parsing, Lutaml::Model for domain models, and Thor
60
+ for CLI. Supports PNG baseline, MNG-VLC, MNG-LC, and JNG profiles with
61
+ detailed validation reporting compatible with pngcheck output.
62
+ email:
63
+ - open.source@ribose.com
64
+ executables:
65
+ - png_conform
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - ".rspec"
70
+ - ".rubocop.yml"
71
+ - ".rubocop_todo.yml"
72
+ - CODE_OF_CONDUCT.md
73
+ - CONTRIBUTING.md
74
+ - Gemfile
75
+ - LICENSE
76
+ - README.adoc
77
+ - Rakefile
78
+ - SECURITY.md
79
+ - docs/ARCHITECTURE.adoc
80
+ - docs/CHUNK_TYPES.adoc
81
+ - docs/CLI_OPTIONS.adoc
82
+ - docs/COMPATIBILITY.adoc
83
+ - examples/README.adoc
84
+ - examples/advanced_usage.rb
85
+ - examples/basic_usage.rb
86
+ - exe/png_conform
87
+ - lib/png_conform.rb
88
+ - lib/png_conform/analyzers/comparison_analyzer.rb
89
+ - lib/png_conform/analyzers/metrics_analyzer.rb
90
+ - lib/png_conform/analyzers/optimization_analyzer.rb
91
+ - lib/png_conform/analyzers/resolution_analyzer.rb
92
+ - lib/png_conform/bindata/chunk_structure.rb
93
+ - lib/png_conform/bindata/jng_file.rb
94
+ - lib/png_conform/bindata/mng_file.rb
95
+ - lib/png_conform/bindata/png_file.rb
96
+ - lib/png_conform/cli.rb
97
+ - lib/png_conform/commands/check_command.rb
98
+ - lib/png_conform/commands/list_command.rb
99
+ - lib/png_conform/models/chunk.rb
100
+ - lib/png_conform/models/chunk_info.rb
101
+ - lib/png_conform/models/compression_info.rb
102
+ - lib/png_conform/models/decoded_chunk_data.rb
103
+ - lib/png_conform/models/file_analysis.rb
104
+ - lib/png_conform/models/file_info.rb
105
+ - lib/png_conform/models/image_info.rb
106
+ - lib/png_conform/models/validation_error.rb
107
+ - lib/png_conform/models/validation_result.rb
108
+ - lib/png_conform/readers/full_load_reader.rb
109
+ - lib/png_conform/readers/streaming_reader.rb
110
+ - lib/png_conform/reporters/base_reporter.rb
111
+ - lib/png_conform/reporters/color_reporter.rb
112
+ - lib/png_conform/reporters/json_reporter.rb
113
+ - lib/png_conform/reporters/palette_reporter.rb
114
+ - lib/png_conform/reporters/quiet_reporter.rb
115
+ - lib/png_conform/reporters/reporter_factory.rb
116
+ - lib/png_conform/reporters/summary_reporter.rb
117
+ - lib/png_conform/reporters/text_reporter.rb
118
+ - lib/png_conform/reporters/verbose_reporter.rb
119
+ - lib/png_conform/reporters/very_verbose_reporter.rb
120
+ - lib/png_conform/reporters/visual_elements.rb
121
+ - lib/png_conform/reporters/yaml_reporter.rb
122
+ - lib/png_conform/services/profile_manager.rb
123
+ - lib/png_conform/services/validation_service.rb
124
+ - lib/png_conform/services/zlib_validator.rb
125
+ - lib/png_conform/validators/ancillary/bkgd_validator.rb
126
+ - lib/png_conform/validators/ancillary/chrm_validator.rb
127
+ - lib/png_conform/validators/ancillary/cicp_validator.rb
128
+ - lib/png_conform/validators/ancillary/gama_validator.rb
129
+ - lib/png_conform/validators/ancillary/hist_validator.rb
130
+ - lib/png_conform/validators/ancillary/iccp_validator.rb
131
+ - lib/png_conform/validators/ancillary/itxt_validator.rb
132
+ - lib/png_conform/validators/ancillary/mdcv_validator.rb
133
+ - lib/png_conform/validators/ancillary/offs_validator.rb
134
+ - lib/png_conform/validators/ancillary/pcal_validator.rb
135
+ - lib/png_conform/validators/ancillary/phys_validator.rb
136
+ - lib/png_conform/validators/ancillary/sbit_validator.rb
137
+ - lib/png_conform/validators/ancillary/scal_validator.rb
138
+ - lib/png_conform/validators/ancillary/splt_validator.rb
139
+ - lib/png_conform/validators/ancillary/srgb_validator.rb
140
+ - lib/png_conform/validators/ancillary/ster_validator.rb
141
+ - lib/png_conform/validators/ancillary/text_validator.rb
142
+ - lib/png_conform/validators/ancillary/time_validator.rb
143
+ - lib/png_conform/validators/ancillary/trns_validator.rb
144
+ - lib/png_conform/validators/ancillary/ztxt_validator.rb
145
+ - lib/png_conform/validators/apng/actl_validator.rb
146
+ - lib/png_conform/validators/apng/fctl_validator.rb
147
+ - lib/png_conform/validators/apng/fdat_validator.rb
148
+ - lib/png_conform/validators/base_validator.rb
149
+ - lib/png_conform/validators/chunk_registry.rb
150
+ - lib/png_conform/validators/critical/idat_validator.rb
151
+ - lib/png_conform/validators/critical/iend_validator.rb
152
+ - lib/png_conform/validators/critical/ihdr_validator.rb
153
+ - lib/png_conform/validators/critical/plte_validator.rb
154
+ - lib/png_conform/validators/jng/jdat_validator.rb
155
+ - lib/png_conform/validators/jng/jhdr_validator.rb
156
+ - lib/png_conform/validators/jng/jsep_validator.rb
157
+ - lib/png_conform/validators/mng/back_validator.rb
158
+ - lib/png_conform/validators/mng/clip_validator.rb
159
+ - lib/png_conform/validators/mng/clon_validator.rb
160
+ - lib/png_conform/validators/mng/defi_validator.rb
161
+ - lib/png_conform/validators/mng/dhdr_validator.rb
162
+ - lib/png_conform/validators/mng/disc_validator.rb
163
+ - lib/png_conform/validators/mng/endl_validator.rb
164
+ - lib/png_conform/validators/mng/fram_validator.rb
165
+ - lib/png_conform/validators/mng/loop_validator.rb
166
+ - lib/png_conform/validators/mng/mend_validator.rb
167
+ - lib/png_conform/validators/mng/mhdr_validator.rb
168
+ - lib/png_conform/validators/mng/move_validator.rb
169
+ - lib/png_conform/validators/mng/save_validator.rb
170
+ - lib/png_conform/validators/mng/seek_validator.rb
171
+ - lib/png_conform/validators/mng/show_validator.rb
172
+ - lib/png_conform/validators/mng/term_validator.rb
173
+ - lib/png_conform/version.rb
174
+ - png_conform.gemspec
175
+ homepage: https://github.com/claricle/png_conform
176
+ licenses:
177
+ - BSD-2-Clause
178
+ metadata:
179
+ homepage_uri: https://github.com/claricle/png_conform
180
+ source_code_uri: https://github.com/claricle/png_conform
181
+ changelog_uri: https://github.com/claricle/png_conform
182
+ post_install_message:
183
+ rdoc_options: []
184
+ require_paths:
185
+ - lib
186
+ required_ruby_version: !ruby/object:Gem::Requirement
187
+ requirements:
188
+ - - ">="
189
+ - !ruby/object:Gem::Version
190
+ version: 3.0.0
191
+ required_rubygems_version: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ requirements: []
197
+ rubygems_version: 3.5.22
198
+ signing_key:
199
+ specification_version: 4
200
+ summary: Pure Ruby PNG/MNG/JNG validity checker with profile support
201
+ test_files: []