Module: SettingAccessors::Internal
- Extended by:
- Helpers
- Defined in:
- lib/setting_accessors/internal.rb
Class Method Summary collapse
-
.add_setting_accessor_name(klass, setting_name) ⇒ Object
Adds the given setting name to the list of used setting accessors in the given class.
- .class_settings ⇒ Object
-
.converter(value_type) ⇒ SettingAccessors::Converter
A value converter for the given type.
-
.get_class_setting(klass, setting_name) ⇒ Hash?
Information about a class specific setting or
nilif it wasn’t set before. -
.json_setting_names(klass, **options) ⇒ Object
Mainly a helper for #as_json calls.
-
.set_class_setting(klass, setting_name, options = {}) ⇒ Object
Sets a class-specific setting Please do not call this method yourself, it is done automatically by using setting_accessor in your model class.
-
.setting_accessor_names(klass) ⇒ Array<String>
All setting accessor names defined in the given
class. -
.setting_data(setting_name, assignable_class = nil) ⇒ Hash
Configuration data regarding this setting.
-
.setting_value_type(*args) ⇒ String
The given setting’s value type.
Methods included from Helpers
ensure_nested_hash!, lookup_nested_hash
Class Method Details
.add_setting_accessor_name(klass, setting_name) ⇒ Object
Adds the given setting name to the list of used setting accessors in the given class. This is mainly to keep track of all accessors defined in the different classes
72 73 74 75 76 |
# File 'lib/setting_accessors/internal.rb', line 72 def self.add_setting_accessor_name(klass, setting_name) @@setting_accessor_names ||= {} @@setting_accessor_names[klass.to_s] ||= [] @@setting_accessor_names[klass.to_s] << setting_name.to_s end |
.class_settings ⇒ Object
10 11 12 |
# File 'lib/setting_accessors/internal.rb', line 10 def self.class_settings @@class_settings ||= {} end |
.converter(value_type) ⇒ SettingAccessors::Converter
Returns A value converter for the given type.
54 55 56 |
# File 'lib/setting_accessors/internal.rb', line 54 def self.converter(value_type) Converters.const_get("#{value_type.to_s.camelize}Converter") end |
.get_class_setting(klass, setting_name) ⇒ Hash?
Returns Information about a class specific setting or nil if it wasn’t set before.
61 62 63 64 65 |
# File 'lib/setting_accessors/internal.rb', line 61 def self.get_class_setting(klass, setting_name) lookup_nested_hash(class_settings, klass.to_s, setting_name.to_s) rescue NestedHashKeyNotFoundError nil end |
.json_setting_names(klass, **options) ⇒ Object
Mainly a helper for #as_json calls. Evaluates the given options and determines the setting names to be returned.
92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/setting_accessors/internal.rb', line 92 def self.json_setting_names(klass, **) setting_names = setting_accessor_names(klass) if [:only] setting_names & Array([:only]).map(&:to_s) elsif [:except] setting_names - Array([:except]).map(&:to_s) else setting_names end end |
.set_class_setting(klass, setting_name, options = {}) ⇒ Object
Sets a class-specific setting Please do not call this method yourself, it is done automatically by using setting_accessor in your model class
19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/setting_accessors/internal.rb', line 19 def self.set_class_setting(klass, setting_name, = {}) # If there are no options given, the setting *has* to be defined globally. if .empty? raise ArgumentError, "The setting '#{setting_name}' in model '#{klass}' is lacking options." # If the setting is defined on class base, we have to store its options else ensure_nested_hash!(class_settings, klass.to_s) class_settings[klass.to_s][setting_name.to_s] = .deep_stringify_keys add_setting_accessor_name(klass, setting_name) end end |
.setting_accessor_names(klass) ⇒ Array<String>
Returns all setting accessor names defined in the given class.
81 82 83 84 85 86 |
# File 'lib/setting_accessors/internal.rb', line 81 def self.setting_accessor_names(klass) @@setting_accessor_names ||= {} lookup_nested_hash(@@setting_accessor_names, klass.to_s) || [] rescue SettingAccessors::NestedHashKeyNotFoundError [] end |
.setting_data(setting_name, assignable_class = nil) ⇒ Hash
Returns configuration data regarding this setting
-
If it’s a setting defined in a setting_accessor call, the information is taken from this call
-
Otherwise, an empty hash is returned.
37 38 39 40 41 42 |
# File 'lib/setting_accessors/internal.rb', line 37 def self.setting_data(setting_name, assignable_class = nil) # As a convenience function (and to keep the existing code working), # it is possible to provide a class or an instance of said class assignable_class &&= assignable_class.class unless assignable_class.is_a?(Class) (assignable_class && get_class_setting(assignable_class, setting_name)) || {} end |
.setting_value_type(*args) ⇒ String
Returns the given setting’s value type.
47 48 49 |
# File 'lib/setting_accessors/internal.rb', line 47 def self.setting_value_type(*args) setting_data(*args)['type'] || 'polymorphic' end |