wolfram 0.1.2 → 0.2.0

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.
data/.gemspec CHANGED
@@ -11,7 +11,6 @@ Gem::Specification.new do |s|
11
11
  s.summary = "Wolfram V2 API client"
12
12
  s.description = "Explore the vast world of computational knowledge available for free via Wolfram's v2 API."
13
13
  s.required_rubygems_version = ">= 1.3.6"
14
- s.rubyforge_project = 'tagaholic'
15
14
  s.executables = ['wolfram']
16
15
  s.add_dependency 'nokogiri', '>= 1.4.3'
17
16
  s.add_development_dependency 'rr'
@@ -19,7 +18,7 @@ Gem::Specification.new do |s|
19
18
  s.add_development_dependency 'bacon-rr'
20
19
  s.add_development_dependency 'bacon-bits'
21
20
  s.files = Dir.glob(%w[{lib,test}/**/*.rb bin/* [A-Z]*.{txt,rdoc} ext/**/*.{rb,c} **/deps.rip]) + %w{Rakefile .gemspec}
22
- s.files += Dir.glob(['test/fixtures/*.xml'])
23
- s.extra_rdoc_files = ["README.rdoc", "LICENSE.txt"]
21
+ s.files += Dir.glob(['test/fixtures/*.xml']) + %w{.travis.yml CONTRIBUTING.md}
22
+ s.extra_rdoc_files = ["README.md", "LICENSE.txt"]
24
23
  s.license = 'MIT'
