weather_jp 1.0.2 → 1.0.3
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/lib/weather_jp/version.rb +1 -1
- data/lib/weather_jp.rb +12 -11
- data/spec/weather_jp_spec.rb +21 -14
- data/spec/weather_spec.rb +8 -8
- metadata +3 -3
    
        data/lib/weather_jp/version.rb
    CHANGED
    
    
    
        data/lib/weather_jp.rb
    CHANGED
    
    | @@ -7,6 +7,8 @@ require 'rss' | |
| 7 7 | 
             
            require 'nokogiri'
         | 
| 8 8 |  | 
| 9 9 | 
             
            module WeatherJp
         | 
| 10 | 
            +
              class WeatherJpError < StandardError; end
         | 
| 11 | 
            +
             | 
| 10 12 | 
             
              class << self
         | 
| 11 13 | 
             
                def get(city_name, option = nil)
         | 
| 12 14 | 
             
                  if option
         | 
| @@ -30,15 +32,15 @@ module WeatherJp | |
| 30 32 |  | 
| 31 33 | 
             
                def parser(str)
         | 
| 32 34 | 
             
                  if str =~ /((?<city>.*)の
         | 
| 33 | 
            -
                      (?<day | 
| 35 | 
            +
                      (?<day>今日|きょう|今|いま|明日|あした|明後日|あさって|3日後|4日後|3日後|4日後)
         | 
| 34 36 | 
             
                      の(天気|てんき).*) |
         | 
| 35 | 
            -
                      ((?<day | 
| 37 | 
            +
                      ((?<day>今日|きょう|今|いま|明日|あした|明後日|あさって|3日後|4日後|3日後|4日後)の
         | 
| 36 38 | 
             
                      (?<city>.*)の(天気|てんき))
         | 
| 37 39 | 
             
                  /ux
         | 
| 38 40 | 
             
                    data = Regexp.last_match
         | 
| 39 41 | 
             
                    day = data[:day]
         | 
| 40 42 | 
             
                    case day
         | 
| 41 | 
            -
                    when  | 
| 43 | 
            +
                    when /今日|きょう|今|いま/u
         | 
| 42 44 | 
             
                      day = 'today'
         | 
| 43 45 | 
             
                    when /明日|あした/u
         | 
| 44 46 | 
             
                      day = 'tomorrow'
         | 
| @@ -49,7 +51,7 @@ module WeatherJp | |
| 49 51 | 
             
                    when /4日後|4日後/u
         | 
| 50 52 | 
             
                      day = 4
         | 
| 51 53 | 
             
                    else
         | 
| 52 | 
            -
                      raise " | 
| 54 | 
            +
                      raise WeatherJpError, "Can't parse given String"
         | 
| 53 55 | 
             
                    end
         | 
| 54 56 | 
             
                    {day: day, city: data[:city]}
         | 
| 55 57 | 
             
                  else
         | 
| @@ -94,10 +96,10 @@ module WeatherJp | |
| 94 96 | 
             
                    when :day_after_tomorrow
         | 
| 95 97 | 
             
                      day = 2
         | 
| 96 98 | 
             
                    end
         | 
| 97 | 
            -
                    raise  | 
| 99 | 
            +
                    raise WeatherJpError if @day_weathers[day] == nil
         | 
| 98 100 | 
             
                    @day_weathers[day]
         | 
| 99 101 | 
             
                  rescue
         | 
| 100 | 
            -
                    raise  | 
| 102 | 
            +
                    raise WeatherJpError,
         | 
| 101 103 | 
             
                      "unvaild argument '#{day}' for get_weather"
         | 
| 102 104 | 
             
                  end
         | 
| 103 105 | 
             
                end
         | 
| @@ -141,8 +143,7 @@ module WeatherJp | |
| 141 143 | 
             
                      full_name = 
         | 
| 142 144 | 
             
                        doc.xpath('//weather').attr('weatherlocationname').value
         | 
| 143 145 | 
             
                    rescue
         | 
| 144 | 
            -
                      raise  | 
| 145 | 
            -
                        "invaild city name '#{city_name}'!"
         | 
| 146 | 
            +
                      raise WeatherJpError, "Cant't parse XML"
         | 
| 146 147 | 
             
                    end
         | 
| 147 148 | 
             
                    [code.slice(3..-1), full_name]
         | 
| 148 149 | 
             
                  end
         | 
| @@ -156,7 +157,7 @@ module WeatherJp | |
| 156 157 | 
             
                      )
         | 
| 157 158 | 
             
                      RSS::Parser.parse(uri, false)
         | 
| 158 159 | 
             
                    rescue
         | 
| 159 | 
            -
                      raise  | 
| 160 | 
            +
                      raise WeatherJpError,
         | 
| 160 161 | 
             
                        "the MSN weather sever may be downed, or got invaild city code"
         | 
| 161 162 | 
             
                    end
         | 
| 162 163 | 
             
                  end
         | 
| @@ -188,8 +189,8 @@ module WeatherJp | |
| 188 189 | 
             
                        weathers << h
         | 
| 189 190 | 
             
                      end
         | 
| 190 191 | 
             
                      weathers
         | 
| 191 | 
            -
                    rescue
         | 
| 192 | 
            -
                      raise  | 
| 192 | 
            +
                    rescue NameError
         | 
| 193 | 
            +
                      raise WeatherJpError,
         | 
| 193 194 | 
             
                        "the MSN weather sever may be downed, or something wrong"
         | 
| 194 195 | 
             
                    end
         | 
| 195 196 | 
             
                  end
         | 
    
        data/spec/weather_jp_spec.rb
    CHANGED
    
    | @@ -25,20 +25,27 @@ describe "WeatherJp" do | |
| 25 25 | 
             
              end
         | 
| 26 26 |  | 
| 27 27 | 
             
              describe ".parser" do
         | 
| 28 | 
            -
                 | 
| 29 | 
            -
                   | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 28 | 
            +
                it "should parse japanese string" do
         | 
| 29 | 
            +
                  {
         | 
| 30 | 
            +
                    "東京の今日の天気" => {day: "today", city: "東京"},
         | 
| 31 | 
            +
                    "今日の東京の天気" => {day: "today", city: "東京"},
         | 
| 32 | 
            +
                    "東京のいまの天気" => {day: "today", city: "東京"},
         | 
| 33 | 
            +
                    "いまの東京の天気" => {day: "today", city: "東京"},
         | 
| 34 | 
            +
                    "東京の今の天気" => {day: "today", city: "東京"},
         | 
| 35 | 
            +
                    "今の東京の天気" => {day: "today", city: "東京"},
         | 
| 36 | 
            +
                    "東京の明日の天気" => {day: "tomorrow", city: "東京"},
         | 
| 37 | 
            +
                    "東京の明後日の天気" => {day: "day_after_tomorrow", city: "東京"},
         | 
| 38 | 
            +
                    "東京の3日後の天気" => {day: 3, city: "東京"},
         | 
| 39 | 
            +
                    "東京の3日後の天気" => {day: 3, city: "東京"},
         | 
| 40 | 
            +
                    "東京の4日後の天気" => {day: 4, city: "東京"},
         | 
| 41 | 
            +
                    "東京の4日後の天気" => {day: 4, city: "東京"},
         | 
| 42 | 
            +
                    "東京の今日の天気教えて〜" => {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
         | 
| 42 49 | 
             
                end
         | 
| 43 50 | 
             
              end
         | 
| 44 51 | 
             
            end
         | 
    
        data/spec/weather_spec.rb
    CHANGED
    
    | @@ -74,30 +74,30 @@ describe "Weather" do | |
| 74 74 | 
             
                describe "#get_weather" do
         | 
| 75 75 | 
             
                  it "should accept Symbol argument" do
         | 
| 76 76 | 
             
                    ->(){ @weather.get_weather(:today) }.
         | 
| 77 | 
            -
                      should_not raise_error( | 
| 77 | 
            +
                      should_not raise_error(WeatherJp::WeatherJpError)
         | 
| 78 78 | 
             
                    ->(){ @weather.get_weather(:tomorrow) }.
         | 
| 79 | 
            -
                      should_not raise_error( | 
| 79 | 
            +
                      should_not raise_error(WeatherJp::WeatherJpError)
         | 
| 80 80 | 
             
                  end
         | 
| 81 81 |  | 
| 82 82 | 
             
                  it "should accept String argument" do
         | 
| 83 83 | 
             
                    ->(){ @weather.get_weather('today') }.
         | 
| 84 | 
            -
                      should_not raise_error( | 
| 84 | 
            +
                      should_not raise_error(WeatherJp::WeatherJpError)
         | 
| 85 85 | 
             
                    ->(){ @weather.get_weather('tomorrow') }.
         | 
| 86 | 
            -
                      should_not raise_error( | 
| 86 | 
            +
                      should_not raise_error(WeatherJp::WeatherJpError)
         | 
| 87 87 | 
             
                  end
         | 
| 88 88 |  | 
| 89 89 | 
             
                  it "should accept 0 to 4 number as argument" do
         | 
| 90 90 | 
             
                    (0..4).each do |n|
         | 
| 91 91 | 
             
                      ->(){ @weather.get_weather(n) }.
         | 
| 92 | 
            -
                        should_not raise_error( | 
| 92 | 
            +
                        should_not raise_error(WeatherJp::WeatherJpError)
         | 
| 93 93 | 
             
                    end
         | 
| 94 94 | 
             
                  end
         | 
| 95 95 |  | 
| 96 | 
            -
                  it "should raise  | 
| 96 | 
            +
                  it "should raise WeatherJp::WeatherJpError when got invaild aregument" do
         | 
| 97 97 | 
             
                    ->(){ @weather.get_weather(:yesterday) }.
         | 
| 98 | 
            -
                      should raise_error( | 
| 98 | 
            +
                      should raise_error(WeatherJp::WeatherJpError)
         | 
| 99 99 | 
             
                    ->(){ @weather.get_weather(5) }.
         | 
| 100 | 
            -
                      should raise_error( | 
| 100 | 
            +
                      should raise_error(WeatherJp::WeatherJpError)
         | 
| 101 101 | 
             
                  end
         | 
| 102 102 |  | 
| 103 103 | 
             
                  it "should return DayWeather object" do
         | 
    
        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. | 
| 4 | 
            +
              version: 1.0.3
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -115,7 +115,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 115 115 | 
             
                  version: '0'
         | 
| 116 116 | 
             
                  segments:
         | 
| 117 117 | 
             
                  - 0
         | 
| 118 | 
            -
                  hash: - | 
| 118 | 
            +
                  hash: -4408068253640136415
         | 
| 119 119 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 120 120 | 
             
              none: false
         | 
| 121 121 | 
             
              requirements:
         | 
| @@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 124 124 | 
             
                  version: '0'
         | 
| 125 125 | 
             
                  segments:
         | 
| 126 126 | 
             
                  - 0
         | 
| 127 | 
            -
                  hash: - | 
| 127 | 
            +
                  hash: -4408068253640136415
         | 
| 128 128 | 
             
            requirements: []
         | 
| 129 129 | 
             
            rubyforge_project: 
         | 
| 130 130 | 
             
            rubygems_version: 1.8.23
         |