Class: Fontisan::Audit::Differ
- Inherits:
-
Object
- Object
- Fontisan::Audit::Differ
- Defined in:
- lib/fontisan/audit/differ.rb
Overview
Computes an Models::Audit::AuditDiff between two AuditReports.
Pure: no I/O, no font parsing. Both reports must already be built (Commands::AuditCompareCommand handles loading reports from disk or auditing fresh fonts before invoking the differ).
Comparison shape:
- Scalar fields: one FieldChange per differing field.
- Codepoint coverage: CodepointSetDiff built from the cmap range
lists (expanded to integer sets for set arithmetic, then
re-coalesced to ranges for output).
- Structural inventories (features, scripts, blocks, languages):
simple array set-diffs.
Constant Summary collapse
- COMPARED_FIELDS =
Scalar AuditReport fields compared field-by-field. Excludes generated_at / source_sha256 / source_file (per-report identity), codepoints / codepoint_ranges (handled via CodepointSetDiff), and nested models (surfaced via structural add/remove lists).
%i[ family_name subfamily_name full_name postscript_name version font_revision weight_class width_class italic bold panose total_codepoints total_glyphs ucd_version cldr_version ].freeze
Instance Method Summary collapse
- #diff ⇒ Models::Audit::AuditDiff
-
#initialize(left_report, right_report) ⇒ Differ
constructor
A new instance of Differ.
Constructor Details
#initialize(left_report, right_report) ⇒ Differ
Returns a new instance of Differ.
29 30 31 32 |
# File 'lib/fontisan/audit/differ.rb', line 29 def initialize(left_report, right_report) @left = left_report @right = right_report end |
Instance Method Details
#diff ⇒ Models::Audit::AuditDiff
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/fontisan/audit/differ.rb', line 35 def diff Models::Audit::AuditDiff.new( left_source: @left.source_file, right_source: @right.source_file, field_changes: field_changes, codepoints: codepoint_diff, added_features: set_diff(features(@right), features(@left)), removed_features: set_diff(features(@left), features(@right)), added_scripts: set_diff(scripts(@right), scripts(@left)), removed_scripts: set_diff(scripts(@left), scripts(@right)), added_blocks: set_diff(blocks(@right), blocks(@left)), removed_blocks: set_diff(blocks(@left), blocks(@right)), added_languages: set_diff(languages(@right), languages(@left)), removed_languages: set_diff(languages(@left), languages(@right)), ) end |