weather_jp 1.0.0 → 1.0.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.
@@ -2,3 +2,6 @@ language: ruby
2
2
  rvm:
3
3
  - 1.9.2
4
4
  - 1.9.3
5
+ notifications:
6
+ email: false
7
+
@@ -0,0 +1,7 @@
1
+ v 1.0.0
2
+
3
+ Add parse method to WeatherJp
4
+
5
+ see READEME for more description
6
+
7
+ ----
@@ -37,6 +37,10 @@ tsuyama = WeatherJp.get "津山"
37
37
  tokyo.today.to_s
38
38
  #=> これは "東京都 東京の天気は曇りのち晴れ、最高気温34度...etc" になります
39
39
 
40
+ # もしくは解析したい文字列があるなら
41
+ WeatherJp.parse("今日のうどん県の天気教えて下され〜〜").to_s
42
+ #=> "香川県 高松の今日の天気は曇のち晴れ 最高気温25度 最低気温17度 降水確率は20% です。"
43
+
40
44
  # Weather オブジェクトを取得するいくつかの方法
41
45
  akiba.get_weather(4) #=> <#DayWeather object>
42
46
  tokyo.today.forecast #=> can be "晴れ"
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![Build Status](https://secure.travis-ci.org/Taiki45/weather_jp.png?branch=master)](http://travis-ci.org/Taiki45/weather_jp)
1
+ [![Build Status](https://secure.travis-ci.org/taiki45/weather_jp.png)](http://travis-ci.org/taiki45/weather_jp)
2
2
 
3
3
  ## About
4
4
 
@@ -37,6 +37,10 @@ tsuyama = WeatherJp.get "津山"
37
37
  tokyo.today.to_s
38
38
  #=> can be "東京都 東京の天気は曇りのち晴れ、最高気温34度...etc"
39
39
 
40
+ # or your have unparsed string
41
+ WeatherJp.parse("今日のうどん県の天気教えて下され〜〜").to_s
42
+ #=> "香川県 高松の今日の天気は曇のち晴れ 最高気温25度 最低気温17度 降水確率は20% です。"
43
+
40
44
  # to get weather info in differrnt ways
41
45
  akiba.get_weather(4) #=> <#DayWeather object>
42
46
  tokyo.today.forecast #=> can be "晴れ"
@@ -7,7 +7,6 @@ require 'rss'
7
7
  require 'nokogiri'
8
8
 
9
9
  module WeatherJp
10
-
11
10
  class << self
12
11
  def get(city_name, option = nil)
13
12
  if option
@@ -31,26 +30,28 @@ module WeatherJp
31
30
 
32
31
  def parser(str)
33
32
  if str =~ /((?<city>.*)の
34
- (?<day>今日|きょう|明日|あした|明後日|あさって|3日後|4日後|3日後|4日後)の(天気|てんき).*) |
35
- ((?<day>今日|きょう|明日|あした|明後日|あさって|3日後|4日後|3日後|4日後)
36
- (?<city>.*)の(天気|てんき))/ux then
37
- data = Regexp.last_match
38
- day = data[:day]
39
- case day
40
- when /今日|きょう/u
41
- day = 'today'
42
- when /明日|あした/u
43
- day = 'tomorrow'
44
- when /明後日|あさって/u
45
- day = 'day_after_tomorrow'
46
- when /3日後|3日後/u
47
- day = 3
48
- when /4日後|4日後/u
49
- day = 4
50
- else
51
- raise "No matched"
52
- end
53
- {day: day, city: data[:city]}
33
+ (?<day>今日|きょう|明日|あした|明後日|あさって|3日後|4日後|3日後|4日後)
34
+ (天気|てんき).*) |
35
+ ((?<day>今日|きょう|明日|あした|明後日|あさって|3日後|4日後|3日後|4日後)の
36
+ (?<city>.*)の(天気|てんき))
37
+ /ux
38
+ data = Regexp.last_match
39
+ day = data[:day]
40
+ case day
41
+ when /今日|きょう/u
42
+ day = 'today'
43
+ when /明日|あした/u
44
+ day = 'tomorrow'
45
+ when /明後日|あさって/u
46
+ day = 'day_after_tomorrow'
47
+ when /3日後|3日後/u
48
+ day = 3
49
+ when /4日後|4日後/u
50
+ day = 4
51
+ else
52
+ raise "No matched"
53
+ end
54
+ {day: day, city: data[:city]}
54
55
  else
55
56
  nil
56
57
  end
@@ -61,9 +62,7 @@ module WeatherJp
61
62
  include Enumerable
62
63
 
63
64
  def initialize(city_name)
64
- city_name = city_name.to_s if city_name.class == Symbol
65
- @area_code, @city_name = get_area_code(city_name)
66
- @weathers = set_weathers
65
+ @area_code, @city_name, @weathers = Wrapper.get(city_name)
67
66
  @day_weathers = Array.new(@weathers.size) do |n|
68
67
  DayWeather.new(@weathers,@city_name, n)
69
68
  end
@@ -71,7 +70,6 @@ module WeatherJp
71
70
 
72
71
  attr_reader :city_name, :area_code, :day_weathers
73
72
 
74
- public
75
73
  def to_hash
76
74
  @weathers
77
75
  end
@@ -109,35 +107,36 @@ module WeatherJp
109
107
  get_weather(s)
110
108
  end
111
109
  end
110
+ end
112
111
 
113
- private
114
- def set_weathers
115
- begin
116
- weathers = Array.new
117
- get_weather_data.each do |i|
118
- h = Hash.new
119
- h[:day] = i.slice(/(.*?):\s+(.*?)\./, 1)
120
- h[:forecast] = i.slice(/(.*?):\s+(.*?)\./, 2)
121
- h[:max_temp] = i.slice(/(最高).*?(\d+)/u, 2)
122
- h[:min_temp] = i.slice(/(最低).*?(\d+)/u, 2)
123
- h[:rain] = i.slice(/(降水確率).*?(\d+)/u, 2)
124
- weathers << h
112
+ module Wrapper
113
+ class << self
114
+ def get(city_name)
115
+ area_code, city_name = get_area_code(city_name.to_s)
116
+ weathers = set_weathers(parse_rss(get_rss(area_code)))
117
+ [area_code, city_name, weathers]
118
+ end
119
+
120
+ def get_area_code(city_name)
121
+ get_xml city_name do |xml|
122
+ parse_xml xml
125
123
  end
126
- weathers
127
- rescue
128
- raise StandardError,
129
- "the MSN weather sever may be downed, or something wrong"
130
124
  end
131
- end
132
125
 
133
- def get_area_code(city_name)
134
- uri = URI.encode(
135
- "http://weather.service.msn.com/" + \
136
- "find.aspx?outputview=search&weadegreetype=C&culture=ja-JP&" + \
137
- "weasearchstr=#{city_name}")
138
- doc = Nokogiri::XML(open(uri))
126
+ def get_xml(city_name)
127
+ result = []
128
+ open(URI.encode("http://weather.service.msn.com/" +
129
+ "find.aspx?outputview=search&weadegreetype=C&culture=ja-JP&" +
130
+ "weasearchstr=#{city_name}")) do |xml|
131
+ result = yield xml
132
+ end
133
+ result
134
+ end
135
+
136
+ def parse_xml(xml)
137
+ doc = Nokogiri::XML(xml)
139
138
  begin
140
- code =
139
+ code =
141
140
  doc.xpath('//weather').attr('weatherlocationcode').value
142
141
  full_name =
143
142
  doc.xpath('//weather').attr('weatherlocationname').value
@@ -146,36 +145,51 @@ module WeatherJp
146
145
  "invaild city name '#{city_name}'!"
147
146
  end
148
147
  [code.slice(3..-1), full_name]
149
- end
150
-
151
-
152
- def get_weather_data
153
- parse_rss(get_rss)
154
- end
148
+ end
155
149
 
156
- def get_rss
157
- begin
158
- uri = URI.parse(
159
- "http://weather.jp.msn.com/" + \
160
- "RSS.aspx?wealocations=wc:#{@area_code}&" + \
161
- "weadegreetype=C&culture=ja-JP")
150
+ def get_rss(area_code)
151
+ begin
152
+ uri = URI.parse(
153
+ "http://weather.jp.msn.com/" +
154
+ "RSS.aspx?wealocations=wc:#{area_code}&" +
155
+ "weadegreetype=C&culture=ja-JP"
156
+ )
162
157
  RSS::Parser.parse(uri, false)
163
- rescue
164
- raise StandardError,
165
- "the MSN weather sever may be downed, or got invaild city code"
158
+ rescue
159
+ raise StandardError,
160
+ "the MSN weather sever may be downed, or got invaild city code"
161
+ end
166
162
  end
167
- end
168
163
 
169
- def parse_rss(rss)
170
- str = rss.channel.item(0).description
171
- data = remove_html_tag(str).split(/%/)
172
- data.pop
173
- data.map {|i| i.delete!('"') }
174
- end
164
+ def parse_rss(rss)
165
+ str = rss.channel.item(0).description
166
+ data = remove_html_tag(str).split(/%/)
167
+ data.pop
168
+ data.map {|i| i.delete!('"') }
169
+ end
170
+
171
+ def remove_html_tag(str)
172
+ str.gsub(/<(\"[^\"]*\"|'[^']*'|[^'\">])*>/,'""')
173
+ end
175
174
 
176
- def remove_html_tag(string)
177
- string.gsub!(/<(\"[^\"]*\"|'[^']*'|[^'\">])*>/,'""')
175
+ def set_weathers(raw_data)
176
+ weathers = Array.new
177
+ begin
178
+ raw_data.each do |i|
179
+ h = Hash.new
180
+ h[:day] = i.slice(/(.*?):\s+(.*?)\./, 1)
181
+ h[:forecast] = i.slice(/(.*?):\s+(.*?)\./, 2)
182
+ h[:max_temp] = i.slice(/(最高).*?(\d+)/u, 2)
183
+ h[:min_temp] = i.slice(/(最低).*?(\d+)/u, 2)
184
+ h[:rain] = i.slice(/(降水確率).*?(\d+)/u, 2)
185
+ weathers << h
186
+ end
187
+ weathers
188
+ rescue
189
+ raise StandardError,
190
+ "the MSN weather sever may be downed, or something wrong"
191
+ end
192
+ end
178
193
  end
179
194
  end
180
195
  end
181
-
@@ -1,3 +1,3 @@
1
1
  module WeatherJp
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
@@ -2,14 +2,13 @@
2
2
  require 'spec_helper'
3
3
 
4
4
  describe "DayWeather" do
5
- before(:all) do
6
- @tokyo = WeatherJp::Weather.new(:tokyo)
7
- @weather = @tokyo.get_weather(:today)
5
+ before :all do
6
+ @weather = WeatherJp.get(:tokyo, :today)
8
7
  end
9
8
 
10
9
  describe "#initialize" do
11
10
  it "should have @city_name" do
12
- @weather.city_name.should == "東京都 東京"
11
+ @weather.city_name.should == "tokyo"
13
12
  end
14
13
 
15
14
  it "should have @weather as Hash" do
@@ -22,15 +21,9 @@ describe "DayWeather" do
22
21
  it "should return String" do
23
22
  @weather.inspect.class.should == String
24
23
  end
25
- end
26
24
 
27
- describe "#to_s" do
28
- it "should return String" do
29
- @weather.to_s.class.should == String
30
- end
31
-
32
- it "should be certain string format" do
33
- @weather.to_s.should =~ /東京都\s東京の今日の天気は.*\sです。/u
25
+ it "should have certain format" do
26
+ @weather.inspect.should == "#<DayWeather:@city_name = tokyo, @day=今日, @forecast=晴のち雨, @max_temp=29, @min_temp=24, @rain=80>"
34
27
  end
35
28
  end
36
29
 
@@ -73,3 +66,4 @@ describe "DayWeather" do
73
66
  end
74
67
  end
75
68
  end
69
+
@@ -6,12 +6,27 @@ require 'rubygems'
6
6
  require 'nokogiri'
7
7
  require 'weather_jp'
8
8
 
9
+ module WeatherJp::Wrapper
10
+ class << self
11
+ def get_area_code(city_name)
12
+ ["JAXX0085", 'tokyo']
13
+ end
14
+
15
+ def get_rss(area_code)
16
+ get_dummy_rss
17
+ end
18
+ end
19
+ end
20
+
9
21
  def fixture_path
10
22
  File.expand_path('../fixture/', __FILE__)
11
23
  end
12
24
 
13
- def rss_one
14
- file = open(fixture_path + '/RSS.rss')
15
- yield file.read
16
- file.close
25
+ def get_dummy_rss
26
+ rss = ''
27
+ open(fixture_path + '/RSS.rss') do |file|
28
+ rss = RSS::Parser.parse(file.read)
29
+ end
30
+ rss
17
31
  end
32
+
@@ -2,7 +2,7 @@
2
2
  require 'spec_helper'
3
3
 
4
4
  describe "WeatherJp" do
5
- before(:all) do
5
+ before :all do
6
6
  @weather = WeatherJp.get :tokyo
7
7
  end
8
8
 
@@ -24,28 +24,22 @@ describe "WeatherJp" do
24
24
  end
25
25
  end
26
26
 
27
- describe ".parse" do
28
- WeatherJp.parse("今日の東京の天気教えて").to_s.should =~ /東京都\s東京の今日の天気は.*です。/u
29
- end
30
-
31
- describe ".parser" do
32
- {"東京の今日の天気" => {day: "today", city: "東京"},
33
- "今日の東京の天気" => {day: "today", city: "東京"},
34
- "東京の明日の天気" => {day: "tomorrow", city: "東京"},
35
- "東京の明後日の天気" => {day: "day_after_tomorrow", city: "東京"},
36
- "東京の3日後の天気" => {day: 3, city: "東京"},
37
- "東京の3日後の天気" => {day: 3, city: "東京"},
38
- "東京の4日後の天気" => {day: 4, city: "東京"},
39
- "東京の4日後の天気" => {day: 4, city: "東京"},
40
- "東京の今日の天気教えて〜" => {day: "today", city: "東京"},
41
- #"ねえ、東京の今日の天気教えなさいよ" => {day: "today", city: "東京"},
42
- #"ε( ε^o^)э東京の今日の天気教えてほしいでし…!" => {day: "today", city: "東京"},
43
- "あきるの市の今日の天気" => {day: "today", city: "あきるの市"},
44
- "あきるの市の今日の天気教えなさい" => {day: "today", city: "あきるの市"},
45
- "今日のあきるの市の天気" => {day: "today", city: "あきるの市"}
46
- }.each do |test, expect|
47
- WeatherJp.parser(test).should == expect
48
- end
27
+ describe ".parser" do
28
+ {"東京の今日の天気" => {day: "today", city: "東京"},
29
+ "今日の東京の天気" => {day: "today", city: "東京"},
30
+ "東京の明日の天気" => {day: "tomorrow", city: "東京"},
31
+ "東京の明後日の天気" => {day: "day_after_tomorrow", city: "東京"},
32
+ "東京の3日後の天気" => {day: 3, city: "東京"},
33
+ "東京の3日後の天気" => {day: 3, city: "東京"},
34
+ "東京の4日後の天気" => {day: 4, city: "東京"},
35
+ "東京の4日後の天気" => {day: 4, city: "東京"},
36
+ "東京の今日の天気教えて〜" => {day: "today", city: "東京"},
37
+ "あきるの市の今日の天気" => {day: "today", city: "あきるの市"},
38
+ "あきるの市の今日の天気教えなさい" => {day: "today", city: "あきるの市"},
39
+ "今日のあきるの市の天気" => {day: "today", city: "あきるの市"}
40
+ }.each do |test, expect|
41
+ WeatherJp.parser(test).should == expect
49
42
  end
43
+ end
50
44
  end
51
45
 
@@ -13,18 +13,9 @@ describe "Weather" do
13
13
  @weather.area_code.should == "JAXX0085"
14
14
  end
15
15
 
16
- it "should have @city_name and can access" do
17
- @weather.city_name.should == "東京都 東京"
18
- end
19
-
20
- it "should accept String argument" do
21
- weather = WeatherJp::Weather.new "東京都府中市"
22
- weather.city_name.should == "東京都 府中市"
23
- end
24
-
25
16
  it "should accept Symbol argument" do
26
17
  weather = WeatherJp::Weather.new :tokyo
27
- weather.city_name.should == "東京都 東京"
18
+ weather.city_name.should == "tokyo"
28
19
  end
29
20
 
30
21
  it "should have @day_weathers as Array" do
@@ -42,16 +33,6 @@ describe "Weather" do
42
33
  end
43
34
  end
44
35
 
45
- describe "#get_area_code" do
46
- it "should get vaild area code" do
47
- @weather.area_code.should == "JAXX0085"
48
- end
49
-
50
- it "should raise error when invaild city name taken" do
51
- WeatherJp::Weather.new(:aaa).city_name.should == "アメリカ合衆国 マイアミ"
52
- end
53
- end
54
-
55
36
  describe "#to_hash" do
56
37
  it "should return Array and include Hashs" do
57
38
  @weather.to_hash.class.should == Array
@@ -141,55 +122,4 @@ describe "Weather" do
141
122
  end
142
123
  end
143
124
  end
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
- alias :back_code :get_area_code
151
- alias :back_rss :get_rss
152
- define_method(:get_area_code) {|city_name| ["JAXX0085", 'tokyo'] }
153
- define_method(:get_rss) { dummy }
154
- end
155
- @weather = WeatherJp::Weather.new(:tokyo)
156
- end
157
-
158
- describe "#set_weathers" do
159
- it "should have vaild data" do
160
- expect = [{:day=>"今日", :forecast=>"晴のち雨", :max_temp=>"29", :min_temp=>"24", :rain=>"80"},
161
- {:day=>"明日", :forecast=>"雨のち晴", :max_temp=>"30", :min_temp=>"22", :rain=>"60"},
162
- {:day=>"火曜日", :forecast=>"曇時々晴", :max_temp=>"27", :min_temp=>"22", :rain=>"30"},
163
- {:day=>"水曜日", :forecast=>"曇時々雨", :max_temp=>"25", :min_temp=>"20", :rain=>"50"},
164
- {:day=>"木曜日", :forecast=>"曇り", :max_temp=>"28", :min_temp=>"20", :rain=>"40"}
165
- ]
166
- @weather.to_hash.should == expect
167
- end
168
- end
169
-
170
- describe "#get_weather_data" do
171
- describe "#parse_rss" do
172
- it "should parse rss data" do
173
- expect = ["今日: 晴のち雨. 最低: 24&#176;C. 最高: 29&#176;C. 降水確率: 80", "明日: 雨のち晴. 最低: 22&#176;C. 最高: 30&#176;C. 降水確率: 60", "火曜日: 曇時々晴. 最低: 22&#176;C. 最高: 27&#176;C. 降水確率: 30", "水曜日: 曇時々雨. 最低: 20&#176;C. 最高: 25&#176;C. 降水確率: 50", "木曜日: 曇り. 最低: 20&#176;C. 最高: 28&#176;C. 降水確率: 40"]
174
- rss_one do |rss|
175
- @weather.send(:parse_rss, RSS::Parser.parse(rss)).should == expect
176
- end
177
- end
178
- end
179
-
180
- describe "#remove_html_tag" do
181
- it "should remove html tags" do
182
- data = %q(<html>a<a href="dummy">b</a><span>c</sapan></html>)
183
- @weather.send(:remove_html_tag, data).should == %(""a""b""""c"""")
184
- end
185
- end
186
- end
187
-
188
- after :all do
189
- WeatherJp::Weather.class_exec do
190
- alias :get_area_code :back_code
191
- alias :get_rss :back_rss
192
- end
193
- end
194
- end
195
125
  end
@@ -0,0 +1,32 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe "Wrapper" do
5
+ describe ".set_weathers" do
6
+ it "should make vaild data" do
7
+ expect = [{:day=>"今日", :forecast=>"晴のち雨", :max_temp=>"29", :min_temp=>"24", :rain=>"80"},
8
+ {:day=>"明日", :forecast=>"雨のち晴", :max_temp=>"30", :min_temp=>"22", :rain=>"60"},
9
+ {:day=>"火曜日", :forecast=>"曇時々晴", :max_temp=>"27", :min_temp=>"22", :rain=>"30"},
10
+ {:day=>"水曜日", :forecast=>"曇時々雨", :max_temp=>"25", :min_temp=>"20", :rain=>"50"},
11
+ {:day=>"木曜日", :forecast=>"曇り", :max_temp=>"28", :min_temp=>"20", :rain=>"40"}
12
+ ]
13
+ dummy_data = ["今日: 晴のち雨. 最低: 24&#176;C. 最高: 29&#176;C. 降水確率: 80", "明日: 雨のち晴. 最低: 22&#176;C. 最高: 30&#176;C. 降水確率: 60", "火曜日: 曇時々晴. 最低: 22&#176;C. 最高: 27&#176;C. 降水確率: 30", "水曜日: 曇時々雨. 最低: 20&#176;C. 最高: 25&#176;C. 降水確率: 50", "木曜日: 曇り. 最低: 20&#176;C. 最高: 28&#176;C. 降水確率: 40"]
14
+ WeatherJp::Wrapper.set_weathers(dummy_data) == expect
15
+ end
16
+ end
17
+
18
+ describe ".parse_rss" do
19
+ it "should parse rss data" do
20
+ expect = ["今日: 晴のち雨. 最低: 24&#176;C. 最高: 29&#176;C. 降水確率: 80", "明日: 雨のち晴. 最低: 22&#176;C. 最高: 30&#176;C. 降水確率: 60", "火曜日: 曇時々晴. 最低: 22&#176;C. 最高: 27&#176;C. 降水確率: 30", "水曜日: 曇時々雨. 最低: 20&#176;C. 最高: 25&#176;C. 降水確率: 50", "木曜日: 曇り. 最低: 20&#176;C. 最高: 28&#176;C. 降水確率: 40"]
21
+ WeatherJp::Wrapper.parse_rss(get_dummy_rss).should == expect
22
+ end
23
+
24
+ describe ".remove_html_tag" do
25
+ it "should remove html tags" do
26
+ str = %q(<html>a<a href="dummy">b</a><span>c</sapan></html>)
27
+ WeatherJp::Wrapper.remove_html_tag(str).should == %(""a""b""""c"""")
28
+ end
29
+ end
30
+ end
31
+ end
32
+
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: 1.0.0
4
+ version: 1.0.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-10-01 00:00:00.000000000 Z
12
+ date: 2012-10-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -85,6 +85,7 @@ files:
85
85
  - .gitignore
86
86
  - .travis.yml
87
87
  - Gemfile
88
+ - HISTORY.md
88
89
  - LICENSE
89
90
  - README.jp.md
90
91
  - README.md
@@ -97,6 +98,7 @@ files:
97
98
  - spec/spec_helper.rb
98
99
  - spec/weather_jp_spec.rb
99
100
  - spec/weather_spec.rb
101
+ - spec/wrapper_spec.rb
100
102
  - weather_jp.gemspec
101
103
  homepage: http://taiki45.github.com/weather_jp
102
104
  licenses: []
@@ -112,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
112
114
  version: '0'
113
115
  segments:
114
116
  - 0
115
- hash: 1993595247945938449
117
+ hash: 2403131100939033497
116
118
  required_rubygems_version: !ruby/object:Gem::Requirement
117
119
  none: false
118
120
  requirements:
@@ -121,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
123
  version: '0'
122
124
  segments:
123
125
  - 0
124
- hash: 1993595247945938449
126
+ hash: 2403131100939033497
125
127
  requirements: []
126
128
  rubyforge_project:
127
129
  rubygems_version: 1.8.23
@@ -134,3 +136,4 @@ test_files:
134
136
  - spec/spec_helper.rb
135
137
  - spec/weather_jp_spec.rb
136
138
  - spec/weather_spec.rb
139
+ - spec/wrapper_spec.rb