Class: ExoBasic::Settings
- Inherits:
-
Object
- Object
- ExoBasic::Settings
- Defined in:
- lib/exobasic/settings.rb
Constant Summary collapse
- DEFAULT_FILENAME =
'./settings.json'
- @@app_name =
'Untitled'
- @@load_observers =
[]
- @@loaded =
Settings.load
Class Method Summary collapse
- .add_on_load_observer(observer) ⇒ Object
- .get_app_conf ⇒ Object
- .get_app_name ⇒ Object
- .get_conf(filename = nil) ⇒ Object
- .get_conf_with_rem(filename = nil) ⇒ Object
- .get_logger ⇒ Object
- .load ⇒ Object
- .loaded ⇒ Object
- .post_load(js) ⇒ Object
- .reload(filename = nil) ⇒ Object
- .set_app_name(appname) ⇒ Object
- .try_get_key(conf, default_value = false, k) ⇒ Object
- .try_get_nested_key(conf, default_value = false, ks) ⇒ Object
Class Method Details
.add_on_load_observer(observer) ⇒ Object
18 19 20 |
# File 'lib/exobasic/settings.rb', line 18 def self.add_on_load_observer(observer) @@load_observers.push(observer) end |
.get_app_conf ⇒ Object
103 104 105 |
# File 'lib/exobasic/settings.rb', line 103 def self.get_app_conf @@loaded[@@app_name] end |
.get_app_name ⇒ Object
11 12 13 |
# File 'lib/exobasic/settings.rb', line 11 def self.get_app_name @@app_name end |
.get_conf(filename = nil) ⇒ Object
61 62 63 64 65 66 67 68 69 |
# 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) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# 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.exist?(f) js = JSON.load( File.readlines(f) .select { |line| !line.strip.start_with?('//') } .join()) Settings.post_load(js) else {} end end |
.get_logger ⇒ Object
107 108 109 |
# File 'lib/exobasic/settings.rb', line 107 def self.get_logger Logger.new(STDOUT) end |
.load ⇒ Object
88 89 90 |
# File 'lib/exobasic/settings.rb', line 88 def self.load Settings.get_conf_with_rem end |
.loaded ⇒ Object
94 95 96 |
# File 'lib/exobasic/settings.rb', line 94 def self.loaded @@loaded end |
.post_load(js) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# 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) ⇒ Object
98 99 100 101 |
# 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) ⇒ Object
14 15 16 |
# 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) ⇒ Object
71 72 73 |
# 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) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 |
# 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 |