Class: Uniword::Resource::FontSchemeLoader
- Inherits:
-
Object
- Object
- Uniword::Resource::FontSchemeLoader
- Defined in:
- lib/uniword/resource/font_scheme_loader.rb
Overview
Loads standalone font scheme YAML files from data/font_schemes/
Constant Summary collapse
- DATA_DIR =
File.join(__dir__, "../../../data/font_schemes")
Class Method Summary collapse
-
.available_schemes ⇒ Array<String>
List all available bundled font schemes.
-
.load(name) ⇒ Themes::FontScheme
Load a font scheme by name.
Class Method Details
.available_schemes ⇒ Array<String>
List all available bundled font schemes
41 42 43 44 45 46 47 |
# File 'lib/uniword/resource/font_scheme_loader.rb', line 41 def self.available_schemes return [] unless Dir.exist?(DATA_DIR) Dir.glob(File.join(DATA_DIR, "*.yml")) .map { |p| File.basename(p, ".yml") } .sort end |
.load(name) ⇒ Themes::FontScheme
Load a font scheme by name
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/uniword/resource/font_scheme_loader.rb', line 16 def self.load(name) path = File.join(DATA_DIR, "#{name}.yml") unless File.exist?(path) raise ArgumentError, "Font scheme '#{name}' not found. Available: #{available_schemes.join(', ')}" end raw = YAML.load_file(path) Themes::FontScheme.new( name: raw["name"], major_font: raw.dig("major", "latin"), minor_font: raw.dig("minor", "latin"), major_east_asian: raw.dig("major", "east_asian"), minor_east_asian: raw.dig("minor", "east_asian"), major_complex_script: raw.dig("major", "complex_script"), minor_complex_script: raw.dig("minor", "complex_script"), per_script: raw["per_script"], major_per_script: raw["major_per_script"], minor_per_script: raw["minor_per_script"], ) end |