lita-wolfram-alpha 0.1.1 → 0.1.2
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/README.md +1 -1
- data/lib/lita/handlers/wolfram_alpha.rb +20 -3
- data/lita-wolfram-alpha.gemspec +1 -1
- data/spec/lita/handlers/wolfram_alpha_spec.rb +24 -10
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1de85e0695441eee310926d81fa4c45c6610883d
|
4
|
+
data.tar.gz: 4aa9fffde8f4ca63934fdf72c1842624b0692090
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fbd8e1caf7eb4f9457b217b56be8d518f540df621bed7de50ec596926ee3c58590e3ae516c96c7a77872475d1344a4cae95394961571241004c4b602bc62c998
|
7
|
+
data.tar.gz: b4bdfd7da310d9d88068e78e7f6e6599c4255fc64be14e12cf3f0a7bf4b8297f7300c53757fd38d6d1a0f585b231e4b343056efb56def465ec76608b24add92c
|
data/README.md
CHANGED
@@ -24,7 +24,7 @@ end
|
|
24
24
|
```
|
25
25
|
|
26
26
|
### Optional attributes
|
27
|
-
* `hide_link` (boolean) - By default, Lita returns a Wolfram Alpha link containing additional information after providing the best answer. If `hide_link` is set to true
|
27
|
+
* `hide_link` (boolean) - By default, Lita returns a Wolfram Alpha link containing additional information after providing the best answer. If `hide_link` is set to `true`, this link is omitted.
|
28
28
|
|
29
29
|
``` ruby
|
30
30
|
Lita.configure do |config|
|
@@ -22,16 +22,16 @@ module Lita
|
|
22
22
|
appid: config.app_id
|
23
23
|
)
|
24
24
|
return if http_response.status != 200
|
25
|
-
link = "
|
25
|
+
link = "http://www.wolframalpha.com/input/?i=#{CGI.escape(input)}"
|
26
26
|
xml = Nokogiri::XML(http_response.body)
|
27
27
|
primary = xml.at_xpath("//pod[@primary='true']//plaintext[string-length(text()) > 0]")
|
28
28
|
if primary
|
29
|
-
response.reply primary
|
29
|
+
response.reply format_reply(primary)
|
30
30
|
response.reply link unless config.hide_link
|
31
31
|
else
|
32
32
|
secondary = xml.at_xpath("//pod[not(@id='Input')]//plaintext[string-length(text()) > 0]")
|
33
33
|
if secondary
|
34
|
-
response.reply secondary
|
34
|
+
response.reply format_reply(secondary)
|
35
35
|
response.reply link unless config.hide_link
|
36
36
|
else
|
37
37
|
response.reply "¯\\_(ツ)_/¯"
|
@@ -39,6 +39,23 @@ module Lita
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
+
private
|
43
|
+
|
44
|
+
# pod: plaintext
|
45
|
+
# pod -> subpod: plaintext
|
46
|
+
# subpod: plaintext
|
47
|
+
# plaintext
|
48
|
+
def format_reply(node)
|
49
|
+
subpod = node.parent
|
50
|
+
subpod_title = subpod.attribute("title").content
|
51
|
+
pod = subpod.parent
|
52
|
+
pod_title = pod.attribute("title").content
|
53
|
+
title = [pod_title, subpod_title].select {|t| t.length > 0 && t !~ /^Results?$/}.join(" -> ")
|
54
|
+
colon = title.length > 0 ? ":" : ""
|
55
|
+
whitespace = node.content =~ /\n/ ? "\n" : " "
|
56
|
+
"#{title}#{colon}#{whitespace}#{node.content}".strip
|
57
|
+
end
|
58
|
+
|
42
59
|
end
|
43
60
|
|
44
61
|
Lita.register_handler(WolframAlpha)
|
data/lita-wolfram-alpha.gemspec
CHANGED
@@ -10,32 +10,46 @@ describe Lita::Handlers::WolframAlpha, lita_handler: true do
|
|
10
10
|
|
11
11
|
describe "#query" do
|
12
12
|
|
13
|
-
it "returns the primary pod's plaintext" do
|
13
|
+
it "returns the primary pod's title and plaintext" do
|
14
14
|
send_command "wa pi"
|
15
15
|
expect(replies.count).to eq 2
|
16
|
-
expect(replies.first).to match(/^3\.14159/)
|
17
|
-
expect(replies.last).to match(/^
|
16
|
+
expect(replies.first).to match(/^Decimal approximation: 3\.14159/)
|
17
|
+
expect(replies.last).to match(/^http:\/\/www\.wolframalpha\.com\/input\/\?i=pi$/)
|
18
18
|
end
|
19
19
|
|
20
|
-
it "returns the first subpod containing plaintext when the primary pod has multiple subpods" do
|
20
|
+
it "returns the title and plaintext of the first subpod containing plaintext when the primary pod has multiple subpods, omitting the pod's title when it contains 'Result'" do
|
21
21
|
send_command "wa sky chart"
|
22
22
|
expect(replies.count).to eq 2
|
23
|
-
expect(replies.first).to match(
|
24
|
-
expect(replies.last).to match(/^
|
23
|
+
expect(replies.first).to match(/^Local sidereal time: \d+\^h \d+\^m [\d\.]+\^s$/)
|
24
|
+
expect(replies.last).to match(/^http:\/\/www\.wolframalpha\.com\/input\/\?i=sky\+chart$/)
|
25
25
|
end
|
26
26
|
|
27
|
-
it "returns the first non-input, non-empty pod's plaintext when no primary pod exists" do
|
27
|
+
it "returns the first non-input, non-empty pod's title and plaintext when no primary pod exists" do
|
28
28
|
send_command "wa U+00F8"
|
29
29
|
expect(replies.count).to eq 2
|
30
|
-
expect(replies.first).to match(/^Latin small letter o with stroke/)
|
31
|
-
expect(replies.last).to match(/^
|
30
|
+
expect(replies.first).to match(/^Name: Latin small letter o with stroke/)
|
31
|
+
expect(replies.last).to match(/^http:\/\/www\.wolframalpha\.com\/input\/\?i=U%2B00F8$/)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "returns the concatenated pod and subpod titles when they exist, separating the titles from the answer with a newline when the answer contains multiple lines" do
|
35
|
+
send_command "wa weather forecast for san francisco"
|
36
|
+
expect(replies.count).to eq 2
|
37
|
+
expect(replies.first).to match(/^Weather forecast for San Francisco, California -> \w+:\nbetween/)
|
38
|
+
expect(replies.last).to match(/^http:\/\/www\.wolframalpha\.com\/input\/\?i=weather\+forecast\+for\+san\+francisco$/)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "returns only the plaintext when the pod and subpod titles contain 'Result' or do not exist" do
|
42
|
+
send_command "wa warp speed"
|
43
|
+
expect(replies.count).to eq 2
|
44
|
+
expect(replies.first).to match(/^speed/)
|
45
|
+
expect(replies.last).to match(/^http:\/\/www\.wolframalpha\.com\/input\/\?i=warp\+speed$/)
|
32
46
|
end
|
33
47
|
|
34
48
|
it "does not return a link if hide_link is true" do
|
35
49
|
registry.config.handlers.wolfram_alpha.hide_link = true
|
36
50
|
send_command "wa pi"
|
37
51
|
expect(replies.count).to eq 1
|
38
|
-
expect(replies.first).to match(/^3\.14159/)
|
52
|
+
expect(replies.first).to match(/^Decimal approximation: 3\.14159/)
|
39
53
|
end
|
40
54
|
|
41
55
|
it "returns a shrug emoticon for an unrecognized query" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-wolfram-alpha
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tristan Chong
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lita
|