class JSONConfig
Public Class Methods
new(file, autosave = true)
click to toggle source
# File lib/jsoncfg.rb, line 75 def initialize(file, autosave = true) @defaults ||= Hash.new @autosave = autosave @config_file = Pathname.new(file).expand_path read_config end
Public Instance Methods
clear()
click to toggle source
# File lib/jsoncfg.rb, line 37 def clear @config = Hash.new @diff = Hash.new write_config end
default()
click to toggle source
# File lib/jsoncfg.rb, line 43 def default @config = @defaults.clone @diff = @defaults.clone write_config end
get(key)
click to toggle source
# File lib/jsoncfg.rb, line 49 def get(key) case @config[key] when /^\s*false\s*$/i, false return false when /^\s*true\s*$/i, true return true when /^\s*\d+\s*$/ return @config[key].to_i when /^\s*\d+\.\d+\s*$/ return @config[key].to_f else return @config[key] end end
getdiff(key)
click to toggle source
# File lib/jsoncfg.rb, line 64 def getdiff(key) case @diff[key] when /^\s*false\s*$/i, false return false when /^\s*true\s*$/i, true return true else return @diff[key] end end
reset()
click to toggle source
# File lib/jsoncfg.rb, line 92 def reset read_config end
save()
click to toggle source
# File lib/jsoncfg.rb, line 96 def save @diff = @defaults.clone write_config(true) end
savediff()
click to toggle source
# File lib/jsoncfg.rb, line 101 def savediff @config = @diff write_config(true) end
set(key, value)
click to toggle source
# File lib/jsoncfg.rb, line 106 def set(key, value) case value when /^\s*false\s*$/i, false unsetbool(key) when /^\s*true\s*$/i, true setbool(key) when /^\s*\d+\s*$/ @config[key] = value.to_i @diff[key] = value.to_i write_config when /^\s*\d+\.\d+\s*$/ @config[key] = value.to_f @diff[key] = value.to_f write_config else @config[key] = value @diff[key] = value write_config end end
setbool(key)
click to toggle source
# File lib/jsoncfg.rb, line 127 def setbool(key) @config[key] = true @diff[key] = true write_config end
to_s()
click to toggle source
# File lib/jsoncfg.rb, line 133 def to_s return JSON.pretty_generate(@config) end
unsetbool(key)
click to toggle source
# File lib/jsoncfg.rb, line 137 def unsetbool(key) @config[key] = false @diff[key] = false write_config end
Private Instance Methods
read_config()
click to toggle source
# File lib/jsoncfg.rb, line 82 def read_config if (!@config_file.exist? && !@config_file.symlink?) @config = @defaults.clone write_config(true) end @config = JSON.parse(File.read(@config_file)) @diff = @defaults.clone end
write_config(force = false)
click to toggle source
# File lib/jsoncfg.rb, line 143 def write_config(force = false) return if (!@autosave && !force) FileUtils.mkdir_p(@config_file.dirname) File.open(@config_file, "w") do |file| file.write(JSON.pretty_generate(@config)) end end