25
24
  end
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ before_install: bundle init --gemspec=.gemspec
2
+ script: bacon -q -Ilib -I. test/*_test.rb
3
+ rvm:
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - rbx-19mode
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.2.0
2
+ * Add HashPresenter class
3
+ * Update fixture
4
+
1
5
  == 0.1.2
2
6
  * Fix constants bug
3
7
 
data/CONTRIBUTING.md ADDED
@@ -0,0 +1 @@
1
+ Thanks for trying out this project! [See here for contribution guidelines.](http://tagaholic.me/contributing.html)
data/README.md ADDED
@@ -0,0 +1,73 @@
1
+ Description
2
+ ===========
3
+
4
+ Explore the vast world of computational knowledge available for free via Wolfram's v2 API.
5
+
6
+
7
+ ### Install
8
+
9
+ To install this gem:
10
+
11
+ ```bash
12
+ gem install wolfram
13
+ ```
14
+
15
+
16
+ ### Setup
17
+
18
+ You'll need a Wolfram Appid (api key) by [creating an account
19
+ here](http://developer.wolframalpha.com/portal/apisignup.html) and
20
+ then clicking on the 'Get an APPID' button.
21
+
22
+ Once you have your own appid, set it in your shell, preferably in your ~/.bashrc:
23
+
24
+ ```bash
25
+ export WOLFRAM_APPID='YOURKEY'
26
+ ```
27
+
28
+ If you want to explicitly set your appid in a script:
29
+
30
+ ```ruby
31
+ Wolfram.appid = "YOURKEY"
32
+ ```
33
+
34
+
35
+ ### Usage
36
+
37
+ Query away on the commandline!
38
+
39
+ ```bash
40
+ # Calculate distance and travel time between places
41
+ wolfram from boston to new york
42
+
43
+ # Solve an equation
44
+ wolfram x^3 - 4x^2 + 6x - 24 = 0
45
+
46
+ # Find words ending with able
47
+ wolfram words ending with able
48
+ ```
49
+
50
+ Regular ruby usage:
51
+
52
+ ```ruby
53
+ query = 'boston population'
54
+ result = Wolfram.fetch(query)
55
+ # to see the result as a hash of pods and assumptions:
56
+ hash = HashPresenter.new(result).to_hash
57
+ ```
58
+
59
+ For many more examples, [see here](http://www.wolframalpha.com/examples/).
60
+
61
+
62
+ ## Credits
63
+
64
+ * [Ian White](https://github.com/ianwhite) is the original author of this gem.
65
+ * spaghetticode for HashPresenter
66
+ * bdigital for a bug fix
67
+
68
+
69
+ ## Todo
70
+
71
+ * More tests!
72
+ * A better inspect
73
+ * Handle more api options including format
data/README.rdoc CHANGED
@@ -41,6 +41,9 @@ For many more examples, {see here}[http://www.wolframalpha.com/examples/].
41
41
  * {Ian White}[https://github.com/ianwhite] is the original author of this gem.
42
42
  * bdigital for a bug fix
43
43
 
44
+ == Contributing
45
+ {See here}[http://tagaholic.me/contributing.html]
46
+
44
47
  == Todo
45
48
  * More tests!
46
49
  * A better inspect
data/lib/wolfram.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'nokogiri'
2
2
  require 'wolfram/xml_container'
3
+ require 'wolfram/hash_presenter'
3
4
  require 'wolfram/util'
4
5
  require 'wolfram/query'
5
6
  require 'wolfram/result'
@@ -0,0 +1,42 @@
1
+ module Wolfram
2
+ class HashPresenter
3
+ attr_reader :result
4
+
5
+ def initialize(result)
6
+ @result = result
7
+ end
8
+
9
+ def to_hash
10
+ {
11
+ :pods => pods_to_hash,
12
+ :assumptions => assumptions_to_hash
13
+ }
14
+ end
15
+
16
+ private
17
+
18
+ def pods_to_hash
19
+ pods.inject Hash.new do |hash, pod|
20
+ hash.update pod.title => pod.subpods.map(&:plaintext)
21
+ end
22
+ end
23
+
24
+ def assumptions_to_hash
25
+ assumptions.inject Hash.new do |hash, assumption|
26
+ hash.update assumption.name => assumption.values.map(&:desc)
27
+ end
28
+ end
29
+
30
+ def method_missing(method, *args, &block)
31
+ if result.respond_to? method
32
+ result.send(method, *args, &block)
33
+ else
34
+ super
35
+ end
36
+ end
37
+
38
+ def respond_to_missing?(meth, include_private)
39
+ result.respond_to?(meth, include_private) || super
40
+ end
41
+ end
42
+ end
@@ -1,3 +1,3 @@
1
1
  module Wolfram
2
- VERSION = '0.1.2'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -1,187 +1,119 @@
1
- <queryresult success="true" error="false" numpods="13" datatypes="City,MetropolitanArea,UrbanArea,USCounty,USState" timedout="" timing="3.101" parsetiming="0.117" parsetimedout="false" recalculate="" version="2.0">
2
- <pod title="Input interpretation" scanner="Identity" id="Input" position="100" error="false" numsubpods="1">
3
- <subpod title="">
4
- <plaintext>Boston, Massachusetts</plaintext>
5
- <img src="http://www1.wolframalpha.com/Calculate/MSP/MSP102619e3b0ea35330h1a000028gg82hdh359db20?MSPStoreType=image/gif&amp;s=12" alt="Boston, Massachusetts" title="Boston, Massachusetts" width="147" height="20"/>
1
+ <?xml version='1.0' encoding='UTF-8'?>
2
+ <queryresult success='true'
3
+ error='false'
4
+ numpods='2'
5
+ datatypes='City,MetropolitanArea,UrbanArea'
6
+ timedout='Data,Character'
7
+ timedoutpods=''
8
+ timing='1.157'
9
+ parsetiming='0.237'
10
+ parsetimedout='false'
11
+ recalculate='http://www4a.wolframalpha.com/api/v2/recalc.jsp?id=MSPa30241a3hbabae907f3a000002a85ade2hci82h1e&amp;s=53'
12
+ id='MSPa30251a3hbabae907f3a00000470a85hc67b99i3h'
13
+ host='http://www4a.wolframalpha.com'
14
+ server='53'
15
+ related='http://www4a.wolframalpha.com/api/v2/relatedQueries.jsp?id=MSPa30261a3hbabae907f3a000003427e8938201ddg4&amp;s=53'
16
+ version='2.6'>
17
+ <pod title='Input interpretation'
18
+ scanner='Identity'
19
+ id='Input'
20
+ position='100'
21
+ error='false'
22
+ numsubpods='1'>
23
+ <subpod title=''>
24
+ <plaintext>Boston, Massachusetts, United States</plaintext>
25
+ <img src='http://www4a.wolframalpha.com/Calculate/MSP/MSP30271a3hbabae907f3a000004d0heg3h53ih4b3e?MSPStoreType=image/gif&amp;s=53'
26
+ alt='Boston, Massachusetts, United States'
27
+ title='Boston, Massachusetts, United States'
28
+ width='241'
29
+ height='18' />
6
30
  </subpod>
7
31
  </pod>
8
- <pod title="Populations" scanner="Data" id="Population:CityData" position="200" error="false" numsubpods="1">
9
- <subpod title="">
10
- <plaintext>city population | 609023 people (country rank: 22nd) (2008 estimate)
32
+ <pod title='Populations'
33
+ scanner='Data'
34
+ id='Population:CityData'
35
+ position='200'
36
+ error='false'
37
+ numsubpods='1'
38
+ primary='true'>
39
+ <subpod title=''>
40
+ <plaintext>city population | 617594 people (country rank: 23rd) (2010 estimate)
11
41
  urban area population | 4.032 million people (Boston urban area) (country rank: 7th) (2000 estimate)
12
- metro area population | 4.589 million people (Boston metro area) (country rank: 10th) (2009 estimate)</plaintext>
13
- <img src="http://www1.wolframalpha.com/Calculate/MSP/MSP102719e3b0ea35330h1a00001584427c4e8e6cec?MSPStoreType=image/gif&amp;s=12" alt="city population | 609023 people (country rank: 22nd) (2008 estimate) urban area population | 4.032 million people (Boston urban area) (country rank: 7th) (2000 estimate) metro area population | 4.589 million people (Boston metro area) (country rank: 10th) (2009 estimate)" title="city population | 609023 people (country rank: 22nd) (2008 estimate) urban area population | 4.032 million people (Boston urban area) (country rank: 7th) (2000 estimate) metro area population | 4.589 million people (Boston metro area) (country rank: 10th) (2009 estimate)" width="496" height="160"/>
14
- </subpod>
15
- <states count="1">
16
- <state name="Show history" input="Population:CityData__Show history"/>
17
- </states>
18
- </pod>
19
- <pod title="Location" scanner="Data" id="Location:CityData" position="300" error="false" numsubpods="1">
20
- <subpod title="">
21
- <plaintext/>
22
- <img src="http://www1.wolframalpha.com/Calculate/MSP/MSP102819e3b0ea35330h1a000020e9fi69ecabg1i0?MSPStoreType=image/gif&amp;s=12" alt="" title="" width="300" height="161"/>
23
- </subpod>
24
- <states count="2">
25
- <state name="World map" input="Location:CityData__World map"/>
26
- <state name="Show coordinates" input="Location:CityData__Show coordinates"/>
27
- </states>
28
- <infos count="1">
29
- <info>
30
- <link url="http://maps.google.com/maps?t=h&amp;ie=UTF8&amp;ll=42.3216,-71.0891&amp;z=12" text="Satellite image"/>
31
- </info>
32
- </infos>
33
- </pod>
34
- <pod title="Local map" scanner="Data" id="Map:CityData" position="400" error="false" numsubpods="1">
35
- <subpod title="">
36
- <plaintext/>
37
- <img src="http://www1.wolframalpha.com/Calculate/MSP/MSP102919e3b0ea35330h1a000038e0a9d82ceg5fga?MSPStoreType=image/gif&amp;s=12" alt="" title="" width="256" height="278"/>
38
- </subpod>
39
- <states count="3">
40
- <state name="Metric" input="Map:CityData__Metric"/>
41
- <state name="Larger display" input="Map:CityData__Larger display"/>
42
- <statelist count="13" value="9 miles across">
43
- <state name="2 miles across" input="Map:CityData__2 miles across"/>
44
- <state name="4 miles across" input="Map:CityData__4 miles across"/>
45
- <state name="9 miles across" input="Map:CityData__9 miles across"/>
46
- <state name="18 miles across" input="Map:CityData__18 miles across"/>
47
- <state name="36 miles across" input="Map:CityData__36 miles across"/>
48
- <state name="72 miles across" input="Map:CityData__72 miles across"/>
49
- <state name="140 miles across" input="Map:CityData__140 miles across"/>
50
- <state name="290 miles across" input="Map:CityData__290 miles across"/>
51
- <state name="570 miles across" input="Map:CityData__570 miles across"/>
52
- <state name="1100 miles across" input="Map:CityData__1100 miles across"/>
53
- <state name="2200 miles across" input="Map:CityData__2200 miles across"/>
54
- <state name="3900 miles across" input="Map:CityData__3900 miles across"/>
55
- <state name="7200 miles across" input="Map:CityData__7200 miles across"/>
56
- </statelist>
57
- </states>
58
- <infos count="1">
59
- <info>
60
- <link url="http://maps.google.com/maps?t=h&amp;ie=UTF8&amp;ll=42.3216,-71.0891&amp;z=12" text="Satellite image"/>
61
- </info>
62
- </infos>
63
- </pod>
64
- <pod title="Current local time" scanner="Data" id="CurrentTime:CityData" position="500" error="false" numsubpods="1">
65
- <subpod title="">
66
- <plaintext>5:32 pm EST | Sunday, January 23, 2011</plaintext>
67
- <img src="http://www1.wolframalpha.com/Calculate/MSP/MSP103019e3b0ea35330h1a000025c691cb4f654g5c?MSPStoreType=image/gif&amp;s=12" alt="5:32 pm EST | Sunday, January 23, 2011" title="5:32 pm EST | Sunday, January 23, 2011" width="270" height="20"/>
68
- </subpod>
69
- </pod>
70
- <pod title="Current weather" scanner="Data" id="WeatherPod:CityData" position="600" error="false" numsubpods="1">
71
- <subpod title="">
72
- <plaintext>19 &#xB0;F (wind chill: 7 &#xB0;F) | relative humidity: 45% | wind: 12 mph | partly cloudy</plaintext>
73
- <img src="http://www1.wolframalpha.com/Calculate/MSP/MSP103119e3b0ea35330h1a000037d137ggg45f08b4?MSPStoreType=image/gif&amp;s=12" alt="19 °F (wind chill: 7 °F) | relative humidity: 45% | wind: 12 mph | partly cloudy" title="19 °F (wind chill: 7 °F) | relative humidity: 45% | wind: 12 mph | partly cloudy" width="496" height="42"/>
74
- </subpod>
75
- <states count="2">
76
- <state name="Show history" input="WeatherPod:CityData__Show history"/>
77
- <state name="Show metric" input="WeatherPod:CityData__Show metric"/>
78
- </states>
79
- </pod>
80
- <pod title="Economic properties" scanner="Data" id="EconomicProperties:CityData" position="700" error="false" numsubpods="1">
81
- <subpod title="">
82
- <plaintext>cost of living index | 1.3 &#xD7; national average (Q3 2010)
83
- median home price | $332900 (Boston metro area) (annual change: -7.81%) (2009)
84
- unemployment rate | 8% (September 2010)
85
- total sales tax rate | 6.25%</plaintext>
86
- <img src="http://www1.wolframalpha.com/Calculate/MSP/MSP103219e3b0ea35330h1a00003ih0c624f9fcig5g?MSPStoreType=image/gif&amp;s=12" alt="cost of living index | 1.3 × national average (Q3 2010) median home price | $332900 (Boston metro area) (annual change: -7.81%) (2009) unemployment rate | 8% (September 2010) total sales tax rate | 6.25%" title="cost of living index | 1.3 × national average (Q3 2010) median home price | $332900 (Boston metro area) (annual change: -7.81%) (2009) unemployment rate | 8% (September 2010) total sales tax rate | 6.25%" width="496" height="158"/>
87
- </subpod>
88
- </pod>
89
- <pod title="Other indicators" scanner="Data" id="QualityOfLife:CityData" position="800" error="false" numsubpods="1">
90
- <subpod title="">
91
- <plaintext>total rate of violent crime | 2.4 &#xD7; national average (2008 estimate)
92
- total rate of property crime | 1.2 &#xD7; national average (2008 estimate)
93
- average daily traffic delay | 7.1 min/day</plaintext>
94
- <img src="http://www1.wolframalpha.com/Calculate/MSP/MSP103319e3b0ea35330h1a00002c43ica63fee46b2?MSPStoreType=image/gif&amp;s=12" alt="total rate of violent crime | 2.4 × national average (2008 estimate) total rate of property crime | 1.2 × national average (2008 estimate) average daily traffic delay | 7.1 min/day" title="total rate of violent crime | 2.4 × national average (2008 estimate) total rate of property crime | 1.2 × national average (2008 estimate) average daily traffic delay | 7.1 min/day" width="474" height="106"/>
95
- </subpod>
96
- <infos count="1">
97
- <info>
98
- <units count="1">
99
- <unit short="min/day" long="minutes per day"/>
100
- <img src="http://www1.wolframalpha.com/Calculate/MSP/MSP103419e3b0ea35330h1a00003eheg0g4i784h0a8?MSPStoreType=image/gif&amp;s=12" width="179" height="26"/>
101
- </units>
102
- </info>
103
- </infos>
104
- </pod>
105
- <pod title="Geographic properties" scanner="Data" id="GeographicProperties:CityData" position="900" error="false" numsubpods="1">
106
- <subpod title="">
107
- <plaintext>elevation | 46 ft
108
- area | 48.43 mi^2
109
- population density | 12576 people/mi^2</plaintext>
110
- <img src="http://www1.wolframalpha.com/Calculate/MSP/MSP103519e3b0ea35330h1a00001a2di1ih5177fie0?MSPStoreType=image/gif&amp;s=12" alt="elevation | 46 ft area | 48.43 mi^2 population density | 12576 people/mi^2" title="elevation | 46 ft area | 48.43 mi^2 population density | 12576 people/mi^2" width="286" height="106"/>
111
- </subpod>
112
- <states count="1">
113
- <state name="Show metric" input="GeographicProperties:CityData__Show metric"/>
114
- </states>
115
- <infos count="1">
116
- <info>
117
- <units count="3">
118
- <unit short="ft" long="feet"/>
119
- <unit short="mi^2" long="square miles"/>
120
- <unit short="people/mi^2" long="people per square mile"/>
121
- <img src="http://www1.wolframalpha.com/Calculate/MSP/MSP103619e3b0ea35330h1a00003d88iibb6i7093e8?MSPStoreType=image/gif&amp;s=12" width="232" height="74"/>
122
- </units>
123
- </info>
124
- </infos>
125
- </pod>
126
- <pod title="Nearby cities" scanner="Data" id="CityHierarchyInfo:CityData" position="1000" error="false" numsubpods="1">
127
- <subpod title="">
128
- <plaintext>Cambridge, Massachusetts | 4 miles north-northwest | 105596 people
129
- Quincy, Massachusetts | 6 miles southeast | 92339 people
130
- Providence, Rhode Island | 38 miles south-southwest | 171557 people
131
- New York City, New York | 184 miles southwest | 8.364 million people
132
- (straight-line distances between city centers)</plaintext>
133
- <img src="http://www1.wolframalpha.com/Calculate/MSP/MSP103719e3b0ea35330h1a00000ddigh995a68547a?MSPStoreType=image/gif&amp;s=12" alt="Cambridge, Massachusetts | 4 miles north-northwest | 105596 people Quincy, Massachusetts | 6 miles southeast | 92339 people Providence, Rhode Island | 38 miles south-southwest | 171557 people New York City, New York | 184 miles southwest | 8.364 million people (straight-line distances between city centers)" title="Cambridge, Massachusetts | 4 miles north-northwest | 105596 people Quincy, Massachusetts | 6 miles southeast | 92339 people Providence, Rhode Island | 38 miles south-southwest | 171557 people New York City, New York | 184 miles southwest | 8.364 million people (straight-line distances between city centers)" width="495" height="209"/>
134
- </subpod>
135
- <states count="2">
136
- <state name="Show metric" input="CityHierarchyInfo:CityData__Show metric"/>
137
- <state name="More" input="CityHierarchyInfo:CityData__More"/>
138
- </states>
139
- </pod>
140
- <pod title="County" scanner="Data" id="CountyInfo:CityData" position="1100" error="false" numsubpods="1">
141
- <subpod title="">
142
- <plaintext>Suffolk County, Massachusetts</plaintext>
143
- <img src="http://www1.wolframalpha.com/Calculate/MSP/MSP103819e3b0ea35330h1a000011cc3hc37d56i612?MSPStoreType=image/gif&amp;s=12" alt="Suffolk County, Massachusetts" title="Suffolk County, Massachusetts" width="201" height="20"/>
144
- </subpod>
145
- </pod>
146
- <pod title="Nicknames" scanner="Data" id="BasicInformation:CityData" position="1200" error="false" numsubpods="1">
147
- <subpod title="">
148
- <plaintext>Athens of America | Beantown | The Hub | The Cradle of Liberty</plaintext>
149
- <img src="http://www1.wolframalpha.com/Calculate/MSP/MSP103919e3b0ea35330h1a0000332h1hcg83g4g27a?MSPStoreType=image/gif&amp;s=12" alt="Athens of America | Beantown | The Hub | The Cradle of Liberty" title="Athens of America | Beantown | The Hub | The Cradle of Liberty" width="452" height="20"/>
150
- </subpod>
151
- </pod>
152
- <pod title="Notable people born in Boston" scanner="Data" id="NotablePeople:CityData" position="1300" error="false" numsubpods="1">
153
- <subpod title="">
154
- <plaintext>Benjamin Franklin (1706) | Edgar Allan Poe (1809) | Michael Bloomberg (1942) | Robert F. Kennedy (1925) | James Taylor (1948) | Ralph Waldo Emerson (1803) | Donna Summer (1948) | Guru (1961) | Leonard Nimoy (1931) | Uma Thurman (1970) | ...</plaintext>
155
- <img src="http://www1.wolframalpha.com/Calculate/MSP/MSP104019e3b0ea35330h1a00006509g4f69da8a7i5?MSPStoreType=image/gif&amp;s=12" alt="Benjamin Franklin (1706) | Edgar Allan Poe (1809) | Michael Bloomberg (1942) | Robert F. Kennedy (1925) | James Taylor (1948) | Ralph Waldo Emerson (1803) | Donna Summer (1948) | Guru (1961) | Leonard Nimoy (1931) | Uma Thurman (1970) | ..." title="Benjamin Franklin (1706) | Edgar Allan Poe (1809) | Michael Bloomberg (1942) | Robert F. Kennedy (1925) | James Taylor (1948) | Ralph Waldo Emerson (1803) | Donna Summer (1948) | Guru (1961) | Leonard Nimoy (1931) | Uma Thurman (1970) | ..." width="461" height="101"/>
42
+ metro area population | 4.591 million people (Boston metro area) (country rank: 10th) (2011 estimate)</plaintext>
43
+ <img src='http://www4a.wolframalpha.com/Calculate/MSP/MSP30281a3hbabae907f3a000002i57d68ab7148579?MSPStoreType=image/gif&amp;s=53'
44
+ alt='city population | 617594 people (country rank: 23rd) (2010 estimate)
45
+ urban area population | 4.032 million people (Boston urban area) (country rank: 7th) (2000 estimate)
46
+ metro area population | 4.591 million people (Boston metro area) (country rank: 10th) (2011 estimate)'
47
+ title='city population | 617594 people (country rank: 23rd) (2010 estimate)
48
+ urban area population | 4.032 million people (Boston urban area) (country rank: 7th) (2000 estimate)
49
+ metro area population | 4.591 million people (Boston metro area) (country rank: 10th) (2011 estimate)'
50
+ width='496'
51
+ height='151' />
156
52
  </subpod>
157
- <states count="4">
158
- <state name="More" input="NotablePeople:CityData__More"/>
159
- <state name="Show dates" input="NotablePeople:CityData__Show dates"/>
160
- <state name="Show occupations" input="NotablePeople:CityData__Show occupations"/>
161
- <state name="Show deaths" input="NotablePeople:CityData__Show deaths"/>
53
+ <states count='1'>
54
+ <state name='Show history'
55
+ input='Population:CityData__Show history' />
162
56
  </states>
163
57
  </pod>
164
- <assumptions count="2">
165
- <assumption type="Clash" word="boston" count="4">
166
- <value name="City" desc="a city" input="*C.boston-_*City-"/>
167
- <value name="Surname" desc="a surname" input="*C.boston-_*Surname-"/>
168
- <value name="AdministrativeDivision" desc="an administrative division" input="*C.boston-_*AdministrativeDivision-"/>
169
- <value name="GivenName" desc="a given name" input="*C.boston-_*GivenName-"/>
58
+ <assumptions count='2'>
59
+ <assumption type='Clash'
60
+ word='boston'
61
+ template='Assuming &quot;${word}&quot; is ${desc1}. Use as ${desc2} instead'
62
+ count='6'>
63
+ <value name='City'
64
+ desc='a city'
65
+ input='*C.boston-_*City-' />
66
+ <value name='MLBTeam'
67
+ desc='an MLB team'
68
+ input='*C.boston-_*MLBTeam-' />
69
+ <value name='MusicAct'
70
+ desc='a music act'
71
+ input='*C.boston-_*MusicAct-' />
72
+ <value name='AdministrativeDivision'
73
+ desc='an administrative division'
74
+ input='*C.boston-_*AdministrativeDivision-' />
75
+ <value name='Surname'
76
+ desc='a surname'
77
+ input='*C.boston-_*Surname-' />
78
+ <value name='GivenName'
79
+ desc='a given name'
80
+ input='*C.boston-_*GivenName-' />
170
81
  </assumption>
171
- <assumption type="SubCategory" word="boston" count="7">
172
- <value name="{Boston, Massachusetts, UnitedStates}" desc="Boston (Massachusetts, USA)" input="*DPClash.CityE.boston-_**Boston.Massachusetts.UnitedStates--"/>
173
- <value name="{Boston, NewYork, UnitedStates}" desc="Boston (New York, USA)" input="*DPClash.CityE.boston-_**Boston.NewYork.UnitedStates--"/>
174
- <value name="{Boston, Lincolnshire, UnitedKingdom}" desc="Boston (United Kingdom)" input="*DPClash.CityE.boston-_**Boston.Lincolnshire.UnitedKingdom--"/>
175
- <value name="{Boston, Georgia, UnitedStates}" desc="Boston (Georgia, USA)" input="*DPClash.CityE.boston-_**Boston.Georgia.UnitedStates--"/>
176
- <value name="{Boston, Karakalpakstan, Uzbekistan}" desc="Boston (Uzbekistan)" input="*DPClash.CityE.boston-_**Boston.Karakalpakstan.Uzbekistan--"/>
177
- <value name="{Boston, Indiana, UnitedStates}" desc="Boston (Indiana, USA)" input="*DPClash.CityE.boston-_**Boston.Indiana.UnitedStates--"/>
178
- <value name="{Boston, DavaoOriental, Philippines}" desc="Boston (Philippines)" input="*DPClash.CityE.boston-_**Boston.DavaoOriental.Philippines--"/>
82
+ <assumption type='SubCategory'
83
+ word='boston'
84
+ template='Assuming ${desc1}. Use ${desc2} instead'
85
+ count='7'>
86
+ <value name='{Boston, Massachusetts, UnitedStates}'
87
+ desc='Boston (Massachusetts, USA)'
88
+ input='*DPClash.CityE.boston-_**Boston.Massachusetts.UnitedStates--' />
89
+ <value name='{Boston, Lincolnshire, UnitedKingdom}'
90
+ desc='Boston (United Kingdom)'
91
+ input='*DPClash.CityE.boston-_**Boston.Lincolnshire.UnitedKingdom--' />
92
+ <value name='{Boston, Karakalpakstan, Uzbekistan}'
93
+ desc='Boston (Uzbekistan)'
94
+ input='*DPClash.CityE.boston-_**Boston.Karakalpakstan.Uzbekistan--' />
95
+ <value name='{Boston, NewYork, UnitedStates}'
96
+ desc='Boston (New York, USA)'
97
+ input='*DPClash.CityE.boston-_**Boston.NewYork.UnitedStates--' />
98
+ <value name='{Boston, DavaoOriental, Philippines}'
99
+ desc='Boston (Philippines)'
100
+ input='*DPClash.CityE.boston-_**Boston.DavaoOriental.Philippines--' />
101
+ <value name='{Boston, Georgia, UnitedStates}'
102
+ desc='Boston (Georgia, USA)'
103
+ input='*DPClash.CityE.boston-_**Boston.Georgia.UnitedStates--' />
104
+ <value name='{Boston, Indiana, UnitedStates}'
105
+ desc='Boston (Indiana, USA)'
106
+ input='*DPClash.CityE.boston-_**Boston.Indiana.UnitedStates--' />
179
107
  </assumption>
180
108
  </assumptions>
181
- <sources count="4">
182
- <source url="http://www.wolframalpha.com/sources/CityDataSourceInformationNotes.html" text="City data"/>
183
- <source url="http://www.wolframalpha.com/sources/OpenStreetMapSourceInformationNotes.html" text="Open street map"/>
184
- <source url="http://www.wolframalpha.com/sources/PeopleDataSourceInformationNotes.html" text="People data"/>
185
- <source url="http://www.wolframalpha.com/sources/WeatherDataSourceInformationNotes.html" text="Weather data"/>
109
+ <sources count='4'>
110
+ <source url='http://www.wolframalpha.com/sources/CityDataSourceInformationNotes.html'
111
+ text='City data' />
112
+ <source url='http://www.wolframalpha.com/sources/MetropolitanAreaDataSourceInformationNotes.html'
113
+ text='Metropolitan area data' />
114
+ <source url='http://www.wolframalpha.com/sources/UrbanAreaDataSourceInformationNotes.html'
115
+ text='Urban area data' />
116
+ <source url='http://www.wolframalpha.com/sources/USCensusDataSourceInformationNotes.html'
117
+ text='US census data' />
186
118
  </sources>
187
119
  </queryresult>
@@ -0,0 +1,46 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+
3
+ module Wolfram
4
+ describe 'HashPresenter' do
5
+ before do
6
+ mock(Query).fetch(anything) { read_fixture('boston') }
7
+ @result = Wolfram.fetch('boston')
8
+ @presenter = HashPresenter.new(@result)
9
+ end
10
+
11
+ it 'has #result reader' do
12
+ @presenter.result.should == @result
13
+ end
14
+
15
+ it 'raises errors for methods that cannot handle' do
16
+ lambda { @presenter.asdasd }.should.raise(NoMethodError)
17
+ end
18
+
19
+ it 'delegates #pods to #result' do
20
+ mock(@result).pods
21
+ @presenter.pods
22
+ end
23
+
24
+ it 'delegates #assumptions to #result' do
25
+ mock(@result).assumptions
26
+ @presenter.assumptions
27
+ end
28
+
29
+ describe '#to_hash' do
30
+ before { @to_hash = @presenter.to_hash }
31
+
32
+ it 'returns a hash' do
33
+ Hash.should === @to_hash
34
+ end
35
+
36
+ it 'has :pods and :assumptions as keys' do
37
+ @to_hash.keys.sort.should == [:pods, :assumptions].sort
38
+ end
39
+
40
+ it 'includes expected data' do
41
+ @to_hash[:pods]['Populations'].first.should =~ /city population | 617594 people/
42
+ @to_hash[:assumptions]['Clash'].first.should == 'a city'
43
+ end
44
+ end
45
+ end
46
+ end
data/test/test_helper.rb CHANGED
@@ -27,6 +27,11 @@ module TestHelpers
27
27
  end
28
28
  fake.string
29
29
  end
30
+
31
+ def read_fixture(name)
32
+ path = File.expand_path("../fixtures/#{name}.xml", __FILE__)
33
+ File.read(path)
34
+ end
30
35
  end
31
36
 
32
37
  class Bacon::Context
metadata CHANGED
@@ -1,85 +1,109 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: wolfram
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
4
5
  prerelease:
5
- version: 0.1.2
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Gabriel Horner
9
9
  - Ian White
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
-
14
- date: 2011-07-02 00:00:00 -04:00
15
- default_executable:
16
- dependencies:
17
- - !ruby/object:Gem::Dependency
13
+ date: 2013-02-07 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
18
16
  name: nokogiri
19
- prerelease: false
20
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
21
18
  none: false
22
- requirements:
23
- - - ">="
24
- - !ruby/object:Gem::Version
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
25
22
  version: 1.4.3
26
23
  type: :runtime
27
- version_requirements: *id001
28
- - !ruby/object:Gem::Dependency
29
- name: rr
30
24
  prerelease: false
31
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: 1.4.3
31
+ - !ruby/object:Gem::Dependency
32
+ name: rr
33
+ requirement: !ruby/object:Gem::Requirement
32
34
  none: false
33
- requirements:
34
- - - ">="
35
- - !ruby/object:Gem::Version
36
- version: "0"
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
37
39
  type: :development
38
- version_requirements: *id002
39
- - !ruby/object:Gem::Dependency
40
- name: bacon
41
40
  prerelease: false
42
- requirement: &id003 !ruby/object:Gem::Requirement
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: bacon
49
+ requirement: !ruby/object:Gem::Requirement
43
50
  none: false
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
47
54
  version: 1.1.0
48
55
  type: :development
49
- version_requirements: *id003
50
- - !ruby/object:Gem::Dependency
51
- name: bacon-rr
52
56
  prerelease: false
53
- requirement: &id004 !ruby/object:Gem::Requirement
57
+ version_requirements: !ruby/object:Gem::Requirement
54
58
  none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- version: "0"
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: 1.1.0
63
+ - !ruby/object:Gem::Dependency
64
+ name: bacon-rr
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
59
71
  type: :development
60
- version_requirements: *id004
61
- - !ruby/object:Gem::Dependency
62
- name: bacon-bits
63
72
  prerelease: false
64
- requirement: &id005 !ruby/object:Gem::Requirement
73
+ version_requirements: !ruby/object:Gem::Requirement
65
74
  none: false
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: "0"
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ - !ruby/object:Gem::Dependency
80
+ name: bacon-bits
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
70
87
  type: :development
71
- version_requirements: *id005
72
- description: Explore the vast world of computational knowledge available for free via Wolfram's v2 API.
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ description: Explore the vast world of computational knowledge available for free
96
+ via Wolfram's v2 API.
73
97
  email: gabriel.horner@gmail.com
74
- executables:
98
+ executables:
75
99
  - wolfram
76
100
  extensions: []
77
-
78
- extra_rdoc_files:
79
- - README.rdoc
101
+ extra_rdoc_files:
102
+ - README.md
80
103
  - LICENSE.txt
81
- files:
104
+ files:
82
105
  - lib/wolfram/assumption.rb
106
+ - lib/wolfram/hash_presenter.rb
83
107
  - lib/wolfram/pod.rb
84
108
  - lib/wolfram/query.rb
85
109
  - lib/wolfram/result.rb
@@ -87,6 +111,7 @@ files:
87
111
  - lib/wolfram/version.rb
88
112
  - lib/wolfram/xml_container.rb
89
113
  - lib/wolfram.rb
114
+ - test/hash_presenter_test.rb
90
115
  - test/test_helper.rb
91
116
  - test/util_test.rb
92
117
  - test/wolfram_test.rb
@@ -99,33 +124,32 @@ files:
99
124
  - Rakefile
100
125
  - .gemspec
101
126
  - test/fixtures/boston.xml
102
- has_rdoc: true
127
+ - .travis.yml
128
+ - CONTRIBUTING.md
129
+ - README.md
103
130
  homepage: http://github.com/cldwalker/wolfram
104
- licenses:
131
+ licenses:
105
132
  - MIT
106
133
  post_install_message:
107
134
  rdoc_options: []
108
-
109
- require_paths:
135
+ require_paths:
110
136
  - lib
111
- required_ruby_version: !ruby/object:Gem::Requirement
137
+ required_ruby_version: !ruby/object:Gem::Requirement
112
138
  none: false
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: "0"
117
- required_rubygems_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
144
  none: false
119
- requirements:
120
- - - ">="
121
- - !ruby/object:Gem::Version
145
+ requirements:
146
+ - - ! '>='
147
+ - !ruby/object:Gem::Version
122
148
  version: 1.3.6
123
149
  requirements: []
124
-
125
- rubyforge_project: tagaholic
126
- rubygems_version: 1.6.2
150
+ rubyforge_project:
151
+ rubygems_version: 1.8.24
127
152
  signing_key:
128
153
  specification_version: 3
129
154
  summary: Wolfram V2 API client
130
155
  test_files: []
131
-