Class: CyberarmEngine::ConfigFile

Inherits:
Object
  • Object
show all
Defined in:
lib/cyberarm_engine/config_file.rb

Instance Method Summary collapse

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

#deserializeObject



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

#serializeObject



34
35
36
# File 'lib/cyberarm_engine/config_file.rb', line 34

def serialize
  JSON.dump(@data)
end