class ExoBasic::Settings
Constants
- DEFAULT_FILENAME
Public Class Methods
add_on_load_observer(observer)
click to toggle source
# File lib/exobasic/settings.rb, line 18 def self.add_on_load_observer(observer) @@load_observers.push(observer) end
get_app_conf()
click to toggle source
# File lib/exobasic/settings.rb, line 103 def self.get_app_conf @@loaded[@@app_name] end
get_app_name()
click to toggle source
# File lib/exobasic/settings.rb, line 11 def self.get_app_name @@app_name end
get_conf(filename=nil)
click to toggle source
# File lib/exobasic/settings.rb, line 61 def self.get_conf(filename=nil) f = filename if f.nil? f = Settings::DEFAULT_FILENAME end js = JSON.load(File.read(f)) Settings.post_load(js) end
get_conf_with_rem(filename=nil)
click to toggle source
# File lib/exobasic/settings.rb, line 44 def self.get_conf_with_rem(filename=nil) f = filename if f.nil? f = Settings::DEFAULT_FILENAME end if File.exists?(f) js = JSON.load( File.readlines(f) .select { |line| !line.strip.start_with?('//') } .join()) Settings.post_load(js) else {} end end
get_logger()
click to toggle source
# File lib/exobasic/settings.rb, line 107 def self.get_logger Logger.new(STDOUT) end
load()
click to toggle source
# File lib/exobasic/settings.rb, line 88 def self.load Settings.get_conf_with_rem end
loaded()
click to toggle source
# File lib/exobasic/settings.rb, line 94 def self.loaded @@loaded end
post_load(js)
click to toggle source
# File lib/exobasic/settings.rb, line 22 def self.post_load(js) merged = {} if js.key?('_include') to_include = [] if js['_include'].is_a?(Array) to_include = js['_include'] else to_include = [js['_include']] end to_include.each do |i| h = Settings.get_conf_with_rem(i) merged = merged.deep_merge(h) end merged = merged.deep_merge(js) else merged = js end merged end
reload(filename=nil)
click to toggle source
# File lib/exobasic/settings.rb, line 98 def self.reload(filename=nil) @@loaded = Settings.get_conf_with_rem(filename) @@load_observers.each { |observer| observer.settings_reloaded } end
set_app_name(appname)
click to toggle source
# File lib/exobasic/settings.rb, line 14 def self.set_app_name(appname) @@app_name = appname end
try_get_key(conf, default_value=false, k)
click to toggle source
# File lib/exobasic/settings.rb, line 71 def self.try_get_key(conf, default_value=false, k) conf.key?(k) ? conf[k] : default_value end
try_get_nested_key(conf, default_value=false, ks)
click to toggle source
# File lib/exobasic/settings.rb, line 75 def self.try_get_nested_key(conf, default_value=false, ks) if ks.empty? default_value else v = Settings.try_get_key(conf, default_value, ks[0]) if v != default_value && ks.length > 1 Settings.try_get_nested_key(v, default_value, ks[1..-1]) else v end end end