Module: Ace::B36ts::Molecules::ConfigResolver
- Defined in:
- lib/ace/b36ts/molecules/config_resolver.rb
Overview
Resolves configuration for ace-b36ts using the ace-config cascade.
Configuration sources (in order of precedence):
-
Runtime options (passed directly to methods)
-
Project config (.ace/b36ts/config.yml)
-
User config (~/.ace/b36ts/config.yml)
-
Gem defaults (.ace-defaults/b36ts/config.yml)
Constant Summary collapse
- FALLBACK_DEFAULTS =
Fallback defaults (used only if .ace-defaults files cannot be loaded)
{ year_zero: 2000, alphabet: "0123456789abcdefghijklmnopqrstuvwxyz", default_format: :"2sec" }.freeze
Class Method Summary collapse
-
.alphabet(override = nil) ⇒ String
Get the alphabet value from configuration.
-
.default_format(override = nil) ⇒ Symbol
Get the default_format value from configuration.
-
.reset! ⇒ Object
Reset cached configuration (useful for testing).
-
.resolve(overrides = {}) ⇒ Hash
Resolve configuration with optional overrides.
-
.year_zero(override = nil) ⇒ Integer
Get the year_zero value from configuration.
Class Method Details
.alphabet(override = nil) ⇒ String
Get the alphabet value from configuration
75 76 77 |
# File 'lib/ace/b36ts/molecules/config_resolver.rb', line 75 def alphabet(override = nil) override || resolve[:alphabet] end |
.default_format(override = nil) ⇒ Symbol
Get the default_format value from configuration
83 84 85 86 |
# File 'lib/ace/b36ts/molecules/config_resolver.rb', line 83 def default_format(override = nil) value = override || resolve[:default_format] value.is_a?(String) ? value.to_sym : value end |
.reset! ⇒ Object
Reset cached configuration (useful for testing)
89 90 91 |
# File 'lib/ace/b36ts/molecules/config_resolver.rb', line 89 def reset! @config = nil end |
.resolve(overrides = {}) ⇒ Hash
Resolve configuration with optional overrides
Uses Ace::Support::Config::Models::Config.wrap for proper merging per ADR-022.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/ace/b36ts/molecules/config_resolver.rb', line 41 def resolve(overrides = {}) base_config = load_config # Apply runtime overrides (symbolize keys, skip nil values) symbolized_overrides = {} overrides.each do |key, value| symbolized_overrides[key.to_sym] = value unless value.nil? end # Merge base config with runtime overrides config = Ace::Support::Config::Models::Config.wrap( base_config, symbolized_overrides, source: "ace-b36ts" ) # Validate the merged configuration validate_config!(config) config end |
.year_zero(override = nil) ⇒ Integer
Get the year_zero value from configuration
67 68 69 |
# File 'lib/ace/b36ts/molecules/config_resolver.rb', line 67 def year_zero(override = nil) override || resolve[:year_zero] end |