Class: JSONConfig

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

Defined Under Namespace

Modules: Keys

Instance Method Summary collapse

Constructor Details

#initialize(file, autosave = true) ⇒ JSONConfig

Returns a new instance of JSONConfig.



75
76
77
78
79
80
# 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

Instance Method Details

#clearObject



37
38
39
40
41
# File 'lib/jsoncfg.rb', line 37

def clear
    @config = Hash.new
    @diff = Hash.new
    write_config
end

#defaultObject



43
44
45
46
47
# File 'lib/jsoncfg.rb', line 43

def default
    @config = @defaults.clone
    @diff = @defaults.clone
    write_config
end

#get(key) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
# 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) ⇒ Object



64
65
66
67
68
69
70
71
72
73
# 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

#resetObject



92
93
94
# File 'lib/jsoncfg.rb', line 92

def reset
    read_config
end

#saveObject



96
97
98
99
# File 'lib/jsoncfg.rb', line 96

def save
    @diff = @defaults.clone
    write_config(true)
end

#savediffObject



101
102
103
104
# File 'lib/jsoncfg.rb', line 101

def savediff
    @config = @diff
    write_config(true)
end

#set(key, value) ⇒ Object



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# 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) ⇒ Object



127
128
129
130
131
# File 'lib/jsoncfg.rb', line 127

def setbool(key)
    @config[key] = true
    @diff[key] = true
    write_config
end

#to_sObject



133
134
135
# File 'lib/jsoncfg.rb', line 133

def to_s
    return JSON.pretty_generate(@config)
end

#unsetbool(key) ⇒ Object



137
138
139
140
141
# File 'lib/jsoncfg.rb', line 137

def unsetbool(key)
    @config[key] = false
    @diff[key] = false
    write_config
end