Class: Fontisan::Cldr::Index

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/fontisan/cldr/index.rb

Overview

In-memory per-language codepoint lookup.

Loads a YAML index of {language: [codepoint, ...]}. Each language's codepoints are stored as a Set for O(1) intersection checks.

Used by Aggregator to compute per-language coverage %.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(entries = {}) ⇒ Index

Returns a new instance of Index.

Parameters:

  • entries (Hash{String=>Set<Integer>, Array<Integer>}) (defaults to: {})


15
16
17
18
19
# File 'lib/fontisan/cldr/index.rb', line 15

def initialize(entries = {})
  @entries = entries.transform_values do |cps|
    cps.is_a?(Set) ? cps : Set.new(cps)
  end
end

Instance Attribute Details

#entriesHash{String=>Set<Integer>} (readonly)

Returns:

  • (Hash{String=>Set<Integer>})


22
23
24
# File 'lib/fontisan/cldr/index.rb', line 22

def entries
  @entries
end

Class Method Details

.load(path) ⇒ Index

Load from a YAML file previously written by #save.

Parameters:

  • path (String, Pathname)

Returns:



58
59
60
61
# File 'lib/fontisan/cldr/index.rb', line 58

def self.load(path)
  hash = YAML.load_file(path)
  new(hash)
end

Instance Method Details

#eachObject



24
25
26
# File 'lib/fontisan/cldr/index.rb', line 24

def each(&)
  @entries.each(&)
end

#include?(language) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/fontisan/cldr/index.rb', line 42

def include?(language)
  @entries.key?(language)
end

#languagesObject



32
33
34
# File 'lib/fontisan/cldr/index.rb', line 32

def languages
  @entries.keys.sort
end

#lookup(language) ⇒ Set<Integer>?

Parameters:

  • language (String)

Returns:

  • (Set<Integer>, nil)


38
39
40
# File 'lib/fontisan/cldr/index.rb', line 38

def lookup(language)
  @entries[language]
end

#save(path) ⇒ void

This method returns an undefined value.

Serialize to a YAML file.

Parameters:

  • path (String, Pathname)


49
50
51
52
53
# File 'lib/fontisan/cldr/index.rb', line 49

def save(path)
  File.open(path, "w") do |file|
    YAML.dump(@entries.transform_values(&:sort), file)
  end
end

#sizeObject



28
29
30
# File 'lib/fontisan/cldr/index.rb', line 28

def size
  @entries.size
end