class CyberarmEngine::ConfigFile

Public Class Methods

new(file:) click to toggle source
# File lib/cyberarm_engine/config_file.rb, line 3
def initialize(file:)
  @file = file

  if File.exist?(@file)
    deserialize
  else
    @data = {}
  end
end

Public Instance Methods

[]=(*keys, value) click to toggle source
# 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() click to toggle source
# File lib/cyberarm_engine/config_file.rb, line 38
def deserialize
  @data = JSON.parse(File.read(@file), symbolize_names: true)
end
get(*keys) click to toggle source
# File lib/cyberarm_engine/config_file.rb, line 30
def get(*keys)
  @data.dig(*keys)
end
save!() click to toggle source
# File lib/cyberarm_engine/config_file.rb, line 42
def save!
  File.open(@file, "w") { |f| f.write(serialize) }
end
serialize() click to toggle source
# File lib/cyberarm_engine/config_file.rb, line 34
def serialize
  JSON.dump(@data)
end