Class: SiteSettings::DefaultsProvider
- Inherits:
-
Object
- Object
- SiteSettings::DefaultsProvider
- Defined in:
- lib/site_settings/defaults_provider.rb
Overview
A cache for providing default value based on site locale
Constant Summary collapse
- DEFAULT_LOCALE =
"en"
Instance Method Summary collapse
- #all(locale = nil) ⇒ Object
- #db_all ⇒ Object
- #get(name, locale = DEFAULT_LOCALE) ⇒ Object (also: #[])
- #has_setting?(name) ⇒ Boolean
-
#initialize(site_setting) ⇒ DefaultsProvider
constructor
A new instance of DefaultsProvider.
- #load_setting(name_arg, value, locale_defaults) ⇒ Object
-
#set_regardless_of_locale(name, value) ⇒ Object
Used to override site settings in dev/test env.
Constructor Details
#initialize(site_setting) ⇒ DefaultsProvider
Returns a new instance of DefaultsProvider.
10 11 12 13 14 |
# File 'lib/site_settings/defaults_provider.rb', line 10 def initialize(site_setting) @site_setting = site_setting @defaults = {} @defaults[DEFAULT_LOCALE.to_sym] = {} end |
Instance Method Details
#all(locale = nil) ⇒ Object
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/site_settings/defaults_provider.rb', line 33 def all(locale = nil) result = if locale @defaults[DEFAULT_LOCALE.to_sym].merge(@defaults[locale.to_sym] || {}) else @defaults[DEFAULT_LOCALE.to_sym].dup end DiscoursePluginRegistry.apply_modifier(:site_setting_defaults, result) end |
#db_all ⇒ Object
29 30 31 |
# File 'lib/site_settings/defaults_provider.rb', line 29 def db_all @site_setting.provider.all end |
#get(name, locale = DEFAULT_LOCALE) ⇒ Object Also known as: []
44 45 46 |
# File 'lib/site_settings/defaults_provider.rb', line 44 def get(name, locale = DEFAULT_LOCALE) all(locale)[name.to_sym] end |
#has_setting?(name) ⇒ Boolean
65 66 67 |
# File 'lib/site_settings/defaults_provider.rb', line 65 def has_setting?(name) has_key?(name.to_sym) || has_key?("#{name}?".to_sym) || name.to_sym == :default_locale end |
#load_setting(name_arg, value, locale_defaults) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/site_settings/defaults_provider.rb', line 16 def load_setting(name_arg, value, locale_defaults) name = name_arg.to_sym @defaults[DEFAULT_LOCALE.to_sym][name] = value if (locale_defaults) locale_defaults.each do |locale, v| locale = locale.to_sym @defaults[locale] ||= {} @defaults[locale][name] = v end end end |
#set_regardless_of_locale(name, value) ⇒ Object
Used to override site settings in dev/test env
50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/site_settings/defaults_provider.rb', line 50 def set_regardless_of_locale(name, value) name = name.to_sym if name == :default_locale || @site_setting.has_setting?(name) @defaults.each { |_, hash| hash.delete(name) } @defaults[DEFAULT_LOCALE.to_sym][name] = value value, type = @site_setting.type_supervisor.to_db_value(name, value) @defaults[SiteSetting.default_locale.to_sym] ||= {} @defaults[SiteSetting.default_locale.to_sym][ name ] = @site_setting.type_supervisor.to_rb_value(name, value, type) else raise ArgumentError.new("No setting named '#{name}' exists") end end |