lita-onewheel-wolfram-alpha 0.0.0 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8e5259dae88f00f6256aadb3da967deb7f1fc377
4
- data.tar.gz: c74d42343f8143a6c0b4e2b639e952b567f6e125
3
+ metadata.gz: 5dc26896fc54e84763529a3888cc5075695333f4
4
+ data.tar.gz: 9d7b2cebfccf3eb2a0e277cc1ede433f3ec92f12
5
5
  SHA512:
6
- metadata.gz: 0ffb133c3aa8ffd5c2a32cd07efeceb15d667f47b2bda465d9f49792bd94df464836181da2f2879820a29bb1f48435bfa3b5cb8e05890049338f6da1b7c87703
7
- data.tar.gz: eb73ecdab58022db773d5e831e624dd59f989862a0cd6b9deb896472378817e80ed810db19c2c3cdcadc4313a1ce5c69ab542a1f476a2a179c0bdf7be6766d6a
6
+ metadata.gz: 42a6f190f6473c29b4c989647f79205ff42daa28e8df11b31e5e930786e8cce1a89aa7ebff68900a528820db275b565115ea78628adf999351739f8b6e8b03e9
7
+ data.tar.gz: 490cfd4c1b57e4adaf79d45a7ac0b55e1f25bcbc6ad36bcc09e07aa8266b30f12c1551bfdae271859043b1ba466d73532eb7f11a4ba5d751944a1f7592dae201
@@ -16,22 +16,31 @@ module Lita
16
16
  end
17
17
  query = response.matches[0][0]
18
18
  api_response = make_api_call query
19
- response.reply api_response
19
+ reply = parse_response api_response, query
20
+ response.reply reply
20
21
  end
21
22
 
22
- def make_api_call(query)
23
- uri = build_uri query
24
- response = RestClient.get(uri)
25
- noko_doc = Nokogiri::XML response.to_s
23
+ def parse_response(noko_doc, query)
26
24
  success_node = noko_doc.xpath('queryresult').attribute('success')
27
25
  if success_node.to_s == 'true'
28
- plaintext_nodes = noko_doc.xpath('//plaintext')
29
- plaintext_nodes[1].child.to_s
26
+ pods = noko_doc.xpath('//pod')
27
+ if pods[1].attribute('title').to_s == 'Plot'
28
+ pods[1].xpath('//img')[1].attribute('src').to_s
29
+ else
30
+ pods[1].xpath('//plaintext')[1].child.to_s
31
+ end
32
+
30
33
  else
31
34
  "Wolfram couldn't parse #{query}."
32
35
  end
33
36
  end
34
37
 
38
+ def make_api_call(query)
39
+ uri = build_uri query
40
+ response = RestClient.get(uri)
41
+ Nokogiri::XML response.to_s
42
+ end
43
+
35
44
  def build_uri(query)
36
45
  uri = config.api_uri.sub '[query]', CGI::escape(query)
37
46
  uri = uri.sub '[appid]', config.app_id
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'lita-onewheel-wolfram-alpha'
3
- spec.version = '0.0.0'
3
+ spec.version = '0.1.0'
4
4
  spec.authors = ['Andrew Kreps']
5
5
  spec.email = ['andrew.kreps@gmail.com']
6
6
  spec.description = %q{Lita interface to Wolfram Alpha.}
data/spec/fixtures/pi.xml CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  <?xml version='1.0' encoding='UTF-8'?>
3
2
  <queryresult success='true'
4
3
  error='false'
@@ -1,4 +1,3 @@
1
-
2
1
  <?xml version='1.0' encoding='UTF-8'?>
3
2
  <queryresult success='true'
4
3
  error='false'
