Class: Ucode::Audit::ScriptAggregator

Inherits:
Object
  • Object
show all
Defined in:
lib/ucode/audit/script_aggregator.rb

Overview

Produces one Models::Audit::ScriptSummary per touched Unicode script for a font’s cmap codepoint set, compared against a ucode UCD baseline.

Pure transformation: takes the resolved baseline Database + the font’s codepoint list, returns ScriptSummary[].

v1 scope: uses the Scripts.txt primary-script lookup (one ISO 15924 code per codepoint). ScriptExtensions — where a single codepoint contributes to multiple scripts (e.g. punctuation used across Latn, Grek, Cyrl) — requires a Database schema bump and is intentionally deferred.

Instance Method Summary collapse

Constructor Details

#initialize(database) ⇒ ScriptAggregator

Returns a new instance of ScriptAggregator.

Parameters:



19
20
21
# File 'lib/ucode/audit/script_aggregator.rb', line 19

def initialize(database)
  @database = database
end

Instance Method Details

#call(codepoints) ⇒ Array<Models::Audit::ScriptSummary>

Returns sorted by script_code.

Parameters:

  • codepoints (Enumerable<Integer>)

Returns:



25
26
27
28
29
30
31
# File 'lib/ucode/audit/script_aggregator.rb', line 25

def call(codepoints)
  return [] if @database.nil? || codepoints.empty?

  grouped = group_by_script(codepoints)
  grouped.map { |code, covered| build_summary(code, covered) }
    .sort_by(&:script_code)
end