class Ruboty::Handlers::RubyPersistence
Constants
- NAMESPACE
Public Class Methods
new(*)
click to toggle source
Calls superclass method
# File lib/ruboty/handlers/ruby_persistence.rb, line 26 def initialize(*) super restore end
Public Instance Methods
define(message)
click to toggle source
# File lib/ruboty/handlers/ruby_persistence.rb, line 31 def define(message) name = message[:name] if !variables.key?(name) && (method = predefined_method(name)) message.reply("Error: `#{name}` is predefined by `#{method.owner}`") else define_and_persist_variable(message) end end
list(message)
click to toggle source
# File lib/ruboty/handlers/ruby_persistence.rb, line 53 def list(message) summary = variables.map do |name, value| "#{name}: #{value.inspect}" end.join("\n") message.reply(summary, code: true) end
undefine(message)
click to toggle source
# File lib/ruboty/handlers/ruby_persistence.rb, line 41 def undefine(message) name = message[:name] if variables[name] undefine_variable(name) variables.delete(name) message.reply("`#{name}` is now undefined") else message.reply("Error: No such variable `#{name}`") end end
Private Instance Methods
context()
click to toggle source
# File lib/ruboty/handlers/ruby_persistence.rb, line 97 def context ::Ruboty::RubyPersistence::MainContext end
define_and_persist_variable(message)
click to toggle source
# File lib/ruboty/handlers/ruby_persistence.rb, line 75 def define_and_persist_variable(message) name = message[:name] value = context.instance_eval(message[:code]) define_variable(name, value) variables[name] = value message.reply("`#{name}` is now `#{value.inspect}`") rescue Exception => exception message.reply("#{exception.class}: #{exception}") end
define_variable(name, value)
click to toggle source
# File lib/ruboty/handlers/ruby_persistence.rb, line 85 def define_variable(name, value) context.__send__(:define_method, name) { value } end
predefined_method(name)
click to toggle source
# File lib/ruboty/handlers/ruby_persistence.rb, line 69 def predefined_method(name) context.method(name) rescue NameError nil end
restore()
click to toggle source
# File lib/ruboty/handlers/ruby_persistence.rb, line 63 def restore variables.each do |name, value| define_variable(name, value) end end
undefine_variable(name)
click to toggle source
# File lib/ruboty/handlers/ruby_persistence.rb, line 89 def undefine_variable(name) context.singleton_class.__send__(:undef_method, name) end
variables()
click to toggle source
# File lib/ruboty/handlers/ruby_persistence.rb, line 93 def variables robot.brain.data[NAMESPACE] ||= {} end