yahoo_weatherman 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.
@@ -0,0 +1,56 @@
1
+ class I18N
2
+ I18N_YAML_DIR = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'i18n'))
3
+
4
+ LANGUAGES = {}
5
+
6
+ attr_accessor :language
7
+
8
+ def initialize(language)
9
+ @language = language
10
+ end
11
+
12
+ def translate!(attributes)
13
+ if i18n?
14
+ translate_text! attributes
15
+ translate_days! attributes
16
+ translate_locations! attributes
17
+ end
18
+ attributes
19
+ end
20
+
21
+ private
22
+ def translate_text!(attributes)
23
+ translate_attribute('text', attributes, language_translations, 'code')
24
+ end
25
+
26
+ def translate_days!(attributes)
27
+ translate_attribute('day', attributes, language_translations['forecasts']['days'])
28
+ end
29
+
30
+ def translate_locations!(attributes)
31
+ (%w[city country region] & attributes.keys).each do |key|
32
+ translate_attribute(key, attributes, language_translations['locations'])
33
+ end
34
+ end
35
+
36
+ def translate_attribute(name, attributes, translations, change_by = nil)
37
+ translation_key = attributes[(change_by || name)]
38
+
39
+ if attributes[name] and translations[translation_key]
40
+ attributes[name] = translations[translation_key]
41
+ end
42
+ end
43
+
44
+ def language_translations
45
+ LANGUAGES[language] ||= load_language_yaml!
46
+ end
47
+
48
+ def load_language_yaml!
49
+ stream = File.read(File.join(I18N_YAML_DIR, language + '.yml'))
50
+ YAML::load(stream)
51
+ end
52
+
53
+ def i18n?
54
+ !!@language
55
+ end
56
+ end
@@ -11,7 +11,7 @@ require 'yahoo_weatherman/response'
11
11
 
12
12
  module Weatherman
13
13
 
14
- VERSION = '1.0.0'
14
+ VERSION = '1.0.1'
15
15
 
16
16
  URI = 'http://weather.yahooapis.com/forecastrss'
17
17
 
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe I18N do
4
+ before do
5
+ @response = Weatherman::Client.new(:lang => 'pt-br').lookup_by_woeid 455821
6
+ end
7
+
8
+ it 'should translate the conditions details' do
9
+ @response.condition['text'].should == 'Predominantemente Nublado'
10
+ end
11
+
12
+ it 'should translate the location details' do
13
+ @response.location['country'].should == 'Brasil'
14
+ end
15
+
16
+ it 'should translate the forecasts details' do
17
+ @response.forecasts.first['text'].should == 'Chuva'
18
+ @response.forecasts.last['text'].should == 'Tempestades Intermitentes'
19
+ @response.forecasts.first['day'].should == 'Sábado'
20
+ @response.forecasts.last['day'].should == 'Domingo'
21
+ end
22
+ end
23
+
24
+
@@ -1,14 +1,14 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = "yahoo_weatherman"
3
- gem.version = "1.0.0"
3
+ gem.version = "1.0.1"
4
4
  gem.authors = ["Dalto Curvelano Junior"]
5
5
  gem.description = "A ruby wrapper to the Yahoo! Weather feed with i18n support."
6
6
  gem.summary = "A ruby wrapper to the Yahoo! Weather feed with i18n support."
7
7
  gem.files = [
8
8
  "yahoo_weatherman.gemspec",
9
- "lib/yahoo_weatherman/image.rb", "lib/yahoo_weatherman/response.rb", "lib/yahoo_weatherman.rb",
9
+ "lib/yahoo_weatherman/image.rb", "lib/yahoo_weatherman/response.rb", "lib/yahoo_weatherman/i18n.rb", "lib/yahoo_weatherman.rb",
10
10
  "i18n/pt-br.yml", "spec/files/belo_horizonte_c.rss", "spec/files/belo_horizonte_f.rss", "spec/spec_helper.rb",
11
- "spec/yahoo_weatherman/response_spec.rb", "spec/yahoo_weatherman/yahoo_weatherman_spec.rb"
11
+ "spec/yahoo_weatherman/response_spec.rb", "spec/yahoo_weatherman/yahoo_weatherman_spec.rb", "spec/yahoo_weatherman/i18n_spec.rb"
12
12
  ]
13
13
  gem.homepage = "http://github.com/dlt/yahoo_weatherman"
14
14
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 0
8
- - 0
9
- version: 1.0.0
8
+ - 1
9
+ version: 1.0.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Dalto Curvelano Junior
@@ -30,6 +30,7 @@ files:
30
30
  - yahoo_weatherman.gemspec
31
31
  - lib/yahoo_weatherman/image.rb
32
32
  - lib/yahoo_weatherman/response.rb
33
+ - lib/yahoo_weatherman/i18n.rb
33
34
  - lib/yahoo_weatherman.rb
34
35
  - i18n/pt-br.yml
35
36
  - spec/files/belo_horizonte_c.rss
@@ -37,6 +38,7 @@ files:
37
38
  - spec/spec_helper.rb
38
39
  - spec/yahoo_weatherman/response_spec.rb
39
40
  - spec/yahoo_weatherman/yahoo_weatherman_spec.rb
41
+ - spec/yahoo_weatherman/i18n_spec.rb
40
42
  has_rdoc: true
41
43
  homepage: http://github.com/dlt/yahoo_weatherman
42
44
  licenses: []