Module: Fontisan::Cldr::Aggregator
- Defined in:
- lib/fontisan/cldr/aggregator.rb
Overview
Produces audit-ready per-language coverage from a codepoint list and a Cldr::Index of per-language exemplar sets.
Pure: no I/O, no side effects.
Class Method Summary collapse
-
.aggregate(codepoints, languages_index) ⇒ Array<Models::Cldr::LanguageCoverage>
Sorted by descending coverage_ratio, then by language name.
Class Method Details
.aggregate(codepoints, languages_index) ⇒ Array<Models::Cldr::LanguageCoverage>
Returns sorted by descending coverage_ratio, then by language name.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/fontisan/cldr/aggregator.rb', line 16 def aggregate(codepoints, languages_index) font_set = Set.new(codepoints) languages_index.entries.map do |lang, required_set| covered = (font_set & required_set).size total = required_set.size Models::Cldr::LanguageCoverage.new( language: lang, covered: covered, total: total, coverage_ratio: total.zero? ? 0.0 : covered.fdiv(total).round(4), fully_supported: total.positive? && covered == total, ) end.sort_by { |lc| [lc.coverage_ratio * -1, lc.language] } end |