Class: Gitlab::Fp::Settings::DefaultSettingsParser
- Inherits:
-
Object
- Object
- Gitlab::Fp::Settings::DefaultSettingsParser
- Defined in:
- lib/gitlab/fp/settings/default_settings_parser.rb
Class Method Summary collapse
-
.parse(module_name:, requested_setting_names:, default_settings:, mutually_dependent_settings_groups: []) ⇒ Array<(Hash, Hash)>
Settings, setting_types.
Class Method Details
.parse(module_name:, requested_setting_names:, default_settings:, mutually_dependent_settings_groups: []) ⇒ Array<(Hash, Hash)>
Returns settings, setting_types.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/gitlab/fp/settings/default_settings_parser.rb', line 13 def self.parse( module_name:, requested_setting_names:, default_settings:, mutually_dependent_settings_groups: [] ) settings = {} setting_types = {} default_settings.each do |setting_name, setting_value_and_type| next unless requested_setting_names.include?(setting_name) unless setting_value_and_type.is_a?(Array) && setting_value_and_type.length == 2 raise "#{module_name} Setting entry for '#{setting_name}' must " \ "be a two-element array containing the value and type." end setting_value, setting_type = setting_value_and_type unless setting_type.is_a?(Class) || setting_type == :Boolean raise "#{module_name} Setting type for '#{setting_name}' " \ "must be a class or :Boolean, but it was a #{setting_type.class}." end validate_setting_type(setting_value, setting_type, setting_name, module_name) unless setting_value.nil? settings[setting_name] = setting_value setting_types[setting_name] = setting_type end mutually_dependent_settings_groups.each do |mutually_dependent_settings| validate_mutually_dependent_settings( requested_setting_names: requested_setting_names, mutually_dependent_settings: mutually_dependent_settings, default_setting_names: default_settings.keys ) end [settings, setting_types] end |