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