@@ -0,0 +1,205 @@
1
+ <?xml version='1.0' encoding='UTF-8'?>
2
+ <queryresult success='true'
3
+ error='false'
4
+ numpods='9'
5
+ datatypes='Geometry'
6
+ timedout=''
7
+ timedoutpods=''
8
+ timing='1.657'
9
+ parsetiming='0.15'
10
+ parsetimedout='false'
11
+ recalculate=''
12
+ id='MSPa8320hdi8ba18h005cd0000476562i1a2hd704a'
13
+ host='http://www2.wolframalpha.com'
14
+ server='15'
15
+ related='http://www2.wolframalpha.com/api/v2/relatedQueries.jsp?id=MSPa8420hdi8ba18h005cd00003hf14ed530f75ebh&amp;s=15'
16
+ version='2.6'>
17
+ <pod title='Input'
18
+ scanner='Identity'
19
+ id='Input'
20
+ position='100'
21
+ error='false'
22
+ numsubpods='1'>
23
+ <subpod title=''>
24
+ <img src='http://www2.wolframalpha.com/Calculate/MSP/MSP8520hdi8ba18h005cd00002ii64bc919d4eiah?MSPStoreType=image/gif&amp;s=15'
25
+ alt='x^2'
26
+ title='x^2'
27
+ width='15'
28
+ height='18' />
29
+ <plaintext>x^2</plaintext>
30
+ </subpod>
31
+ </pod>
32
+ <pod title='Plot'
33
+ scanner='Plotter'
34
+ id='Plot'
35
+ position='200'
36
+ error='false'
37
+ numsubpods='1'>
38
+ <subpod title=''>
39
+ <img src='http://www2.wolframalpha.com/Calculate/MSP/MSP8620hdi8ba18h005cd0000268f85ce36b8h331?MSPStoreType=image/gif&amp;s=15'
40
+ alt=''
41
+ title=''
42
+ width='333'
43
+ height='157' />
44
+ <plaintext></plaintext>
45
+ </subpod>
46
+ </pod>
47
+ <pod title='Geometric figure'
48
+ scanner='Geometry'
49
+ id='GeometricFigure (ofBoundary)'
50
+ position='300'
51
+ error='false'
52
+ numsubpods='1'>
53
+ <subpod title=''>
54
+ <img src='http://www2.wolframalpha.com/Calculate/MSP/MSP8720hdi8ba18h005cd00003dcdh5156707h635?MSPStoreType=image/gif&amp;s=15'
55
+ alt='parabola'
56
+ title='parabola'
57
+ width='59'
58
+ height='18' />
59
+ <plaintext>parabola</plaintext>
60
+ </subpod>
61
+ <states count='1'>
62
+ <state name='Properties'
63
+ input='GeometricFigure (ofBoundary)__Properties' />
64
+ </states>
65
+ </pod>
66
+ <pod title='Root'
67
+ scanner='Reduce'
68
+ id='Root'
69
+ position='400'
70
+ error='false'
71
+ numsubpods='1'
72
+ primary='true'>
73
+ <subpod title=''>
74
+ <img src='http://www2.wolframalpha.com/Calculate/MSP/MSP8820hdi8ba18h005cd00000d566b84f54h8dg5?MSPStoreType=image/gif&amp;s=15'
75
+ alt='x = 0'
76
+ title='x = 0'
77
+ width='36'
78
+ height='18' />
79
+ <plaintext>x = 0</plaintext>
80
+ </subpod>
81
+ <states count='1'>
82
+ <state name='Step-by-step solution'
83
+ input='Root__Step-by-step solution' />
84
+ </states>
85
+ </pod>
86
+ <pod title='Polynomial discriminant'
87
+ scanner='Expression'
88
+ id='PolynomialDiscriminant'
89
+ position='500'
90
+ error='false'
91
+ numsubpods='1'>
92
+ <subpod title=''>
93
+ <img src='http://www2.wolframalpha.com/Calculate/MSP/MSP8920hdi8ba18h005cd000022f85hh1873dc931?MSPStoreType=image/gif&amp;s=15'
94
+ alt='Delta = 0'
95
+ title='Delta = 0'
96
+ width='38'
97
+ height='18' />
98
+ <plaintext>Delta = 0</plaintext>
99
+ </subpod>
100
+ <states count='1'>
101
+ <state name='Show class number'
102
+ input='PolynomialDiscriminant__Show class number' />
103
+ </states>
104
+ </pod>
105
+ <pod title='Properties as a real function'
106
+ scanner='FunctionProperties'
107
+ id='PropertiesAsARealFunction'
108
+ position='600'
109
+ error='false'
110
+ numsubpods='3'>
111
+ <subpod title='Domain'>
112
+ <img src='http://www2.wolframalpha.com/Calculate/MSP/MSP9020hdi8ba18h005cd00002f81538eeddh95hb?MSPStoreType=image/gif&amp;s=15'
113
+ alt='R (all real numbers)'
114
+ title='R (all real numbers)'
115
+ width='138'
116
+ height='18' />
117
+ <plaintext>R (all real numbers)</plaintext>
118
+ </subpod>
119
+ <subpod title='Range'>
120
+ <img src='http://www2.wolframalpha.com/Calculate/MSP/MSP9120hdi8ba18h005cd00003efe8f3290b61743?MSPStoreType=image/gif&amp;s=15'
121
+ alt='{y element R : y&gt;=0} (all non-negative real numbers)'
122
+ title='{y element R : y&gt;=0} (all non-negative real numbers)'
123
+ width='312'
124
+ height='18' />
125
+ <plaintext>{y element R : y&gt;=0} (all non-negative real numbers)</plaintext>
126
+ </subpod>
127
+ <subpod title='Parity'>
128
+ <img src='http://www2.wolframalpha.com/Calculate/MSP/MSP9220hdi8ba18h005cd00001i3728gb1b1cdb26?MSPStoreType=image/gif&amp;s=15'
129
+ alt='even'
130
+ title='even'
131
+ width='30'
132
+ height='18' />
133
+ <plaintext>even</plaintext>
134
+ </subpod>
135
+ <infos count='1'>
136
+ <info text=' is the set of real numbers'>
137
+ <img src='http://www2.wolframalpha.com/Calculate/MSP/MSP9320hdi8ba18h005cd000047bc2d64ah9g1b58?MSPStoreType=image/gif&amp;s=15'
138
+ alt=' is the set of real numbers'
139
+ title=' is the set of real numbers'
140
+ width='181'
141
+ height='18' />
142
+ <link url='http://reference.wolfram.com/mathematica/ref/Reals.html'
143
+ text='Documentation'
144
+ title='Documentation' />
145
+ <link url='http://mathworld.wolfram.com/R.html'
146
+ text='Definition'
147
+ title='MathWorld' />
148
+ </info>
149
+ </infos>
150
+ </pod>
151
+ <pod title='Derivative'
152
+ scanner='Derivative'
153
+ id='Derivative'
154
+ position='700'
155
+ error='false'
156
+ numsubpods='1'>
157
+ <subpod title=''>
158
+ <img src='http://www2.wolframalpha.com/Calculate/MSP/MSP9420hdi8ba18h005cd00000da6bbhh93292gfg?MSPStoreType=image/gif&amp;s=15'
159
+ alt='d/dx(x^2) = 2 x'
160
+ title='d/dx(x^2) = 2 x'
161
+ width='86'
162
+ height='36' />
163
+ <plaintext>d/dx(x^2) = 2 x</plaintext>
164
+ </subpod>
165
+ <states count='1'>
166
+ <state name='Step-by-step solution'
167
+ input='Derivative__Step-by-step solution' />
168
+ </states>
169
+ </pod>
170
+ <pod title='Indefinite integral'
171
+ scanner='Integral'
172
+ id='IndefiniteIntegral'
173
+ position='800'
174
+ error='false'
175
+ numsubpods='1'
176
+ primary='true'>
177
+ <subpod title=''>
178
+ <img src='http://www2.wolframalpha.com/Calculate/MSP/MSP9520hdi8ba18h005cd00001i7gfg66abec9hhe?MSPStoreType=image/gif&amp;s=15'
179
+ alt=' integral x^2 dx = x^3/3+constant'
180
+ title=' integral x^2 dx = x^3/3+constant'
181
+ width='166'
182
+ height='39' />
183
+ <plaintext> integral x^2 dx = x^3/3+constant</plaintext>
184
+ </subpod>
185
+ <states count='1'>
186
+ <state name='Step-by-step solution'
187
+ input='IndefiniteIntegral__Step-by-step solution' />
188
+ </states>
189
+ </pod>
190
+ <pod title='Global minimum'
191
+ scanner='GlobalExtrema'
192
+ id='GlobalMinimum'
193
+ position='900'
194
+ error='false'
195
+ numsubpods='1'>
196
+ <subpod title=''>
197
+ <img src='http://www2.wolframalpha.com/Calculate/MSP/MSP9620hdi8ba18h005cd000026056i7ifhai8972?MSPStoreType=image/gif&amp;s=15'
198
+ alt='min{x^2} = 0 at x = 0'
199
+ title='min{x^2} = 0 at x = 0'
200
+ width='140'
201
+ height='22' />
202
+ <plaintext>min{x^2} = 0 at x = 0</plaintext>
203
+ </subpod>
204
+ </pod>
205
+ </queryresult>
@@ -31,6 +31,12 @@ describe Lita::Handlers::OnewheelWolframAlpha, :lita_handler => true do
31
31
  expect(replies.last).to eq('Wolfram couldn\'t parse boopadoop.')
