Class: RailsSettingsUi::TypeConverter
- Inherits:
-
Object
- Object
- RailsSettingsUi::TypeConverter
- Defined in:
- lib/rails-settings-ui/type_converter.rb
Constant Summary collapse
- VALUE_TYPES_MAP =
{ String => RailsSettingsUi::ValueTypes::String, Symbol => RailsSettingsUi::ValueTypes::Symbol, integer_klass => RailsSettingsUi::ValueTypes::Fixnum, # ActiveSupport::HashWithIndifferentAccess => RailsSettingsUi::ValueTypes::Hash, ActiveSupport::Duration => RailsSettingsUi::ValueTypes::Float, Float => RailsSettingsUi::ValueTypes::Float, Array => RailsSettingsUi::ValueTypes::Array, FalseClass => RailsSettingsUi::ValueTypes::Boolean, TrueClass => RailsSettingsUi::ValueTypes::Boolean, boolean: RailsSettingsUi::ValueTypes::Boolean, string: RailsSettingsUi::ValueTypes::String, integer: RailsSettingsUi::ValueTypes::Fixnum, float: RailsSettingsUi::ValueTypes::Float, array: RailsSettingsUi::ValueTypes::Array, hash: RailsSettingsUi::ValueTypes::Hash }
Class Method Summary collapse
- .cast(settings) ⇒ Object
- .set_non_presented_settings(settings) ⇒ Object
- .setting_value_type(name, value, setting_config) ⇒ Object
Class Method Details
.cast(settings) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/rails-settings-ui/type_converter.rb', line 33 def self.cast(settings) errors = {} settings.each do |name, value| sc = RailsSettingsUi.setting_config(name.to_s) type = setting_value_type(name, value, sc) settings[name] = type.cast if type.errors.any? errors[name.to_sym] = type.errors end end settings = set_non_presented_settings(settings) settings[:errors] = errors settings end |
.set_non_presented_settings(settings) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/rails-settings-ui/type_converter.rb', line 66 def self.set_non_presented_settings(settings) RailsSettingsUi.default_settings.each do |name, value| if !settings[name.to_sym].present? if [TrueClass, FalseClass].include?(value.class) settings[name.to_sym] = false elsif [Array].include?(value.class) settings[name.to_sym] = [] end end end settings end |
.setting_value_type(name, value, setting_config) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/rails-settings-ui/type_converter.rb', line 49 def self.setting_value_type(name, value, setting_config) default_setting_value_type = if setting_config[:type].nil? || setting_config[:type] == :string setting_config[:default].class else setting_config[:type] end unless VALUE_TYPES_MAP.keys.include?(default_setting_value_type) raise RailsSettingsUi::UnknownDefaultValueType, "Unknown default value type #{default_setting_value_type} for #{name}" end # puts "--- #{name}: #{default_setting_value_type} ---" setting_value_type_class = VALUE_TYPES_MAP[default_setting_value_type] setting_value_type_class.new(value) end |