Class: CyberarmEngine::ConfigFile
- Inherits:
-
Object
- Object
- CyberarmEngine::ConfigFile
- Defined in:
- lib/cyberarm_engine/config_file.rb
Instance Method Summary collapse
- #[]=(*keys, value) ⇒ Object
- #deserialize ⇒ Object
- #get(*keys) ⇒ Object
-
#initialize(file:) ⇒ ConfigFile
constructor
A new instance of ConfigFile.
- #save! ⇒ Object
- #serialize ⇒ Object
Constructor Details
#initialize(file:) ⇒ ConfigFile
Returns a new instance of ConfigFile.
3 4 5 6 7 8 9 10 11 |
# File 'lib/cyberarm_engine/config_file.rb', line 3 def initialize(file:) @file = file if File.exist?(@file) deserialize else @data = {} end end |
Instance Method Details
#[]=(*keys, value) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/cyberarm_engine/config_file.rb', line 13 def []=(*keys, value) last_key = keys.last if keys.size == 1 hash = @data else keys.pop hash = @data[keys.shift] ||= {} keys.each do |key| hash = hash[key] ||= {} end end hash[last_key] = value end |
#deserialize ⇒ Object
38 39 40 |
# File 'lib/cyberarm_engine/config_file.rb', line 38 def deserialize @data = JSON.parse(File.read(@file), symbolize_names: true) end |
#get(*keys) ⇒ Object
30 31 32 |
# File 'lib/cyberarm_engine/config_file.rb', line 30 def get(*keys) @data.dig(*keys) end |
#save! ⇒ Object
42 43 44 |
# File 'lib/cyberarm_engine/config_file.rb', line 42 def save! File.open(@file, "w") { |f| f.write(serialize) } end |
#serialize ⇒ Object
34 35 36 |
# File 'lib/cyberarm_engine/config_file.rb', line 34 def serialize JSON.dump(@data) end |