Class: Lutaml::Xsd::Spa::ConfigurationLoader

Inherits:
Object
  • Object
show all
Defined in:
lib/lutaml/xsd/spa/configuration_loader.rb

Overview

Configuration loader for SPA documentation generator

Loads and validates YAML configuration files for UI theme, features, and templates. Provides type-safe access to configuration values with defaults fallback.

Examples:

Load all configurations

loader = ConfigurationLoader.new
theme = loader.theme
features = loader.features
templates = loader.templates

Load with custom config directory

loader = ConfigurationLoader.new(config_dir: './custom/config')
theme = loader.theme

Constant Summary collapse

DEFAULT_CONFIG_DIR =

Default configuration directory

File.expand_path(
  "../../../../config/spa",
  __dir__,
)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config_dir: DEFAULT_CONFIG_DIR) ⇒ ConfigurationLoader

Initialize configuration loader

Parameters:

  • config_dir (String) (defaults to: DEFAULT_CONFIG_DIR)

    Path to configuration directory



35
36
37
38
# File 'lib/lutaml/xsd/spa/configuration_loader.rb', line 35

def initialize(config_dir: DEFAULT_CONFIG_DIR)
  @config_dir = config_dir
  @cache = {}
end

Instance Attribute Details

#config_dirObject (readonly)

Returns the value of attribute config_dir.



30
31
32
# File 'lib/lutaml/xsd/spa/configuration_loader.rb', line 30

def config_dir
  @config_dir
end

Instance Method Details

#color(key, dark_mode: false) ⇒ String

Get color value from theme

Parameters:

  • key (String)

    Color key (e.g., “primary”, “background_primary”)

  • dark_mode (Boolean) (defaults to: false)

    Whether to use dark theme colors

Returns:

  • (String)

    Color hex value



70
71
72
73
74
75
76
77
78
79
# File 'lib/lutaml/xsd/spa/configuration_loader.rb', line 70

def color(key, dark_mode: false)
  colors = if dark_mode
             theme.dig("theme",
                       "dark_colors")
           else
             theme.dig("theme",
                       "colors")
           end
  colors&.fetch(key, nil) || "#000000"
end

#feature_enabled?(feature) ⇒ Boolean

Check if a feature is enabled

Parameters:

  • feature (String)

    Feature name

Returns:

  • (Boolean)

    True if feature is enabled



101
102
103
# File 'lib/lutaml/xsd/spa/configuration_loader.rb', line 101

def feature_enabled?(feature)
  features.dig("features", feature, "enabled") || false
end

#feature_setting(feature, setting, default: nil) ⇒ Object

Get feature setting

Parameters:

  • feature (String)

    Feature name

  • setting (String)

    Setting key

  • default (Object) (defaults to: nil)

    Default value if not found

Returns:

  • (Object)

    Setting value



111
112
113
# File 'lib/lutaml/xsd/spa/configuration_loader.rb', line 111

def feature_setting(feature, setting, default: nil)
  features.dig("features", feature, setting) || default
end

#featuresHash Also known as: load_features

Load features configuration

Returns:

  • (Hash)

    Features configuration



52
53
54
# File 'lib/lutaml/xsd/spa/configuration_loader.rb', line 52

def features
  load_config("features", default_features)
end

#layout(key) ⇒ String

Get layout value from theme

Parameters:

  • key (String)

    Layout key

Returns:

  • (String)

    Layout value



93
94
95
# File 'lib/lutaml/xsd/spa/configuration_loader.rb', line 93

def layout(key)
  theme.dig("theme", "layout", key)
end

#partial_template(partial_name) ⇒ String?

Get partial template path

Parameters:

  • partial_name (String)

    Partial name

Returns:

  • (String, nil)

    Partial template path



127
128
129
# File 'lib/lutaml/xsd/spa/configuration_loader.rb', line 127

def partial_template(partial_name)
  templates.dig("templates", "partials", partial_name, "template")
end

#reload!void

This method returns an undefined value.

Reload all configurations (clears cache)



134
135
136
# File 'lib/lutaml/xsd/spa/configuration_loader.rb', line 134

def reload!
  @cache.clear
end

#template_components(layout_name: "default") ⇒ Array<String>

Get template layout components

Parameters:

  • layout_name (String) (defaults to: "default")

    Layout name (default: “default”)

Returns:

  • (Array<String>)

    List of component names



119
120
121
# File 'lib/lutaml/xsd/spa/configuration_loader.rb', line 119

def template_components(layout_name: "default")
  templates.dig("templates", "layouts", layout_name, "components") || []
end

#templatesHash Also known as: load_templates

Load templates configuration

Returns:

  • (Hash)

    Templates configuration



60
61
62
# File 'lib/lutaml/xsd/spa/configuration_loader.rb', line 60

def templates
  load_config("templates", default_templates)
end

#themeHash Also known as: load_ui_theme, load_theme

Load UI theme configuration

Returns:

  • (Hash)

    Theme configuration



43
44
45
# File 'lib/lutaml/xsd/spa/configuration_loader.rb', line 43

def theme
  load_config("ui_theme", default_theme)
end

#typography(key) ⇒ String

Get typography value from theme

Parameters:

  • key (String)

    Typography key

Returns:

  • (String)

    Typography value



85
86
87
# File 'lib/lutaml/xsd/spa/configuration_loader.rb', line 85

def typography(key)
  theme.dig("theme", "typography", key)
end