32
32
  end
33
33
 
34
+ it 'will print plot for mathy things' do
35
+ mock_fixture('x^2')
36
+ send_command 'alpha x^2'
37
+ expect(replies.last).to eq('http://www2.wolframalpha.com/Calculate/MSP/MSP8620hdi8ba18h005cd0000268f85ce36b8h331?MSPStoreType=image/gif&s=15')
38
+ end
39
+
34
40
  it 'will error missing config' do
35
41
  registry.configure do |config|
36
42
  config.handlers.onewheel_wolfram_alpha.api_uri = 'http://api.wolframalpha.com/v2/query?input=[query]&appid=[appid]'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-onewheel-wolfram-alpha
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kreps
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-25 00:00:00.000000000 Z
11
+ date: 2016-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lita
@@ -156,6 +156,7 @@ files:
156
156
  - spec/fixtures/boopadoop.xml
157
157
  - spec/fixtures/pi.xml
158
158
  - spec/fixtures/whackadoo.xml
159
+ - spec/fixtures/x^2.xml
159
160
  - spec/lita/handlers/onewheel_wolfram_alpha_spec.rb
160
161
  - spec/spec_helper.rb
161
162
  homepage: https://github.com/onewheelskyward/lita-onewheel-wolfram-alpha
@@ -187,5 +188,6 @@ test_files:
187
188
  - spec/fixtures/boopadoop.xml
188
189
  - spec/fixtures/pi.xml
189
190
  - spec/fixtures/whackadoo.xml
191
+ - spec/fixtures/x^2.xml
190
192
  - spec/lita/handlers/onewheel_wolfram_alpha_spec.rb
191
193
  - spec/spec_helper.rb