class ConfigTable_class
def [](key)
def [](key) lookup(key).eval(self) end
def []=(key, val)
def []=(key, val) lookup(key).set val end
def add(item)
def add(item) @items.push item @table[item.name] = item end
def each(&block)
def each(&block) @items.each(&block) end
def initialize(items)
def initialize(items) @items = items @table = {} items.each do |i| @table[i.name] = i end ALIASES.each do |ali, name| @table[ali] = @table[name] end end
def key?(name)
def key?(name) @table.key?(name) end
def load
def load begin t = dup() File.foreach(savefile()) do |line| k, v = *line.split(/=/, 2) t[k] = v.strip end t rescue Errno::ENOENT setup_rb_error $!.message + "#{File.basename($0)} config first" end end
def lookup(name)
def lookup(name) @table[name] or raise ArgumentError, "no such config item: #{name}" end
def new
def new dup() end
def remove(name)
def remove(name) item = lookup(name) @items.delete_if {|i| i.name == name } @table.delete_if {|name, i| i.name == name } item end
def save
def save @items.each {|i| i.value } File.open(savefile(), 'w') {|f| @items.each do |i| f.printf "%s=%s\n", i.name, i.value if i.value end } end
def savefile
def savefile '.config' end