i18n_data 0.2.6 → 0.2.7

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/Rakefile CHANGED
@@ -85,5 +85,5 @@ begin
85
85
 
86
86
  Jeweler::GemcutterTasks.new
87
87
  rescue LoadError
88
- puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
88
+ puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install jeweler"
89
89
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.6
1
+ 0.2.7
data/i18n_data.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{i18n_data}
8
- s.version = "0.2.6"
8
+ s.version = "0.2.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Michael Grosser"]
12
- s.date = %q{2009-12-13}
12
+ s.date = %q{2010-03-22}
13
13
  s.email = %q{grosser.michael@gmail.com}
14
14
  s.extra_rdoc_files = [
15
15
  "README.markdown"
@@ -190,7 +190,7 @@ Gem::Specification.new do |s|
190
190
  s.homepage = %q{http://github.com/grosser/i18n_data}
191
191
  s.rdoc_options = ["--charset=UTF-8"]
192
192
  s.require_paths = ["lib"]
193
- s.rubygems_version = %q{1.3.5}
193
+ s.rubygems_version = %q{1.3.6}
194
194
  s.summary = %q{country/language names and 2-letter-code pairs, in 85 languages}
195
195
  s.test_files = [
196
196
  "spec/spec_helper.rb",
@@ -4,8 +4,8 @@ module I18nData
4
4
  extend self
5
5
 
6
6
  def codes(type, language_code)
7
- unless data = read_from_file(type, language_code)
8
- raise NoTranslationAvailable.new("#{type}-#{language_code}")
7
+ unless data = read_from_file(cache_file_for(type, language_code))
8
+ raise NoTranslationAvailable, "#{type}-#{language_code}"
9
9
  end
10
10
  data
11
11
  end
@@ -16,7 +16,7 @@ module I18nData
16
16
  [:languages, :countries].each do |type|
17
17
  begin
18
18
  data = provider.send(:codes, type, language_code)
19
- write_to_file(data, type, language_code)
19
+ write_to_file(data, cache_file_for(type, language_code))
20
20
  rescue NoTranslationAvailable
21
21
  end
22
22
  end
@@ -25,31 +25,26 @@ module I18nData
25
25
 
26
26
  private
27
27
 
28
- def read_from_file(type, language_code)
29
- file = cache_for(type, language_code)
28
+ def read_from_file(file)
30
29
  return nil unless File.exist?(file)
31
30
  data = {}
32
- IO.read(file).split("\n").each do |line|
33
- code, translation = line.split(DATA_SEPERATOR)
31
+ File.readlines(file).each do |line|
32
+ code, translation = line.strip.split(DATA_SEPERATOR, 2)
34
33
  data[code] = translation
35
34
  end
36
35
  data
37
36
  end
38
37
 
39
- def write_to_file(data, type, language_code)
38
+ def write_to_file(data, file)
40
39
  return if data.empty?
41
- file = cache_for(type, language_code)
42
40
  FileUtils.mkdir_p File.dirname(file)
43
41
  File.open(file,'w') do |f|
44
- f.puts data.map{|code, translation| "#{code}#{DATA_SEPERATOR}#{translation}" } * "\n"
42
+ f.write data.map{|code, translation| "#{code}#{DATA_SEPERATOR}#{translation}" } * "\n"
45
43
  end
46
44
  end
47
45
 
48
- def cache_for(type,language_code)
49
- cache "#{type}-#{language_code}"
50
- end
51
-
52
- def cache(file)
46
+ def cache_file_for(type,language_code)
47
+ file = "#{type}-#{language_code}"
53
48
  File.join(File.dirname(__FILE__), '..', '..', 'cache', 'file_data_provider', "#{file}.txt")
54
49
  end
55
50
  end
@@ -33,14 +33,14 @@ module I18nData
33
33
 
34
34
  def translate(type, language, to_language_code)
35
35
  translated = translations(type, to_language_code)[language]
36
- translated.blank? ? nil : translated
36
+ translated.to_s.empty? ? nil : translated
37
37
  end
38
38
 
39
39
  def translated(type, language_code)
40
40
  translations = {}
41
41
  send("english_#{type}").each do |code,name|
42
42
  translation = translate(type, name, language_code)
43
- translations[code] = translation ? translation : name
43
+ translations[code] = translation || name
44
44
  end
45
45
  translations
46
46
  end
@@ -51,7 +51,7 @@ module I18nData
51
51
  url = TRANSLATIONS[type]+"#{language_code.downcase}.po"
52
52
  data = open(url).readlines
53
53
  rescue
54
- raise NoTranslationAvailable.new("for #{type} and language code = #{language_code}")
54
+ raise NoTranslationAvailable, "for #{type} and language code = #{language_code}"
55
55
  end
56
56
 
57
57
  po_to_hash data
data/lib/i18n_data.rb CHANGED
@@ -1,5 +1,3 @@
1
- require 'active_support'
2
-
3
1
  module I18nData
4
2
  VERSION = File.read( File.join(File.dirname(__FILE__), '..', 'VERSION') ).strip
5
3
 
@@ -38,10 +36,17 @@ module I18nData
38
36
 
39
37
  def recognise_code(type, search)
40
38
  search = search.strip
41
- languages.keys.each do |code|
39
+
40
+ # common languages first <-> faster in majority of cases
41
+ common_languages = ['EN','ES','FR','DE','ZH']
42
+ langs = (common_languages + (languages.keys - common_languages))
43
+
44
+ langs.each do |code|
42
45
  begin
43
46
  send(type, code).each do |code, name|
44
- return code if search == name
47
+ # supports "Dutch" and "Dutch; Flemish", checks for inclusion first -> faster
48
+ match_found = (name.include?(search) and name.split(';').map{|s| s.strip }.include?(search))
49
+ return code if match_found
45
50
  end
46
51
  rescue NoTranslationAvailable
47
52
  end
@@ -3,7 +3,8 @@ require 'i18n_data/file_data_provider'
3
3
 
4
4
  describe I18nData::FileDataProvider do
5
5
  before do
6
- `rm -f #{I18nData::FileDataProvider.send(:cache_for,"XX","YY")}`
6
+ @cache_file = I18nData::FileDataProvider.send(:cache_file_for,"XX","YY")
7
+ `rm -f #{@cache_file}`
7
8
  end
8
9
 
9
10
  def read(x,y)
@@ -12,12 +13,12 @@ describe I18nData::FileDataProvider do
12
13
 
13
14
  it "preserves data when writing and then reading" do
14
15
  data = {"x"=>"y","z"=>"w"}
15
- I18nData::FileDataProvider.send(:write_to_file,data,"XX","YY")
16
+ I18nData::FileDataProvider.send(:write_to_file, data, @cache_file)
16
17
  read("XX","YY").should == data
17
18
  end
18
19
 
19
20
  it "does not write empty data sets" do
20
- I18nData::FileDataProvider.send(:write_to_file,{},"XX","YY")
21
+ I18nData::FileDataProvider.send(:write_to_file,{}, @cache_file)
21
22
  lambda{read("XX","YY")}.should raise_error I18nData::NoTranslationAvailable
22
23
  end
23
24
  end
@@ -7,6 +7,10 @@ describe I18nData do
7
7
  require "i18n_data/live_data_provider"
8
8
  require "i18n_data/file_data_provider"
9
9
 
10
+ def blank_keys_or_values(hash)
11
+ hash.detect{|k,v| k.to_s.empty? or v.to_s.empty?}
12
+ end
13
+
10
14
  providers = [I18nData::FileDataProvider]
11
15
  providers << I18nData::LiveDataProvider unless ENV['RUN_CODE_RUN']
12
16
  providers.each do |provider|
@@ -22,7 +26,7 @@ describe I18nData do
22
26
 
23
27
  describe :english do
24
28
  it "does not contain blanks" do
25
- I18nData.languages.detect {|k,v| k.blank? or v.blank?}.should == nil
29
+ blank_keys_or_values(I18nData.languages).should == nil
26
30
  end
27
31
 
28
32
  it "has english as default" do
@@ -48,7 +52,7 @@ describe I18nData do
48
52
  end
49
53
 
50
54
  it "does not contain blanks" do
51
- I18nData.languages('GL').detect {|k,v| k.blank? or v.blank?}.should == nil
55
+ blank_keys_or_values(I18nData.languages('GL')).should == nil
52
56
  end
53
57
 
54
58
  it "is written in unicode" do
@@ -64,7 +68,7 @@ describe I18nData do
64
68
  end
65
69
 
66
70
  it "does not contain blanks" do
67
- I18nData.countries.detect {|k,v| k.blank? or v.blank?}.should == nil
71
+ blank_keys_or_values(I18nData.countries).should == nil
68
72
  end
69
73
 
70
74
  it "contains all countries" do
@@ -86,7 +90,7 @@ describe I18nData do
86
90
  end
87
91
 
88
92
  it "does not contain blanks" do
89
- I18nData.countries('GL').detect {|k,v| k.blank? or v.blank?}.should == nil
93
+ blank_keys_or_values(I18nData.countries('GL')).should == nil
90
94
  end
91
95
 
92
96
  it "is written in unicode" do
@@ -95,41 +99,46 @@ describe I18nData do
95
99
  end
96
100
  end
97
101
  end
102
+ end
98
103
 
99
- describe :country_code do
100
- before :all do
101
- I18nData.data_provider = I18nData::FileDataProvider
102
- end
104
+ describe :country_code do
105
+ before :all do
106
+ I18nData.data_provider = I18nData::FileDataProvider
107
+ end
103
108
 
104
- it "recognises a countries name" do
105
- I18nData.country_code('Germany').should == 'DE'
106
- end
109
+ it "recognises a countries name" do
110
+ I18nData.country_code('Germany').should == 'DE'
111
+ end
107
112
 
108
- it "recognises with blanks" do
109
- I18nData.country_code(" Germany \n\r ").should == 'DE'
110
- end
113
+ it "recognises with blanks" do
114
+ I18nData.country_code(" Germany \n\r ").should == 'DE'
115
+ end
111
116
 
112
- it "returns nil when it cannot recognise" do
113
- I18nData.country_code('XY').should == nil
114
- end
117
+ it "returns nil when it cannot recognise" do
118
+ I18nData.country_code('XY').should == nil
115
119
  end
120
+ end
116
121
 
117
- describe :language_code do
118
- before :all do
119
- I18nData.data_provider = I18nData::FileDataProvider
120
- end
122
+ describe :language_code do
123
+ before :all do
124
+ I18nData.data_provider = I18nData::FileDataProvider
125
+ end
121
126
 
122
- it "recognises a countries name" do
123
- I18nData.language_code('Deutsch').should == 'DE'
124
- end
127
+ it "recognises a countries name" do
128
+ I18nData.language_code('Deutsch').should == 'DE'
129
+ end
125
130
 
126
- it "recognises with blanks" do
127
- I18nData.language_code(" Deutsch \n\r ").should == 'DE'
128
- end
131
+ it "recognizes languages that are ; seperated" do
132
+ I18nData.language_code('Dutch').should == 'NL'
133
+ I18nData.language_code('Flemish').should == 'NL'
134
+ end
129
135
 
130
- it "returns nil when it cannot recognise" do
131
- I18nData.language_code('XY').should == nil
132
- end
136
+ it "recognises with blanks" do
137
+ I18nData.language_code(" Deutsch \n\r ").should == 'DE'
138
+ end
139
+
140
+ it "returns nil when it cannot recognise" do
141
+ I18nData.language_code('XY').should == nil
133
142
  end
134
143
  end
135
144
 
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: i18n_data
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 2
8
+ - 7
9
+ version: 0.2.7
5
10
  platform: ruby
6
11
  authors:
7
12
  - Michael Grosser
@@ -9,19 +14,21 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2009-12-13 00:00:00 +01:00
17
+ date: 2010-03-22 00:00:00 +01:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: activesupport
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
23
29
  version: "0"
24
- version:
30
+ type: :runtime
31
+ version_requirements: *id001
25
32
  description:
26
33
  email: grosser.michael@gmail.com
27
34
  executables: []
@@ -215,18 +222,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
215
222
  requirements:
216
223
  - - ">="
217
224
  - !ruby/object:Gem::Version
225
+ segments:
226
+ - 0
218
227
  version: "0"
219
- version:
220
228
  required_rubygems_version: !ruby/object:Gem::Requirement
221
229
  requirements:
222
230
  - - ">="
223
231
  - !ruby/object:Gem::Version
232
+ segments:
233
+ - 0
224
234
  version: "0"
225
- version:
226
235
  requirements: []
227
236
 
228
237
  rubyforge_project:
229
- rubygems_version: 1.3.5
238
+ rubygems_version: 1.3.6
230
239
  signing_key:
231
240
  specification_version: 3
232
241
  summary: country/language names and 2-letter-code pairs, in 85 languages