ruboty-ruby_persistence 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/ruboty/handlers/ruby_persistence.rb +27 -9
- data/lib/ruboty/ruby_persistence/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 14d35d6042c421a1d15051f95a3391052538fc6d
|
4
|
+
data.tar.gz: ce10f722debf3f1ed76765735b5f40b9bc3ac432
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61a455cb07e949ab6286b806cc276496aa3f88408ee02d39fac1715080e73d6815a6db92c06bf8d711506e2f545746ae36f2f243702d52170bd9e7fed1afc9bd
|
7
|
+
data.tar.gz: 8ef775aabf4f7f7aafab8a8c5ecaf6e499f249168fbcc1c1a45584bf8708de96faf712a085aa441102cf8fea346d5d0ae43b3af21010c7b69801967a4be5d8b9
|
@@ -17,15 +17,18 @@ module Ruboty
|
|
17
17
|
name: 'unset',
|
18
18
|
)
|
19
19
|
|
20
|
+
def initialize(*)
|
21
|
+
super
|
22
|
+
restore
|
23
|
+
end
|
24
|
+
|
20
25
|
def set(message)
|
21
26
|
name = message[:name]
|
22
27
|
|
23
|
-
if variables
|
24
|
-
set_and_persist(message)
|
25
|
-
elsif (method = predefined_method(name))
|
28
|
+
if !variables.key?(name) && (method = predefined_method(name))
|
26
29
|
message.reply("Error: `#{name}` is predefined by `#{method.owner}`")
|
27
30
|
else
|
28
|
-
|
31
|
+
define_and_persist_variable(message)
|
29
32
|
end
|
30
33
|
end
|
31
34
|
|
@@ -33,6 +36,7 @@ module Ruboty
|
|
33
36
|
name = message[:name]
|
34
37
|
|
35
38
|
if variables[name]
|
39
|
+
undefine_variable(name)
|
36
40
|
variables.delete(name)
|
37
41
|
message.reply("`#{name}` is now unset")
|
38
42
|
else
|
@@ -42,22 +46,36 @@ module Ruboty
|
|
42
46
|
|
43
47
|
private
|
44
48
|
|
49
|
+
def restore
|
50
|
+
variables.each do |name, value|
|
51
|
+
define_variable(name, value)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
45
55
|
def predefined_method(name)
|
46
56
|
context.method(name)
|
47
57
|
rescue NameError
|
48
58
|
nil
|
49
59
|
end
|
50
60
|
|
51
|
-
def
|
61
|
+
def define_and_persist_variable(message)
|
52
62
|
name = message[:name]
|
53
|
-
|
54
|
-
|
55
|
-
variables[name] =
|
56
|
-
message.reply("`#{name}` is now `#{
|
63
|
+
value = context.instance_eval(message[:code])
|
64
|
+
define_variable(name, value)
|
65
|
+
variables[name] = value
|
66
|
+
message.reply("`#{name}` is now `#{value.inspect}`")
|
57
67
|
rescue Exception => exception
|
58
68
|
message.reply("#{exception.class}: #{exception}")
|
59
69
|
end
|
60
70
|
|
71
|
+
def define_variable(name, value)
|
72
|
+
context.__send__(:define_method, name) { value }
|
73
|
+
end
|
74
|
+
|
75
|
+
def undefine_variable(name)
|
76
|
+
context.singleton_class.__send__(:undef_method, name)
|
77
|
+
end
|
78
|
+
|
61
79
|
def variables
|
62
80
|
robot.brain.data[NAMESPACE] ||= {}
|
63
81
|
end
|