png_conform 0.1.1 → 0.1.2
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/.rubocop_todo.yml +14 -84
- data/Gemfile +2 -0
- data/README.adoc +3 -2
- data/benchmarks/README.adoc +570 -0
- data/benchmarks/config/default.yml +35 -0
- data/benchmarks/config/full.yml +32 -0
- data/benchmarks/config/quick.yml +32 -0
- data/benchmarks/direct_validation.rb +18 -0
- data/benchmarks/lib/benchmark_runner.rb +204 -0
- data/benchmarks/lib/metrics_collector.rb +193 -0
- data/benchmarks/lib/png_conform_runner.rb +68 -0
- data/benchmarks/lib/pngcheck_runner.rb +67 -0
- data/benchmarks/lib/report_generator.rb +301 -0
- data/benchmarks/lib/tool_runner.rb +104 -0
- data/benchmarks/profile_loading.rb +12 -0
- data/benchmarks/profile_validation.rb +18 -0
- data/benchmarks/results/.gitkeep +0 -0
- data/benchmarks/run_benchmark.rb +159 -0
- data/docs/CHUNK_TYPES.adoc +42 -0
- data/examples/README.md +282 -0
- data/lib/png_conform/commands/check_command.rb +3 -2
- data/lib/png_conform/models/decoded_chunk_data.rb +33 -0
- data/lib/png_conform/reporters/reporter_factory.rb +18 -11
- data/lib/png_conform/services/validation_service.rb +60 -15
- data/lib/png_conform/validators/ancillary/idot_validator.rb +102 -0
- data/lib/png_conform/validators/chunk_registry.rb +131 -128
- data/lib/png_conform/version.rb +1 -1
- data/lib/png_conform.rb +7 -46
- metadata +19 -2
|
@@ -1,54 +1,14 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative "critical/ihdr_validator"
|
|
4
|
-
require_relative "critical/plte_validator"
|
|
5
|
-
require_relative "critical/idat_validator"
|
|
6
|
-
require_relative "critical/iend_validator"
|
|
7
|
-
require_relative "ancillary/text_validator"
|
|
8
|
-
require_relative "ancillary/ztxt_validator"
|
|
9
|
-
require_relative "ancillary/itxt_validator"
|
|
10
|
-
require_relative "ancillary/gama_validator"
|
|
11
|
-
require_relative "ancillary/chrm_validator"
|
|
12
|
-
require_relative "ancillary/srgb_validator"
|
|
13
|
-
require_relative "ancillary/sbit_validator"
|
|
14
|
-
require_relative "ancillary/bkgd_validator"
|
|
15
|
-
require_relative "ancillary/iccp_validator"
|
|
16
|
-
require_relative "ancillary/hist_validator"
|
|
17
|
-
require_relative "ancillary/splt_validator"
|
|
18
|
-
require_relative "ancillary/trns_validator"
|
|
19
|
-
require_relative "ancillary/phys_validator"
|
|
20
|
-
require_relative "ancillary/time_validator"
|
|
21
|
-
require_relative "ancillary/offs_validator"
|
|
22
|
-
require_relative "ancillary/pcal_validator"
|
|
23
|
-
require_relative "ancillary/scal_validator"
|
|
24
|
-
require_relative "ancillary/ster_validator"
|
|
25
|
-
require_relative "ancillary/cicp_validator"
|
|
26
|
-
require_relative "ancillary/mdcv_validator"
|
|
27
|
-
require_relative "apng/actl_validator"
|
|
28
|
-
require_relative "apng/fctl_validator"
|
|
29
|
-
require_relative "apng/fdat_validator"
|
|
30
|
-
require_relative "mng/mhdr_validator"
|
|
31
|
-
require_relative "mng/mend_validator"
|
|
32
|
-
require_relative "mng/dhdr_validator"
|
|
33
|
-
require_relative "mng/fram_validator"
|
|
34
|
-
require_relative "mng/defi_validator"
|
|
35
|
-
require_relative "mng/back_validator"
|
|
36
|
-
require_relative "mng/loop_validator"
|
|
37
|
-
require_relative "mng/endl_validator"
|
|
38
|
-
require_relative "mng/term_validator"
|
|
39
|
-
require_relative "mng/save_validator"
|
|
40
|
-
require_relative "mng/seek_validator"
|
|
41
|
-
require_relative "mng/move_validator"
|
|
42
|
-
require_relative "mng/clip_validator"
|
|
43
|
-
require_relative "mng/show_validator"
|
|
44
|
-
require_relative "mng/clon_validator"
|
|
45
|
-
require_relative "mng/disc_validator"
|
|
46
|
-
require_relative "jng/jhdr_validator"
|
|
47
|
-
require_relative "jng/jdat_validator"
|
|
48
|
-
require_relative "jng/jsep_validator"
|
|
49
|
-
|
|
50
3
|
module PngConform
|
|
51
4
|
module Validators
|
|
5
|
+
# Define validator category modules upfront for proper namespace resolution
|
|
6
|
+
module Critical; end
|
|
7
|
+
module Ancillary; end
|
|
8
|
+
module Apng; end
|
|
9
|
+
module Mng; end
|
|
10
|
+
module Jng; end
|
|
11
|
+
|
|
52
12
|
# Registry of chunk types to their corresponding validator classes
|
|
53
13
|
#
|
|
54
14
|
# This class maintains a mapping between PNG chunk type codes and
|
|
@@ -62,85 +22,100 @@ module PngConform
|
|
|
62
22
|
# - Palette support (hIST, sPLT, tRNS)
|
|
63
23
|
# - Metadata (pHYs, tIME, oFFs, pCAL, sCAL, sTER)
|
|
64
24
|
# - PNG 3rd edition (cICP, mDCv)
|
|
25
|
+
# - Apple extensions (iDOT)
|
|
65
26
|
# - APNG (acTL, fcTL, fdAT)
|
|
66
27
|
# - MNG (MHDR, MEND, DHDR, FRAM, DEFI, BACK, LOOP, ENDL, etc.)
|
|
67
28
|
# - JNG (JHDR, JDAT, JSEP)
|
|
68
29
|
#
|
|
30
|
+
# Validators are loaded lazily on-demand to improve startup performance.
|
|
31
|
+
#
|
|
69
32
|
class ChunkRegistry
|
|
70
|
-
# Map of chunk type codes to validator
|
|
71
|
-
|
|
33
|
+
# Map of chunk type codes to validator file paths and class names
|
|
34
|
+
# Format: [file_path, module_path, class_name]
|
|
35
|
+
VALIDATOR_PATHS = {
|
|
72
36
|
# Critical chunks
|
|
73
|
-
"IHDR" => Critical
|
|
74
|
-
"PLTE" => Critical
|
|
75
|
-
"IDAT" => Critical
|
|
76
|
-
"IEND" => Critical
|
|
37
|
+
"IHDR" => ["critical/ihdr_validator", "Critical", "IhdrValidator"],
|
|
38
|
+
"PLTE" => ["critical/plte_validator", "Critical", "PlteValidator"],
|
|
39
|
+
"IDAT" => ["critical/idat_validator", "Critical", "IdatValidator"],
|
|
40
|
+
"IEND" => ["critical/iend_validator", "Critical", "IendValidator"],
|
|
77
41
|
|
|
78
42
|
# Text chunks
|
|
79
|
-
"tEXt" => Ancillary
|
|
80
|
-
"zTXt" => Ancillary
|
|
81
|
-
"iTXt" => Ancillary
|
|
43
|
+
"tEXt" => ["ancillary/text_validator", "Ancillary", "TextValidator"],
|
|
44
|
+
"zTXt" => ["ancillary/ztxt_validator", "Ancillary", "ZtxtValidator"],
|
|
45
|
+
"iTXt" => ["ancillary/itxt_validator", "Ancillary", "ItxtValidator"],
|
|
82
46
|
|
|
83
47
|
# Color management
|
|
84
|
-
"gAMA" => Ancillary
|
|
85
|
-
"cHRM" => Ancillary
|
|
86
|
-
"sRGB" => Ancillary
|
|
87
|
-
"sBIT" => Ancillary
|
|
88
|
-
"bKGD" => Ancillary
|
|
89
|
-
"iCCP" => Ancillary
|
|
48
|
+
"gAMA" => ["ancillary/gama_validator", "Ancillary", "GamaValidator"],
|
|
49
|
+
"cHRM" => ["ancillary/chrm_validator", "Ancillary", "ChrmValidator"],
|
|
50
|
+
"sRGB" => ["ancillary/srgb_validator", "Ancillary", "SrgbValidator"],
|
|
51
|
+
"sBIT" => ["ancillary/sbit_validator", "Ancillary", "SbitValidator"],
|
|
52
|
+
"bKGD" => ["ancillary/bkgd_validator", "Ancillary", "BkgdValidator"],
|
|
53
|
+
"iCCP" => ["ancillary/iccp_validator", "Ancillary", "IccpValidator"],
|
|
90
54
|
|
|
91
55
|
# Palette support
|
|
92
|
-
"hIST" => Ancillary
|
|
93
|
-
"sPLT" => Ancillary
|
|
94
|
-
"tRNS" => Ancillary
|
|
56
|
+
"hIST" => ["ancillary/hist_validator", "Ancillary", "HistValidator"],
|
|
57
|
+
"sPLT" => ["ancillary/splt_validator", "Ancillary", "SpltValidator"],
|
|
58
|
+
"tRNS" => ["ancillary/trns_validator", "Ancillary", "TrnsValidator"],
|
|
95
59
|
|
|
96
60
|
# Metadata
|
|
97
|
-
"pHYs" => Ancillary
|
|
98
|
-
"tIME" => Ancillary
|
|
99
|
-
"oFFs" => Ancillary
|
|
100
|
-
"pCAL" => Ancillary
|
|
101
|
-
"sCAL" => Ancillary
|
|
102
|
-
"sTER" => Ancillary
|
|
61
|
+
"pHYs" => ["ancillary/phys_validator", "Ancillary", "PhysValidator"],
|
|
62
|
+
"tIME" => ["ancillary/time_validator", "Ancillary", "TimeValidator"],
|
|
63
|
+
"oFFs" => ["ancillary/offs_validator", "Ancillary", "OffsValidator"],
|
|
64
|
+
"pCAL" => ["ancillary/pcal_validator", "Ancillary", "PcalValidator"],
|
|
65
|
+
"sCAL" => ["ancillary/scal_validator", "Ancillary", "ScalValidator"],
|
|
66
|
+
"sTER" => ["ancillary/ster_validator", "Ancillary", "SterValidator"],
|
|
103
67
|
|
|
104
68
|
# PNG 3rd edition
|
|
105
|
-
"cICP" => Ancillary
|
|
106
|
-
"mDCv" => Ancillary
|
|
69
|
+
"cICP" => ["ancillary/cicp_validator", "Ancillary", "CicpValidator"],
|
|
70
|
+
"mDCv" => ["ancillary/mdcv_validator", "Ancillary", "MdcvValidator"],
|
|
71
|
+
|
|
72
|
+
# Apple extensions
|
|
73
|
+
"iDOT" => ["ancillary/idot_validator", "Ancillary", "IdotValidator"],
|
|
107
74
|
|
|
108
75
|
# APNG (Animated PNG)
|
|
109
|
-
"acTL" => Apng
|
|
110
|
-
"fcTL" => Apng
|
|
111
|
-
"fdAT" => Apng
|
|
76
|
+
"acTL" => ["apng/actl_validator", "Apng", "ActlValidator"],
|
|
77
|
+
"fcTL" => ["apng/fctl_validator", "Apng", "FctlValidator"],
|
|
78
|
+
"fdAT" => ["apng/fdat_validator", "Apng", "FdatValidator"],
|
|
112
79
|
|
|
113
80
|
# MNG (Multiple-image Network Graphics)
|
|
114
|
-
"MHDR" => Mng
|
|
115
|
-
"MEND" => Mng
|
|
116
|
-
"DHDR" => Mng
|
|
117
|
-
"FRAM" => Mng
|
|
118
|
-
"DEFI" => Mng
|
|
119
|
-
"BACK" => Mng
|
|
120
|
-
"LOOP" => Mng
|
|
121
|
-
"ENDL" => Mng
|
|
122
|
-
"TERM" => Mng
|
|
123
|
-
"SAVE" => Mng
|
|
124
|
-
"SEEK" => Mng
|
|
125
|
-
"MOVE" => Mng
|
|
126
|
-
"CLIP" => Mng
|
|
127
|
-
"SHOW" => Mng
|
|
128
|
-
"CLON" => Mng
|
|
129
|
-
"DISC" => Mng
|
|
81
|
+
"MHDR" => ["mng/mhdr_validator", "Mng", "MhdrValidator"],
|
|
82
|
+
"MEND" => ["mng/mend_validator", "Mng", "MendValidator"],
|
|
83
|
+
"DHDR" => ["mng/dhdr_validator", "Mng", "DhdrValidator"],
|
|
84
|
+
"FRAM" => ["mng/fram_validator", "Mng", "FramValidator"],
|
|
85
|
+
"DEFI" => ["mng/defi_validator", "Mng", "DefiValidator"],
|
|
86
|
+
"BACK" => ["mng/back_validator", "Mng", "BackValidator"],
|
|
87
|
+
"LOOP" => ["mng/loop_validator", "Mng", "LoopValidator"],
|
|
88
|
+
"ENDL" => ["mng/endl_validator", "Mng", "EndlValidator"],
|
|
89
|
+
"TERM" => ["mng/term_validator", "Mng", "TermValidator"],
|
|
90
|
+
"SAVE" => ["mng/save_validator", "Mng", "SaveValidator"],
|
|
91
|
+
"SEEK" => ["mng/seek_validator", "Mng", "SeekValidator"],
|
|
92
|
+
"MOVE" => ["mng/move_validator", "Mng", "MoveValidator"],
|
|
93
|
+
"CLIP" => ["mng/clip_validator", "Mng", "ClipValidator"],
|
|
94
|
+
"SHOW" => ["mng/show_validator", "Mng", "ShowValidator"],
|
|
95
|
+
"CLON" => ["mng/clon_validator", "Mng", "ClonValidator"],
|
|
96
|
+
"DISC" => ["mng/disc_validator", "Mng", "DiscValidator"],
|
|
130
97
|
|
|
131
98
|
# JNG (JPEG Network Graphics)
|
|
132
|
-
"JHDR" => Jng
|
|
133
|
-
"JDAT" => Jng
|
|
134
|
-
"JSEP" => Jng
|
|
99
|
+
"JHDR" => ["jng/jhdr_validator", "Jng", "JhdrValidator"],
|
|
100
|
+
"JDAT" => ["jng/jdat_validator", "Jng", "JdatValidator"],
|
|
101
|
+
"JSEP" => ["jng/jsep_validator", "Jng", "JsepValidator"],
|
|
135
102
|
}.freeze
|
|
136
103
|
|
|
137
104
|
class << self
|
|
138
|
-
# Get validator class for a chunk type
|
|
105
|
+
# Get validator class for a chunk type (with lazy loading)
|
|
139
106
|
#
|
|
140
107
|
# @param chunk_type [String] Four-character chunk type code
|
|
141
108
|
# @return [Class, nil] Validator class or nil if not found
|
|
142
109
|
def validator_for(chunk_type)
|
|
143
|
-
|
|
110
|
+
# Return cached validator if already loaded
|
|
111
|
+
return loaded_validators[chunk_type] if loaded_validators.key?(chunk_type)
|
|
112
|
+
|
|
113
|
+
# Check if validator path exists
|
|
114
|
+
validator_info = VALIDATOR_PATHS[chunk_type]
|
|
115
|
+
return nil unless validator_info
|
|
116
|
+
|
|
117
|
+
# Load validator on-demand
|
|
118
|
+
load_validator(chunk_type, validator_info)
|
|
144
119
|
end
|
|
145
120
|
|
|
146
121
|
# Check if a validator exists for a chunk type
|
|
@@ -148,14 +123,14 @@ module PngConform
|
|
|
148
123
|
# @param chunk_type [String] Four-character chunk type code
|
|
149
124
|
# @return [Boolean] True if validator exists
|
|
150
125
|
def validator_exists?(chunk_type)
|
|
151
|
-
|
|
126
|
+
VALIDATOR_PATHS.key?(chunk_type)
|
|
152
127
|
end
|
|
153
128
|
|
|
154
129
|
# Get all registered chunk types
|
|
155
130
|
#
|
|
156
131
|
# @return [Array<String>] List of chunk type codes
|
|
157
132
|
def chunk_types
|
|
158
|
-
|
|
133
|
+
VALIDATOR_PATHS.keys
|
|
159
134
|
end
|
|
160
135
|
|
|
161
136
|
# Get validators by category
|
|
@@ -164,34 +139,34 @@ module PngConform
|
|
|
164
139
|
# (:critical, :text, :color, :palette, :metadata, :png3)
|
|
165
140
|
# @return [Hash] Map of chunk types to validators in category
|
|
166
141
|
def validators_by_category(category)
|
|
167
|
-
case category
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
142
|
+
chunk_types = case category
|
|
143
|
+
when :critical
|
|
144
|
+
%w[IHDR PLTE IDAT IEND]
|
|
145
|
+
when :text
|
|
146
|
+
%w[tEXt zTXt iTXt]
|
|
147
|
+
when :color
|
|
148
|
+
%w[gAMA cHRM sRGB sBIT bKGD iCCP]
|
|
149
|
+
when :palette
|
|
150
|
+
%w[hIST sPLT tRNS]
|
|
151
|
+
when :metadata
|
|
152
|
+
%w[pHYs tIME oFFs pCAL sCAL sTER]
|
|
153
|
+
when :png3
|
|
154
|
+
%w[cICP mDCv]
|
|
155
|
+
when :apng
|
|
156
|
+
%w[acTL fcTL fdAT]
|
|
157
|
+
when :mng
|
|
158
|
+
%w[MHDR MEND DHDR FRAM DEFI BACK LOOP ENDL TERM SAVE SEEK
|
|
159
|
+
MOVE CLIP SHOW CLON DISC]
|
|
160
|
+
when :jng
|
|
161
|
+
%w[JHDR JDAT JSEP]
|
|
162
|
+
else
|
|
163
|
+
[]
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
# Load validators for this category
|
|
167
|
+
chunk_types.each_with_object({}) do |chunk_type, result|
|
|
168
|
+
validator = validator_for(chunk_type)
|
|
169
|
+
result[chunk_type] = validator if validator
|
|
195
170
|
end
|
|
196
171
|
end
|
|
197
172
|
|
|
@@ -199,7 +174,7 @@ module PngConform
|
|
|
199
174
|
#
|
|
200
175
|
# @return [Integer] Number of registered validators
|
|
201
176
|
def count
|
|
202
|
-
|
|
177
|
+
VALIDATOR_PATHS.size
|
|
203
178
|
end
|
|
204
179
|
|
|
205
180
|
# Create validator instance for a chunk
|
|
@@ -213,6 +188,34 @@ module PngConform
|
|
|
213
188
|
|
|
214
189
|
validator_class.new(chunk, context)
|
|
215
190
|
end
|
|
191
|
+
|
|
192
|
+
private
|
|
193
|
+
|
|
194
|
+
# Cache for loaded validator classes
|
|
195
|
+
def loaded_validators
|
|
196
|
+
@loaded_validators ||= {}
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
# Load a validator class on-demand
|
|
200
|
+
#
|
|
201
|
+
# @param chunk_type [String] Chunk type code
|
|
202
|
+
# @param validator_info [Array] [file_path, module_name, class_name]
|
|
203
|
+
# @return [Class, nil] Loaded validator class
|
|
204
|
+
def load_validator(chunk_type, validator_info)
|
|
205
|
+
file_path, module_name, class_name = validator_info
|
|
206
|
+
|
|
207
|
+
# Require the validator file
|
|
208
|
+
require_relative file_path
|
|
209
|
+
|
|
210
|
+
# Resolve the constant (e.g., Critical::IhdrValidator)
|
|
211
|
+
validator_class = Validators.const_get(module_name).const_get(class_name)
|
|
212
|
+
|
|
213
|
+
# Cache and return
|
|
214
|
+
loaded_validators[chunk_type] = validator_class
|
|
215
|
+
rescue NameError, LoadError => e
|
|
216
|
+
warn "Failed to load validator for #{chunk_type}: #{e.message}"
|
|
217
|
+
loaded_validators[chunk_type] = nil
|
|
218
|
+
end
|
|
216
219
|
end
|
|
217
220
|
end
|
|
218
221
|
end
|
data/lib/png_conform/version.rb
CHANGED
data/lib/png_conform.rb
CHANGED
|
@@ -40,60 +40,21 @@ module PngConform
|
|
|
40
40
|
require_relative "png_conform/models/validation_result"
|
|
41
41
|
require_relative "png_conform/models/file_analysis"
|
|
42
42
|
|
|
43
|
-
# Load
|
|
43
|
+
# Load base validator and registry (Phase 4 optimization: lazy validator loading)
|
|
44
|
+
# All validators are loaded on-demand by chunk_registry
|
|
44
45
|
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"
|
|
46
|
+
require_relative "png_conform/validators/chunk_registry"
|
|
73
47
|
|
|
74
48
|
# Load services (Phase 9 - implemented)
|
|
75
|
-
require_relative "png_conform/validators/chunk_registry"
|
|
76
49
|
require_relative "png_conform/services/validation_service"
|
|
77
50
|
require_relative "png_conform/services/profile_manager"
|
|
78
51
|
|
|
79
52
|
# Load analyzers (Phase 13 - Quick Win features)
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
require_relative "png_conform/analyzers/resolution_analyzer"
|
|
83
|
-
require_relative "png_conform/analyzers/comparison_analyzer"
|
|
53
|
+
# Analyzers are lazy-loaded on-demand in validation_service.rb (Phase 3 optimization)
|
|
54
|
+
# No upfront loading needed here
|
|
84
55
|
|
|
85
|
-
# Load
|
|
86
|
-
|
|
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"
|
|
56
|
+
# Load reporter factory only (Phase 2 optimization: lazy reporter loading)
|
|
57
|
+
# Individual reporters are loaded on-demand by the factory
|
|
97
58
|
require_relative "png_conform/reporters/reporter_factory"
|
|
98
59
|
|
|
99
60
|
# Load CLI (Phase 11 - implemented)
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: png_conform
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-11-
|
|
11
|
+
date: 2025-11-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bindata
|
|
@@ -76,11 +76,27 @@ files:
|
|
|
76
76
|
- README.adoc
|
|
77
77
|
- Rakefile
|
|
78
78
|
- SECURITY.md
|
|
79
|
+
- benchmarks/README.adoc
|
|
80
|
+
- benchmarks/config/default.yml
|
|
81
|
+
- benchmarks/config/full.yml
|
|
82
|
+
- benchmarks/config/quick.yml
|
|
83
|
+
- benchmarks/direct_validation.rb
|
|
84
|
+
- benchmarks/lib/benchmark_runner.rb
|
|
85
|
+
- benchmarks/lib/metrics_collector.rb
|
|
86
|
+
- benchmarks/lib/png_conform_runner.rb
|
|
87
|
+
- benchmarks/lib/pngcheck_runner.rb
|
|
88
|
+
- benchmarks/lib/report_generator.rb
|
|
89
|
+
- benchmarks/lib/tool_runner.rb
|
|
90
|
+
- benchmarks/profile_loading.rb
|
|
91
|
+
- benchmarks/profile_validation.rb
|
|
92
|
+
- benchmarks/results/.gitkeep
|
|
93
|
+
- benchmarks/run_benchmark.rb
|
|
79
94
|
- docs/ARCHITECTURE.adoc
|
|
80
95
|
- docs/CHUNK_TYPES.adoc
|
|
81
96
|
- docs/CLI_OPTIONS.adoc
|
|
82
97
|
- docs/COMPATIBILITY.adoc
|
|
83
98
|
- examples/README.adoc
|
|
99
|
+
- examples/README.md
|
|
84
100
|
- examples/advanced_usage.rb
|
|
85
101
|
- examples/basic_usage.rb
|
|
86
102
|
- exe/png_conform
|
|
@@ -128,6 +144,7 @@ files:
|
|
|
128
144
|
- lib/png_conform/validators/ancillary/gama_validator.rb
|
|
129
145
|
- lib/png_conform/validators/ancillary/hist_validator.rb
|
|
130
146
|
- lib/png_conform/validators/ancillary/iccp_validator.rb
|
|
147
|
+
- lib/png_conform/validators/ancillary/idot_validator.rb
|
|
131
148
|
- lib/png_conform/validators/ancillary/itxt_validator.rb
|
|
132
149
|
- lib/png_conform/validators/ancillary/mdcv_validator.rb
|
|
133
150
|
- lib/png_conform/validators/ancillary/offs_validator.rb
|