weather_jp 0.1.0 → 0.1.1
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/README.jp.md +103 -0
- data/README.md +18 -13
- data/lib/weather_jp.rb +12 -5
- data/lib/weather_jp/version.rb +1 -1
- data/spec/day_weather_spec.rb +3 -5
- data/spec/fixture/RSS.rss +1 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/weather_spec.rb +141 -107
- metadata +7 -4
data/README.jp.md
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
[](http://travis-ci.org/Taiki45/weather_jp)
|
2
|
+
|
3
|
+
## About
|
4
|
+
|
5
|
+
天気予報サービス API ラッパーです。
|
6
|
+
|
7
|
+
天気予報を簡単に Ruby オブジェクトにします。
|
8
|
+
|
9
|
+
http://taiki45.github.com/weather_jp
|
10
|
+
|
11
|
+
https://rubygems.org/gems/weather_jp
|
12
|
+
|
13
|
+
## インストール
|
14
|
+
|
15
|
+
この一行をあなたのアプリケーションの Gemfile に追記して下さい:
|
16
|
+
|
17
|
+
gem 'weather_jp'
|
18
|
+
|
19
|
+
そしてこう実行します:
|
20
|
+
|
21
|
+
$ bundle
|
22
|
+
|
23
|
+
または gem コマンドを使ってインストールします:
|
24
|
+
|
25
|
+
$ gem install weather_jp
|
26
|
+
|
27
|
+
## 使い方
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
# 全体の天気予報を扱うオブジェクトを作るいくつかの方法
|
31
|
+
tokyo = WeatherJp.get :tokyo
|
32
|
+
akiba = WeatherJp.get "秋葉原"
|
33
|
+
abuja = WeatherJp::Weather.new("アブジャ")
|
34
|
+
tsuyama = WeatherJp.get "津山"
|
35
|
+
|
36
|
+
# 天気予報を文字列として取得
|
37
|
+
tokyo.today.to_s
|
38
|
+
#=> これは "東京都 東京の天気は曇りのち晴れ、最高気温34度...etc" になります
|
39
|
+
|
40
|
+
# Weather オブジェクトを取得するいくつかの方法
|
41
|
+
akiba.get_weather(4) #=> <#DayWeather object>
|
42
|
+
tokyo.today.forecast #=> can be "晴れ"
|
43
|
+
tokyo.get_weather(:tomorrow).rain
|
44
|
+
akiba.day_after_tomorrow.to_s
|
45
|
+
WeatherJp.get(:tokyo, :today).forecast
|
46
|
+
|
47
|
+
# Weather オブジェクトを使ってみる
|
48
|
+
tokyo.each do |w|
|
49
|
+
puts w.city_name
|
50
|
+
puts w.day
|
51
|
+
puts w.forecast
|
52
|
+
puts w.max_temp
|
53
|
+
puts w.min_temp
|
54
|
+
puts w.rain
|
55
|
+
w.each_pair {|k,v| puts k, v }
|
56
|
+
end
|
57
|
+
|
58
|
+
akiba.map {|w| [w.day, w.forecast] }
|
59
|
+
|
60
|
+
# もしくは単純な Array や Hash として扱う方法
|
61
|
+
tokyo.to_a
|
62
|
+
tsuyama.each {|w| p w.to_hash }
|
63
|
+
akiba.day_weathers
|
64
|
+
|
65
|
+
# DayWeather#to_s メソッドをカスタマイズすることもできます
|
66
|
+
WeatherJp.get(:tokyo).today.to_s #=> "東京 東京都の天気は晴れ....etc"
|
67
|
+
|
68
|
+
WeatherJp.customize_to_s do
|
69
|
+
word = "#{day}の#{city_name}は#{forecast} "
|
70
|
+
word << "最高気温は#{max_temp} " if max_temp
|
71
|
+
word << "最低気温は#{min_temp} " if min_temp
|
72
|
+
word << "降水確率は#{rain}%" if rain
|
73
|
+
word << "でし"
|
74
|
+
word
|
75
|
+
end
|
76
|
+
|
77
|
+
WeatherJp.get(:tokyo).today.to_s #=> "本日の東京 東京都は晴れ...."
|
78
|
+
|
79
|
+
```
|
80
|
+
|
81
|
+
## 必要な環境
|
82
|
+
|
83
|
+
Ruby >= 1.9.2
|
84
|
+
|
85
|
+
## ドキュメント
|
86
|
+
|
87
|
+
http://rubydoc.info/gems/weather_jp/
|
88
|
+
|
89
|
+
## 作者
|
90
|
+
|
91
|
+
[@taiki45](https://twitter.com/taiki45)
|
92
|
+
|
93
|
+
## 貢献方法
|
94
|
+
|
95
|
+
1. Fork してください
|
96
|
+
2. あなたの機能を盛り込んだブランチを作って下さい (`git checkout -b my-new-feature`)
|
97
|
+
3. コミットしてください (`git commit -am 'Added some feature'`)
|
98
|
+
4. あなたの変更をプッシュしてください (`git push origin my-new-feature`)
|
99
|
+
5. Pull Request を作ってください
|
100
|
+
|
101
|
+
どんな要望やバグ報告、イッシュー、コメントも歓迎します
|
102
|
+
|
103
|
+
Thank you :)
|
data/README.md
CHANGED
@@ -28,20 +28,21 @@ Or install it yourself as:
|
|
28
28
|
|
29
29
|
```ruby
|
30
30
|
# creat weather object in differrnt ways
|
31
|
-
tokyo = WeatherJp.get :
|
32
|
-
|
33
|
-
|
31
|
+
tokyo = WeatherJp.get :tokyo
|
32
|
+
akiba = WeatherJp.get "秋葉原"
|
33
|
+
abuja = WeatherJp::Weather.new("アブジャ")
|
34
|
+
tsuyama = WeatherJp.get "津山"
|
34
35
|
|
35
36
|
# get weather info as String
|
36
37
|
tokyo.today.to_s
|
37
38
|
#=> can be "東京都 東京の天気は曇りのち晴れ、最高気温34度...etc"
|
38
39
|
|
39
40
|
# to get weather info in differrnt ways
|
40
|
-
|
41
|
-
|
41
|
+
akiba.get_weather(4) #=> <#DayWeather object>
|
42
|
+
tokyo.today.forecast #=> can be "晴れ"
|
42
43
|
tokyo.get_weather(:tomorrow).rain
|
43
|
-
|
44
|
-
|
44
|
+
akiba.day_after_tomorrow.to_s
|
45
|
+
WeatherJp.get(:tokyo, :today).forecast
|
45
46
|
|
46
47
|
# use Weather object
|
47
48
|
tokyo.each do |w|
|
@@ -54,16 +55,17 @@ tokyo.each do |w|
|
|
54
55
|
w.each_pair {|k,v| puts k, v }
|
55
56
|
end
|
56
57
|
|
57
|
-
|
58
|
+
akiba.map {|w| [w.day, w.forecast] }
|
58
59
|
|
59
60
|
# or use as simple Array or Hash
|
60
61
|
tokyo.to_a
|
61
|
-
|
62
|
+
tsuyama.each {|w| p w.to_hash }
|
63
|
+
akiba.day_weathers
|
62
64
|
|
63
65
|
# you can cutomize DayWeather#to_s method
|
64
|
-
|
66
|
+
WeatherJp.get(:tokyo).today.to_s #=> "東京 東京都の天気は晴れ....etc"
|
65
67
|
|
66
|
-
|
68
|
+
WeatherJp.customize_to_s do
|
67
69
|
word = "#{day}の#{city_name}は#{forecast} "
|
68
70
|
word << "最高気温は#{max_temp} " if max_temp
|
69
71
|
word << "最低気温は#{min_temp} " if min_temp
|
@@ -72,7 +74,7 @@ Weather.customize_to_s do
|
|
72
74
|
word
|
73
75
|
end
|
74
76
|
|
75
|
-
|
77
|
+
WeatherJp.get(:tokyo).today.to_s #=> "本日の東京 東京都は晴れ...."
|
76
78
|
|
77
79
|
```
|
78
80
|
|
@@ -84,6 +86,10 @@ Ruby >= 1.9.2
|
|
84
86
|
|
85
87
|
http://rubydoc.info/gems/weather_jp/
|
86
88
|
|
89
|
+
## Author
|
90
|
+
|
91
|
+
[@taiki45](https://twitter.com/taiki45)
|
92
|
+
|
87
93
|
## Contributing
|
88
94
|
|
89
95
|
1. Fork it
|
@@ -95,4 +101,3 @@ http://rubydoc.info/gems/weather_jp/
|
|
95
101
|
Feel free to any requests or bug reports, issues, comments.
|
96
102
|
|
97
103
|
Thank you :)
|
98
|
-
|
data/lib/weather_jp.rb
CHANGED
@@ -114,22 +114,29 @@ module WeatherJp
|
|
114
114
|
|
115
115
|
|
116
116
|
def get_weather_data
|
117
|
+
parse_rss(get_rss)
|
118
|
+
end
|
119
|
+
|
120
|
+
def get_rss
|
117
121
|
begin
|
118
122
|
uri = URI.parse(
|
119
123
|
"http://weather.jp.msn.com/" + \
|
120
124
|
"RSS.aspx?wealocations=wc:#{@area_code}&" + \
|
121
125
|
"weadegreetype=C&culture=ja-JP")
|
122
|
-
|
123
|
-
str = rss.channel.item(0).description
|
124
|
-
data = remove_html_tag(str).split(/%/)
|
125
|
-
data.pop
|
126
|
-
data.map {|i| i.delete!('"') }
|
126
|
+
RSS::Parser.parse(uri, false)
|
127
127
|
rescue
|
128
128
|
raise StandardError,
|
129
129
|
"the MSN weather sever may be downed, or got invaild city code"
|
130
130
|
end
|
131
131
|
end
|
132
132
|
|
133
|
+
def parse_rss(rss)
|
134
|
+
str = rss.channel.item(0).description
|
135
|
+
data = remove_html_tag(str).split(/%/)
|
136
|
+
data.pop
|
137
|
+
data.map {|i| i.delete!('"') }
|
138
|
+
end
|
139
|
+
|
133
140
|
def remove_html_tag(string)
|
134
141
|
string.gsub!(/<(\"[^\"]*\"|'[^']*'|[^'\">])*>/,'""')
|
135
142
|
end
|
data/lib/weather_jp/version.rb
CHANGED
data/spec/day_weather_spec.rb
CHANGED
@@ -22,8 +22,6 @@ describe "DayWeather" do
|
|
22
22
|
it "should return String" do
|
23
23
|
@weather.inspect.class.should == String
|
24
24
|
end
|
25
|
-
|
26
|
-
it "should have certain format"
|
27
25
|
end
|
28
26
|
|
29
27
|
describe "#to_s" do
|
@@ -31,7 +29,9 @@ describe "DayWeather" do
|
|
31
29
|
@weather.to_s.class.should == String
|
32
30
|
end
|
33
31
|
|
34
|
-
it "should be certain string
|
32
|
+
it "should be certain string format" do
|
33
|
+
@weather.to_s.should =~ /東京都\s東京の今日の天気は.*\sです。/u
|
34
|
+
end
|
35
35
|
end
|
36
36
|
|
37
37
|
describe "#to_hash" do
|
@@ -45,8 +45,6 @@ describe "DayWeather" do
|
|
45
45
|
@weather.to_hash.should have_key(:max_temp)
|
46
46
|
@weather.to_hash.should have_key(:rain)
|
47
47
|
end
|
48
|
-
|
49
|
-
it "should have certain value when certain env"
|
50
48
|
end
|
51
49
|
|
52
50
|
describe "#each" do
|
@@ -0,0 +1 @@
|
|
1
|
+
<?xml version="1.0" ?><?xml-stylesheet type='text/xsl' href='rss/xslt/rss-ja-JP.xsl' version='1.0'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>東京都 東京 - MSN 天気予報</title><link>http://weather.jp.msn.com/local.aspx?wealocations=wc:JAXX0085&q=%e6%9d%b1%e4%ba%ac%e9%83%bd+%e6%9d%b1%e4%ba%ac&src=rss</link><description>東京都 東京 の天気予報</description><image><url>http://kaw.stc.s-msn.com/as/wea3/i/ja/weather_h_pos_c_171x30.gif</url><title>MSN 天気予報</title><link>http://weather.jp.msn.com/default.aspx?src=rss</link></image><language>ja-JP</language><category>天気</category><ttl>60</ttl><lastBuildDate>Sat, 29 Sep 2012 16:00:00 GMT</lastBuildDate><generator>MSN 天気予報</generator><copyright>© 2012 Microsoft</copyright><item><title>東京都 東京 の 2012年9月30日 の天気予報</title><link>http://weather.jp.msn.com/local.aspx?wealocations=wc:JAXX0085&q=%e6%9d%b1%e4%ba%ac%e9%83%bd+%e6%9d%b1%e4%ba%ac&src=rss</link><pubDate>Sat, 29 Sep 2012 08:00:00 GMT</pubDate><guid isPermaLink="false">GUID:http://weather.msn.com/rss.aspx?wealocations=wc:JAXX0085&q=%e6%9d%b1%e4%ba%ac%e9%83%bd+%e6%9d%b1%e4%ba%ac&degreetype=C&ja-JP+Sat, 29 Sep 2012 08:00:00 GMT+FORECAST</guid><description><![CDATA[<p><strong><a href="http://weather.jp.msn.com/local.aspx?wealocations=wc:JAXX0085&q=%e6%9d%b1%e4%ba%ac%e9%83%bd+%e6%9d%b1%e4%ba%ac&src=rss">今日</a>: </strong>晴のち雨.<img src="http://kaw.stc.s-msn.com/as/wea3/i/ja/saw/61.gif" width="35" height="21" alt="晴のち雨" title="晴のち雨" /> 最低: 24°C. 最高: 29°C. 降水確率: 80%<br /><strong><a href="http://weather.jp.msn.com/local.aspx?wealocations=wc:JAXX0085&q=%e6%9d%b1%e4%ba%ac%e9%83%bd+%e6%9d%b1%e4%ba%ac&src=rss">明日</a>: </strong>雨のち晴.<img src="http://kaw.stc.s-msn.com/as/wea3/i/ja/saw/66.gif" width="35" height="21" alt="雨のち晴" title="雨のち晴" /> 最低: 22°C. 最高: 30°C. 降水確率: 60%<br /><strong><a href="http://weather.jp.msn.com/local.aspx?wealocations=wc:JAXX0085&q=%e6%9d%b1%e4%ba%ac%e9%83%bd+%e6%9d%b1%e4%ba%ac&src=rss">火曜日</a>: </strong>曇時々晴.<img src="http://kaw.stc.s-msn.com/as/wea3/i/ja/saw/51.gif" width="35" height="21" alt="曇時々晴" title="曇時々晴" /> 最低: 22°C. 最高: 27°C. 降水確率: 30%<br /><strong><a href="http://weather.jp.msn.com/local.aspx?wealocations=wc:JAXX0085&q=%e6%9d%b1%e4%ba%ac%e9%83%bd+%e6%9d%b1%e4%ba%ac&src=rss">水曜日</a>: </strong>曇時々雨.<img src="http://kaw.stc.s-msn.com/as/wea3/i/ja/saw/52.gif" width="35" height="21" alt="曇時々雨" title="曇時々雨" /> 最低: 20°C. 最高: 25°C. 降水確率: 50%<br /><strong><a href="http://weather.jp.msn.com/local.aspx?wealocations=wc:JAXX0085&q=%e6%9d%b1%e4%ba%ac%e9%83%bd+%e6%9d%b1%e4%ba%ac&src=rss">木曜日</a>: </strong>曇り.<img src="http://kaw.stc.s-msn.com/as/wea3/i/ja/saw/26.gif" width="35" height="21" alt="曇り" title="曇り" /> 最低: 20°C. 最高: 28°C. 降水確率: 40%<br /></p><p><a href="http://weather.jp.msn.com/local.aspx?wealocations=wc:JAXX0085&q=%e6%9d%b1%e4%ba%ac%e9%83%bd+%e6%9d%b1%e4%ba%ac&src=rss">MSN 天気予報でもっと情報を見る</a><br />(Foreca 提供データ (米国およびカナダ以外), WDT 提供データ (米国およびカナダ向け))</p>]]></description></item></channel></rss>
|
data/spec/spec_helper.rb
CHANGED
@@ -5,3 +5,13 @@ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
|
|
5
5
|
require 'rubygems'
|
6
6
|
require 'nokogiri'
|
7
7
|
require 'weather_jp'
|
8
|
+
|
9
|
+
def fixture_path
|
10
|
+
File.expand_path('../fixture/', __FILE__)
|
11
|
+
end
|
12
|
+
|
13
|
+
def rss_one
|
14
|
+
file = open(fixture_path + '/RSS.rss')
|
15
|
+
yield file.read
|
16
|
+
file.close
|
17
|
+
end
|
data/spec/weather_spec.rb
CHANGED
@@ -3,149 +3,183 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe "Weather" do
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
describe "#initialize" do
|
11
|
-
it "should have @area_code and can access" do
|
12
|
-
@weather.area_code.should == "JAXX0085"
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should have @city_name and can access" do
|
16
|
-
@weather.city_name.should == "東京都 東京"
|
6
|
+
describe "with Internet connetion" do
|
7
|
+
before(:all) do
|
8
|
+
@weather = WeatherJp::Weather.new(:tokyo)
|
17
9
|
end
|
18
10
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
11
|
+
describe "#initialize" do
|
12
|
+
it "should have @area_code and can access" do
|
13
|
+
@weather.area_code.should == "JAXX0085"
|
14
|
+
end
|
23
15
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
16
|
+
it "should have @city_name and can access" do
|
17
|
+
@weather.city_name.should == "東京都 東京"
|
18
|
+
end
|
28
19
|
|
29
|
-
|
30
|
-
|
31
|
-
|
20
|
+
it "should accept String argument" do
|
21
|
+
weather = WeatherJp::Weather.new "東京都府中市"
|
22
|
+
weather.city_name.should == "東京都 府中市"
|
23
|
+
end
|
32
24
|
|
33
|
-
|
34
|
-
|
35
|
-
|
25
|
+
it "should accept Symbol argument" do
|
26
|
+
weather = WeatherJp::Weather.new :tokyo
|
27
|
+
weather.city_name.should == "東京都 東京"
|
36
28
|
end
|
37
|
-
end
|
38
29
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
end
|
30
|
+
it "should have @day_weathers as Array" do
|
31
|
+
@weather.day_weathers.class.should == Array
|
32
|
+
end
|
43
33
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
34
|
+
it "should have DayWeather instance in @day_weathers" do
|
35
|
+
@weather.day_weathers.each do |w|
|
36
|
+
w.class.should == WeatherJp::Weather::DayWeather
|
37
|
+
end
|
38
|
+
end
|
48
39
|
|
49
|
-
|
50
|
-
|
40
|
+
it "should have 5 DayWeather instance in @day_weathers" do
|
41
|
+
@weather.day_weathers.size.should == 5
|
42
|
+
end
|
51
43
|
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe "#get_weather_data" do
|
55
|
-
it "should vaild unprocessing weather data"
|
56
|
-
|
57
|
-
it "should raise StandardError when server connection is lost"
|
58
|
-
end
|
59
44
|
|
60
|
-
|
61
|
-
|
62
|
-
|
45
|
+
describe "#get_area_code" do
|
46
|
+
it "should get vaild area code" do
|
47
|
+
@weather.area_code.should == "JAXX0085"
|
48
|
+
end
|
63
49
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
@weather.to_hash.each {|e| e.class.should == Hash }
|
50
|
+
it "should raise error when invaild city name taken" do
|
51
|
+
WeatherJp::Weather.new(:aaa).city_name.should == "アメリカ合衆国 マイアミ"
|
52
|
+
end
|
68
53
|
end
|
69
54
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
e.should
|
74
|
-
e.should have_key(:max_temp)
|
75
|
-
e.should have_key(:rain)
|
55
|
+
describe "#to_hash" do
|
56
|
+
it "should return Array and include Hashs" do
|
57
|
+
@weather.to_hash.class.should == Array
|
58
|
+
@weather.to_hash.each {|e| e.class.should == Hash }
|
76
59
|
end
|
77
|
-
end
|
78
|
-
end
|
79
60
|
|
80
|
-
|
81
|
-
|
82
|
-
|
61
|
+
it "should return with vaild structure" do
|
62
|
+
@weather.to_hash.each do |e|
|
63
|
+
e.should have_key(:day)
|
64
|
+
e.should have_key(:forecast)
|
65
|
+
e.should have_key(:max_temp)
|
66
|
+
e.should have_key(:rain)
|
67
|
+
end
|
68
|
+
end
|
83
69
|
end
|
84
|
-
end
|
85
70
|
|
86
|
-
|
87
|
-
|
88
|
-
|
71
|
+
describe "#to_a" do
|
72
|
+
it "should return and behavior same as #to_hash" do
|
73
|
+
@weather.to_a.should equal(@weather.to_hash)
|
74
|
+
end
|
89
75
|
end
|
90
|
-
end
|
91
76
|
|
92
|
-
|
93
|
-
|
94
|
-
|
77
|
+
describe "#each" do
|
78
|
+
it "should yield DayWeather object" do
|
79
|
+
@weather.each {|w| w.class.should == WeatherJp::Weather::DayWeather }
|
80
|
+
end
|
95
81
|
end
|
96
82
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
83
|
+
describe "Enumerable mehods" do
|
84
|
+
it "should respond to Enumerable methods" do
|
85
|
+
@weather.should respond_to(:map)
|
86
|
+
end
|
101
87
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
should_not raise_error(ArgumentError)
|
106
|
-
->(){ @weather.get_weather(:tomorrow) }.
|
107
|
-
should_not raise_error(ArgumentError)
|
88
|
+
it "should yield DayWeather Object" do
|
89
|
+
@weather.map {|w| w.class.should == WeatherJp::Weather::DayWeather }
|
90
|
+
end
|
108
91
|
end
|
109
92
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
93
|
+
describe "#get_weather" do
|
94
|
+
it "should accept Symbol argument" do
|
95
|
+
->(){ @weather.get_weather(:today) }.
|
96
|
+
should_not raise_error(ArgumentError)
|
97
|
+
->(){ @weather.get_weather(:tomorrow) }.
|
98
|
+
should_not raise_error(ArgumentError)
|
99
|
+
end
|
116
100
|
|
117
|
-
|
118
|
-
|
119
|
-
|
101
|
+
it "should accept String argument" do
|
102
|
+
->(){ @weather.get_weather('today') }.
|
103
|
+
should_not raise_error(ArgumentError)
|
104
|
+
->(){ @weather.get_weather('tomorrow') }.
|
120
105
|
should_not raise_error(ArgumentError)
|
121
106
|
end
|
122
|
-
end
|
123
107
|
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
108
|
+
it "should accept 0 to 4 number as argument" do
|
109
|
+
(0..4).each do |n|
|
110
|
+
->(){ @weather.get_weather(n) }.
|
111
|
+
should_not raise_error(ArgumentError)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
it "should raise ArgumentError when got invaild aregument" do
|
116
|
+
->(){ @weather.get_weather(:yesterday) }.
|
117
|
+
should raise_error(ArgumentError)
|
118
|
+
->(){ @weather.get_weather(5) }.
|
119
|
+
should raise_error(ArgumentError)
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should return DayWeather object" do
|
123
|
+
@weather.get_weather(0).class.
|
124
|
+
should == WeatherJp::Weather::DayWeather
|
125
|
+
end
|
129
126
|
end
|
130
127
|
|
131
|
-
|
132
|
-
|
133
|
-
|
128
|
+
describe "#today, #tomorrow, #day_after_tomorrow" do
|
129
|
+
it "should not error when call #today or something" do
|
130
|
+
%w(today tomorrow day_after_tomorrow).each do |s|
|
131
|
+
->(){ @weather.send(s.to_sym) }.
|
132
|
+
should_not raise_error(NoMethodError)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
it "should return DayWeather object" do
|
137
|
+
%w(today tomorrow day_after_tomorrow).each do |s|
|
138
|
+
@weather.send(s.to_sym).class.
|
139
|
+
should == WeatherJp::Weather::DayWeather
|
140
|
+
end
|
141
|
+
end
|
134
142
|
end
|
135
143
|
end
|
136
|
-
|
137
|
-
describe "
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
144
|
+
|
145
|
+
describe "with fixtures" do
|
146
|
+
before(:all) do
|
147
|
+
dummy = ''
|
148
|
+
rss_one {|rss| dummy = RSS::Parser.parse rss }
|
149
|
+
WeatherJp::Weather.class_exec dummy do |dummy|
|
150
|
+
define_method(:get_area_code) {|city_name| ["JAXX0085", 'tokyo'] }
|
151
|
+
define_method(:get_rss) { dummy }
|
152
|
+
end
|
153
|
+
@weather = WeatherJp::Weather.new(:tokyo)
|
154
|
+
end
|
155
|
+
|
156
|
+
describe "#set_weathers" do
|
157
|
+
it "should have vaild data" do
|
158
|
+
expect = [{:day=>"今日", :forecast=>"晴のち雨", :max_temp=>"29", :min_temp=>"24", :rain=>"80"},
|
159
|
+
{:day=>"明日", :forecast=>"雨のち晴", :max_temp=>"30", :min_temp=>"22", :rain=>"60"},
|
160
|
+
{:day=>"火曜日", :forecast=>"曇時々晴", :max_temp=>"27", :min_temp=>"22", :rain=>"30"},
|
161
|
+
{:day=>"水曜日", :forecast=>"曇時々雨", :max_temp=>"25", :min_temp=>"20", :rain=>"50"},
|
162
|
+
{:day=>"木曜日", :forecast=>"曇り", :max_temp=>"28", :min_temp=>"20", :rain=>"40"}
|
163
|
+
]
|
164
|
+
@weather.to_hash.should == expect
|
142
165
|
end
|
143
166
|
end
|
144
167
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
168
|
+
describe "#get_weather_data" do
|
169
|
+
describe "#parse_rss" do
|
170
|
+
it "should parse rss data" do
|
171
|
+
expect = ["今日: 晴のち雨. 最低: 24°C. 最高: 29°C. 降水確率: 80", "明日: 雨のち晴. 最低: 22°C. 最高: 30°C. 降水確率: 60", "火曜日: 曇時々晴. 最低: 22°C. 最高: 27°C. 降水確率: 30", "水曜日: 曇時々雨. 最低: 20°C. 最高: 25°C. 降水確率: 50", "木曜日: 曇り. 最低: 20°C. 最高: 28°C. 降水確率: 40"]
|
172
|
+
rss_one do |rss|
|
173
|
+
@weather.send(:parse_rss, RSS::Parser.parse(rss)).should == expect
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
describe "#remove_html_tag" do
|
179
|
+
it "should remove html tags" do
|
180
|
+
data = %q(<html>a<a href="dummy">b</a><span>c</sapan></html>)
|
181
|
+
@weather.send(:remove_html_tag, data).should == %(""a""b""""c"""")
|
182
|
+
end
|
149
183
|
end
|
150
184
|
end
|
151
185
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: weather_jp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-09-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
@@ -86,12 +86,14 @@ files:
|
|
86
86
|
- .travis.yml
|
87
87
|
- Gemfile
|
88
88
|
- LICENSE
|
89
|
+
- README.jp.md
|
89
90
|
- README.md
|
90
91
|
- Rakefile
|
91
92
|
- lib/weather_jp.rb
|
92
93
|
- lib/weather_jp/day_weather.rb
|
93
94
|
- lib/weather_jp/version.rb
|
94
95
|
- spec/day_weather_spec.rb
|
96
|
+
- spec/fixture/RSS.rss
|
95
97
|
- spec/spec_helper.rb
|
96
98
|
- spec/weather_jp_spec.rb
|
97
99
|
- spec/weather_spec.rb
|
@@ -110,7 +112,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
110
112
|
version: '0'
|
111
113
|
segments:
|
112
114
|
- 0
|
113
|
-
hash:
|
115
|
+
hash: 113366814983018964
|
114
116
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
117
|
none: false
|
116
118
|
requirements:
|
@@ -119,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
121
|
version: '0'
|
120
122
|
segments:
|
121
123
|
- 0
|
122
|
-
hash:
|
124
|
+
hash: 113366814983018964
|
123
125
|
requirements: []
|
124
126
|
rubyforge_project:
|
125
127
|
rubygems_version: 1.8.23
|
@@ -128,6 +130,7 @@ specification_version: 3
|
|
128
130
|
summary: Japan weather info API wrapper.
|
129
131
|
test_files:
|
130
132
|
- spec/day_weather_spec.rb
|
133
|
+
- spec/fixture/RSS.rss
|
131
134
|
- spec/spec_helper.rb
|
132
135
|
- spec/weather_jp_spec.rb
|
133
136
|
- spec/weather_spec.rb
|