end
def unset
@manager.config.delete(@key)
+ @manager.changed = true
+ @on_change.call(@manager.bot, value) if @on_change
end
# set string will raise ArgumentErrors on failed parse/validate
def parse(string)
return true if string == "true"
return false if string == "false"
- raise ArgumentError, "#{string} does not match either 'true' or 'false'"
+ if string =~ /^-?\d+$/
+ return string.to_i != 0
+ end
+ raise ArgumentError, "#{string} does not match either 'true' or 'false', and it's not an integer either"
+ end
+ def get
+ r = super
+ if r.kind_of?(Integer)
+ return r != 0
+ else
+ return r
+ end
end
end
class BotConfigIntegerValue < BotConfigValue
def parse(string)
+ return 1 if string == "true"
+ return 0 if string == "false"
raise ArgumentError, "not an integer: #{string}" unless string =~ /^-?\d+$/
string.to_i
end
+ def get
+ r = super
+ if r.kind_of?(Integer)
+ return r
+ else
+ return r ? 1 : 0
+ end
+ end
end
class BotConfigFloatValue < BotConfigValue
string
end
def desc
- "#{@desc} [valid values are: " + values.join(", ") + "]"
+ _("%{desc} [valid values are: %{values}]") % {:desc => @desc, :values => values.join(', ')}
end
end
# return @config[key]
# end
if @config.has_key?(key.to_sym)
- warning "Unregistered lookup #{key.to_sym.inspect}"
+ warning _("Unregistered lookup #{key.to_sym.inspect}")
return @config[key.to_sym]
end
return false
end
def run()
- puts "First time rbot configuration wizard"
+ puts _("First time rbot configuration wizard")
puts "===================================="
- puts "This is the first time you have run rbot with a config directory of:"
- puts @bot.botclass
- puts "This wizard will ask you a few questions to get you started."
- puts "The rest of rbot's configuration can be manipulated via IRC once"
- puts "rbot is connected and you are auth'd."
+ puts _("This is the first time you have run rbot with a config directory of: #{@bot.botclass}")
+ puts _("This wizard will ask you a few questions to get you started.")
+ puts _("The rest of rbot's configuration can be manipulated via IRC once rbot is connected and you are auth'd.")
puts "-----------------------------------"
return unless @questions
@questions.sort{|a,b| a.order <=> b.order }.each do |q|
- puts q.desc
+ puts _(q.desc)
begin
print q.key.to_s + " [#{q.to_s}]: "
response = STDIN.gets
unless response.empty?
q.set_string response, false
end
- puts "configured #{q.key} => #{q.to_s}"
+ puts _("configured #{q.key} => #{q.to_s}")
puts "-----------------------------------"
rescue ArgumentError => e
- puts "failed to set #{q.key}: #{e.message}"
+ puts _("failed to set #{q.key}: #{e.message}")
retry
end
end