mirror of
https://github.com/cyberarm/cyberarm_engine.git
synced 2025-12-16 13:12:34 +00:00
Added ConfigFile for persistent hash storage
This commit is contained in:
@@ -4,6 +4,7 @@ rescue LoadError => e
|
|||||||
pp e
|
pp e
|
||||||
require "gosu"
|
require "gosu"
|
||||||
end
|
end
|
||||||
|
require "json"
|
||||||
|
|
||||||
require_relative "cyberarm_engine/version"
|
require_relative "cyberarm_engine/version"
|
||||||
|
|
||||||
@@ -24,6 +25,7 @@ require_relative "cyberarm_engine/animator"
|
|||||||
|
|
||||||
require_relative "cyberarm_engine/text"
|
require_relative "cyberarm_engine/text"
|
||||||
require_relative "cyberarm_engine/timer"
|
require_relative "cyberarm_engine/timer"
|
||||||
|
require_relative "cyberarm_engine/config_file"
|
||||||
|
|
||||||
require_relative "cyberarm_engine/ui/dsl"
|
require_relative "cyberarm_engine/ui/dsl"
|
||||||
|
|
||||||
|
|||||||
46
lib/cyberarm_engine/config_file.rb
Normal file
46
lib/cyberarm_engine/config_file.rb
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
module CyberarmEngine
|
||||||
|
class ConfigFile
|
||||||
|
def initialize(file:)
|
||||||
|
@file = file
|
||||||
|
|
||||||
|
if File.exist?(@file)
|
||||||
|
deserialize
|
||||||
|
else
|
||||||
|
@data = {}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
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[key] ||= {}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
hash[last_key] = value
|
||||||
|
end
|
||||||
|
|
||||||
|
def get(*keys)
|
||||||
|
@data.dig(*keys)
|
||||||
|
end
|
||||||
|
|
||||||
|
def serialize
|
||||||
|
JSON.dump(@data)
|
||||||
|
end
|
||||||
|
|
||||||
|
def deserialize
|
||||||
|
@data = JSON.parse(File.read(@file), symbolize_names: true)
|
||||||
|
end
|
||||||
|
|
||||||
|
def save!
|
||||||
|
File.open(@file, "w") { |f| f.write(serialize) }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user