cognition 2.0.8 → 2.1.3
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 +5 -5
- data/README.md +3 -1
- data/cognition.gemspec +3 -3
- data/lib/cognition/bot.rb +1 -1
- data/lib/cognition/matcher.rb +4 -3
- data/lib/cognition/plugins/cognition/plugins/default/views/help.html.erb +3 -5
- data/lib/cognition/plugins/default.rb +1 -1
- data/lib/cognition/version.rb +1 -1
- data/test/test_default_plugin.rb +1 -1
- data/test/test_matcher.rb +18 -0
- metadata +12 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b3b0f0c99709eaabea164fe5e9f7cd5022331b28f39f74024f2a5d52fdcd8b1d
|
4
|
+
data.tar.gz: ef2823646928bfdd3ff9e60e9b91e980181a08af2a445a919404ebba1709e43c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f53ef31b1ec20592b7a23b45c492a598515fac294e442a4ce6f35e4d97fed345afd4e131fc63707c07dbe9f0a2024695b55608f21c345196c1489c61138fba0
|
7
|
+
data.tar.gz: 06230123d76191225a842b675d05f277399c1184758068fcd0357b23beef18208cd2f529e0247ceec72440d5ef8a1012e93c820136fce85ad0fee35e4833fcc2
|
data/README.md
CHANGED
@@ -62,7 +62,9 @@ msg.reply("foo") # Posts 'content=foo' to http://foo.bar/baz
|
|
62
62
|
|
63
63
|
## Creating a Plugin
|
64
64
|
Creating plugins is easy. Subclass `Cognition::Plugins::Base` and setup your
|
65
|
-
matches and logic that should be run
|
65
|
+
matches and logic that should be run. Your methods will be passed the `msg`
|
66
|
+
object and any `metadata` you've passed to the bot's `process` method. Here's
|
67
|
+
an example plugin:
|
66
68
|
```ruby
|
67
69
|
class Hello < Cognition::Plugins::Base
|
68
70
|
# Simple string based matcher. Must match *EXACTLY*
|
data/cognition.gemspec
CHANGED
@@ -18,12 +18,12 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "httparty", "~> 0.
|
22
|
-
spec.add_dependency "tilt", "~>
|
21
|
+
spec.add_dependency "httparty", "~> 0.15"
|
22
|
+
spec.add_dependency "tilt", "~> 2.0"
|
23
23
|
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.7"
|
25
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
26
|
spec.add_development_dependency "minitest", "~> 5.0"
|
27
27
|
spec.add_development_dependency "webmock", "~> 1.20"
|
28
|
-
spec.add_development_dependency "haml", "~>
|
28
|
+
spec.add_development_dependency "haml", "~> 5.0"
|
29
29
|
end
|
data/lib/cognition/bot.rb
CHANGED
data/lib/cognition/matcher.rb
CHANGED
@@ -4,7 +4,7 @@ module Cognition
|
|
4
4
|
|
5
5
|
def initialize(trigger, options = {}, &action)
|
6
6
|
fail ArgumentError, "matcher must have a trigger" unless trigger
|
7
|
-
fail ArgumentError, "matcher must have
|
7
|
+
fail ArgumentError, "matcher must have an action" unless action
|
8
8
|
@trigger = trigger
|
9
9
|
@help = options[:help] ||= {}
|
10
10
|
@action = action
|
@@ -18,12 +18,13 @@ module Cognition
|
|
18
18
|
|
19
19
|
def attempt(msg)
|
20
20
|
return false unless matches?(msg)
|
21
|
-
|
22
21
|
run(msg)
|
23
22
|
end
|
24
23
|
|
25
24
|
def run(msg)
|
26
|
-
@response = action.call(msg, match_data)
|
25
|
+
@response = action.call(msg, match_data).to_s
|
26
|
+
rescue => e
|
27
|
+
@response = "#{e.class}: #{e.message}\n#{e.backtrace.join("\n")}"
|
27
28
|
end
|
28
29
|
|
29
30
|
def matches?(msg)
|
@@ -19,7 +19,7 @@ module Cognition
|
|
19
19
|
def help(msg, match_data = nil)
|
20
20
|
type = msg.metadata[:type] ||= "text"
|
21
21
|
if match_data[:command].nil? || match_data[:command].empty?
|
22
|
-
@help = bot.help
|
22
|
+
@help = bot.help.sort
|
23
23
|
else
|
24
24
|
@help = bot.help.find_all { |text| text.match match_data[:command] }
|
25
25
|
end
|
data/lib/cognition/version.rb
CHANGED
data/test/test_default_plugin.rb
CHANGED
@@ -7,7 +7,7 @@ class DefaultPluginTest < Minitest::Test
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_returns_help
|
10
|
-
help = "
|
10
|
+
help = "help - Lists all commands with help\nhelp <command> - Lists help for <command>\nping - Test if the endpoint is responding. Returns PONG."
|
11
11
|
assert_equal help, @bot.process("help")
|
12
12
|
end
|
13
13
|
|
data/test/test_matcher.rb
CHANGED
@@ -74,8 +74,26 @@ class MatcherTest < Minitest::Test
|
|
74
74
|
matcher_with_help = Cognition::Matcher.new(/hello\s*(?<name>.*)/, { help: { "hello" => "says hello" } }, &proc(&method(:dummy_method)))
|
75
75
|
assert_equal ["hello - says hello"], matcher_with_help.help
|
76
76
|
end
|
77
|
+
|
78
|
+
def test_raises_exception_when_command_fails
|
79
|
+
msg = Cognition::Message.new("boom")
|
80
|
+
matcher = Cognition::Matcher.new(/boom/, {}, &proc(&method(:blow_up)))
|
81
|
+
matcher.attempt(msg)
|
82
|
+
assert matcher.response.include? "ZeroDivisionError"
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_empty_response_is_not_a_failure
|
86
|
+
msg = Cognition::Message.new("empty")
|
87
|
+
matcher = Cognition::Matcher.new(/empty/, {}, &proc {})
|
88
|
+
matcher.attempt(msg)
|
89
|
+
assert_equal "", matcher.response
|
90
|
+
end
|
77
91
|
end
|
78
92
|
|
79
93
|
def dummy_method(_, match_data)
|
80
94
|
"Hello #{match_data['name']}"
|
81
95
|
end
|
96
|
+
|
97
|
+
def blow_up(msg, match_data)
|
98
|
+
raise ZeroDivisionError, "divided by 0"
|
99
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cognition
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Anderson
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
19
|
+
version: '0.15'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0.
|
26
|
+
version: '0.15'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: tilt
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '2.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '2.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
103
|
+
version: '5.0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
110
|
+
version: '5.0'
|
111
111
|
description: Match text; run commands. Works great for building a chatbot!
|
112
112
|
email:
|
113
113
|
- andnat@gmail.com
|
@@ -153,7 +153,7 @@ homepage: https://github.com/basecamp/cognition
|
|
153
153
|
licenses:
|
154
154
|
- MIT
|
155
155
|
metadata: {}
|
156
|
-
post_install_message:
|
156
|
+
post_install_message:
|
157
157
|
rdoc_options: []
|
158
158
|
require_paths:
|
159
159
|
- lib
|
@@ -168,9 +168,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
168
|
- !ruby/object:Gem::Version
|
169
169
|
version: '0'
|
170
170
|
requirements: []
|
171
|
-
|
172
|
-
|
173
|
-
signing_key:
|
171
|
+
rubygems_version: 3.5.4
|
172
|
+
signing_key:
|
174
173
|
specification_version: 4
|
175
174
|
summary: A rules engine for running commands.
|
176
175
|
test_files:
|