ar_serialized_array 0.2.4 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (175) hide show
  1. data/Rakefile +5 -68
  2. data/Readme.md +50 -0
  3. data/VERSION +1 -1
  4. data/ar_serialized_array.gemspec +47 -0
  5. data/init.rb +1 -0
  6. data/lib/ar_serialized_array.rb +37 -0
  7. data/spec/ar_serialized_array_spec.rb +84 -0
  8. data/spec/setup_test_model.rb +28 -0
  9. data/spec/spec_helper.rb +4 -2
  10. metadata +39 -183
  11. data/.gitignore +0 -3
  12. data/CHANGELOG +0 -2
  13. data/README.markdown +0 -57
  14. data/cache/file_data_provider/countries-AF.txt +0 -246
  15. data/cache/file_data_provider/countries-AM.txt +0 -246
  16. data/cache/file_data_provider/countries-AR.txt +0 -246
  17. data/cache/file_data_provider/countries-AZ.txt +0 -246
  18. data/cache/file_data_provider/countries-BE.txt +0 -246
  19. data/cache/file_data_provider/countries-BG.txt +0 -246
  20. data/cache/file_data_provider/countries-BN.txt +0 -246
  21. data/cache/file_data_provider/countries-BR.txt +0 -246
  22. data/cache/file_data_provider/countries-BS.txt +0 -246
  23. data/cache/file_data_provider/countries-CA.txt +0 -246
  24. data/cache/file_data_provider/countries-CS.txt +0 -246
  25. data/cache/file_data_provider/countries-CY.txt +0 -246
  26. data/cache/file_data_provider/countries-DA.txt +0 -246
  27. data/cache/file_data_provider/countries-DE.txt +0 -246
  28. data/cache/file_data_provider/countries-DZ.txt +0 -246
  29. data/cache/file_data_provider/countries-EL.txt +0 -246
  30. data/cache/file_data_provider/countries-EN.txt +0 -246
  31. data/cache/file_data_provider/countries-EO.txt +0 -246
  32. data/cache/file_data_provider/countries-ES.txt +0 -246
  33. data/cache/file_data_provider/countries-ET.txt +0 -246
  34. data/cache/file_data_provider/countries-EU.txt +0 -246
  35. data/cache/file_data_provider/countries-FA.txt +0 -246
  36. data/cache/file_data_provider/countries-FI.txt +0 -246
  37. data/cache/file_data_provider/countries-FO.txt +0 -246
  38. data/cache/file_data_provider/countries-FR.txt +0 -246
  39. data/cache/file_data_provider/countries-GA.txt +0 -246
  40. data/cache/file_data_provider/countries-GL.txt +0 -246
  41. data/cache/file_data_provider/countries-GU.txt +0 -246
  42. data/cache/file_data_provider/countries-HE.txt +0 -246
  43. data/cache/file_data_provider/countries-HI.txt +0 -246
  44. data/cache/file_data_provider/countries-HR.txt +0 -246
  45. data/cache/file_data_provider/countries-HU.txt +0 -246
  46. data/cache/file_data_provider/countries-HY.txt +0 -246
  47. data/cache/file_data_provider/countries-ID.txt +0 -246
  48. data/cache/file_data_provider/countries-IS.txt +0 -246
  49. data/cache/file_data_provider/countries-IT.txt +0 -246
  50. data/cache/file_data_provider/countries-JA.txt +0 -246
  51. data/cache/file_data_provider/countries-KA.txt +0 -246
  52. data/cache/file_data_provider/countries-KK.txt +0 -246
  53. data/cache/file_data_provider/countries-KM.txt +0 -246
  54. data/cache/file_data_provider/countries-KN.txt +0 -246
  55. data/cache/file_data_provider/countries-KO.txt +0 -246
  56. data/cache/file_data_provider/countries-KU.txt +0 -246
  57. data/cache/file_data_provider/countries-LT.txt +0 -246
  58. data/cache/file_data_provider/countries-LV.txt +0 -246
  59. data/cache/file_data_provider/countries-MI.txt +0 -246
  60. data/cache/file_data_provider/countries-MK.txt +0 -246
  61. data/cache/file_data_provider/countries-ML.txt +0 -246
  62. data/cache/file_data_provider/countries-MN.txt +0 -246
  63. data/cache/file_data_provider/countries-MR.txt +0 -246
  64. data/cache/file_data_provider/countries-MS.txt +0 -246
  65. data/cache/file_data_provider/countries-MT.txt +0 -246
  66. data/cache/file_data_provider/countries-NB.txt +0 -246
  67. data/cache/file_data_provider/countries-NE.txt +0 -246
  68. data/cache/file_data_provider/countries-NL.txt +0 -246
  69. data/cache/file_data_provider/countries-NN.txt +0 -246
  70. data/cache/file_data_provider/countries-OC.txt +0 -246
  71. data/cache/file_data_provider/countries-PA.txt +0 -246
  72. data/cache/file_data_provider/countries-PL.txt +0 -246
  73. data/cache/file_data_provider/countries-PS.txt +0 -246
  74. data/cache/file_data_provider/countries-PT.txt +0 -246
  75. data/cache/file_data_provider/countries-RO.txt +0 -246
  76. data/cache/file_data_provider/countries-RU.txt +0 -246
  77. data/cache/file_data_provider/countries-RW.txt +0 -246
  78. data/cache/file_data_provider/countries-SK.txt +0 -246
  79. data/cache/file_data_provider/countries-SL.txt +0 -246
  80. data/cache/file_data_provider/countries-SO.txt +0 -246
  81. data/cache/file_data_provider/countries-SQ.txt +0 -246
  82. data/cache/file_data_provider/countries-SR.txt +0 -246
  83. data/cache/file_data_provider/countries-SV.txt +0 -246
  84. data/cache/file_data_provider/countries-SW.txt +0 -246
  85. data/cache/file_data_provider/countries-TA.txt +0 -246
  86. data/cache/file_data_provider/countries-TH.txt +0 -246
  87. data/cache/file_data_provider/countries-TI.txt +0 -246
  88. data/cache/file_data_provider/countries-TK.txt +0 -246
  89. data/cache/file_data_provider/countries-TL.txt +0 -246
  90. data/cache/file_data_provider/countries-TR.txt +0 -246
  91. data/cache/file_data_provider/countries-TT.txt +0 -246
  92. data/cache/file_data_provider/countries-UK.txt +0 -246
  93. data/cache/file_data_provider/countries-VE.txt +0 -246
  94. data/cache/file_data_provider/countries-VI.txt +0 -246
  95. data/cache/file_data_provider/countries-WA.txt +0 -246
  96. data/cache/file_data_provider/countries-WO.txt +0 -246
  97. data/cache/file_data_provider/countries-XH.txt +0 -246
  98. data/cache/file_data_provider/countries-ZU.txt +0 -246
  99. data/cache/file_data_provider/languages-AF.txt +0 -185
  100. data/cache/file_data_provider/languages-AM.txt +0 -185
  101. data/cache/file_data_provider/languages-AR.txt +0 -185
  102. data/cache/file_data_provider/languages-AZ.txt +0 -185
  103. data/cache/file_data_provider/languages-BE.txt +0 -185
  104. data/cache/file_data_provider/languages-BG.txt +0 -185
  105. data/cache/file_data_provider/languages-BR.txt +0 -185
  106. data/cache/file_data_provider/languages-BS.txt +0 -185
  107. data/cache/file_data_provider/languages-CA.txt +0 -185
  108. data/cache/file_data_provider/languages-CS.txt +0 -185
  109. data/cache/file_data_provider/languages-CY.txt +0 -185
  110. data/cache/file_data_provider/languages-DA.txt +0 -185
  111. data/cache/file_data_provider/languages-DE.txt +0 -185
  112. data/cache/file_data_provider/languages-EL.txt +0 -185
  113. data/cache/file_data_provider/languages-EN.txt +0 -185
  114. data/cache/file_data_provider/languages-EO.txt +0 -185
  115. data/cache/file_data_provider/languages-ES.txt +0 -185
  116. data/cache/file_data_provider/languages-ET.txt +0 -185
  117. data/cache/file_data_provider/languages-EU.txt +0 -185
  118. data/cache/file_data_provider/languages-FA.txt +0 -185
  119. data/cache/file_data_provider/languages-FI.txt +0 -185
  120. data/cache/file_data_provider/languages-FR.txt +0 -185
  121. data/cache/file_data_provider/languages-GA.txt +0 -185
  122. data/cache/file_data_provider/languages-GL.txt +0 -185
  123. data/cache/file_data_provider/languages-HE.txt +0 -185
  124. data/cache/file_data_provider/languages-HI.txt +0 -185
  125. data/cache/file_data_provider/languages-HR.txt +0 -185
  126. data/cache/file_data_provider/languages-HU.txt +0 -185
  127. data/cache/file_data_provider/languages-ID.txt +0 -185
  128. data/cache/file_data_provider/languages-IS.txt +0 -185
  129. data/cache/file_data_provider/languages-IT.txt +0 -185
  130. data/cache/file_data_provider/languages-JA.txt +0 -185
  131. data/cache/file_data_provider/languages-KO.txt +0 -185
  132. data/cache/file_data_provider/languages-LT.txt +0 -185
  133. data/cache/file_data_provider/languages-LV.txt +0 -185
  134. data/cache/file_data_provider/languages-MI.txt +0 -185
  135. data/cache/file_data_provider/languages-MK.txt +0 -185
  136. data/cache/file_data_provider/languages-MN.txt +0 -185
  137. data/cache/file_data_provider/languages-MR.txt +0 -185
  138. data/cache/file_data_provider/languages-MS.txt +0 -185
  139. data/cache/file_data_provider/languages-MT.txt +0 -185
  140. data/cache/file_data_provider/languages-NB.txt +0 -185
  141. data/cache/file_data_provider/languages-NL.txt +0 -185
  142. data/cache/file_data_provider/languages-NN.txt +0 -185
  143. data/cache/file_data_provider/languages-OC.txt +0 -185
  144. data/cache/file_data_provider/languages-PL.txt +0 -185
  145. data/cache/file_data_provider/languages-PS.txt +0 -185
  146. data/cache/file_data_provider/languages-PT.txt +0 -185
  147. data/cache/file_data_provider/languages-RO.txt +0 -185
  148. data/cache/file_data_provider/languages-RU.txt +0 -185
  149. data/cache/file_data_provider/languages-RW.txt +0 -185
  150. data/cache/file_data_provider/languages-SK.txt +0 -185
  151. data/cache/file_data_provider/languages-SL.txt +0 -185
  152. data/cache/file_data_provider/languages-SR.txt +0 -185
  153. data/cache/file_data_provider/languages-SV.txt +0 -185
  154. data/cache/file_data_provider/languages-TA.txt +0 -185
  155. data/cache/file_data_provider/languages-TH.txt +0 -185
  156. data/cache/file_data_provider/languages-TI.txt +0 -185
  157. data/cache/file_data_provider/languages-TR.txt +0 -185
  158. data/cache/file_data_provider/languages-TT.txt +0 -185
  159. data/cache/file_data_provider/languages-UK.txt +0 -185
  160. data/cache/file_data_provider/languages-VE.txt +0 -185
  161. data/cache/file_data_provider/languages-VI.txt +0 -185
  162. data/cache/file_data_provider/languages-WA.txt +0 -185
  163. data/cache/file_data_provider/languages-XH.txt +0 -185
  164. data/cache/file_data_provider/languages-ZU.txt +0 -185
  165. data/example_output/all_names_for_DE.txt +0 -85
  166. data/example_output/all_names_for_FR.txt +0 -85
  167. data/example_output/all_names_for_GB.txt +0 -85
  168. data/example_output/all_names_for_US.txt +0 -85
  169. data/i18n_data.gemspec +0 -31
  170. data/lib/i18n_data.rb +0 -34
  171. data/lib/i18n_data/file_data_provider.rb +0 -56
  172. data/lib/i18n_data/live_data_provider.rb +0 -97
  173. data/spec/i18n_data/file_data_provider_spec.rb +0 -23
  174. data/spec/i18n_data/live_data_provider_spec.rb +0 -44
  175. data/spec/i18n_data_spec.rb +0 -101
@@ -1,31 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- Gem::Specification.new do |s|
4
- s.name = %q{i18n_data}
5
- s.version = "0.2.3"
6
-
7
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Michael Grosser"]
9
- s.date = %q{2009-03-07}
10
- s.email = %q{grosser.michael@gmail.com}
11
- s.files = ["README.markdown", "VERSION.yml", "cache/file_data_provider", "cache/file_data_provider/countries-AF.txt", "cache/file_data_provider/countries-AM.txt", "cache/file_data_provider/countries-AR.txt", "cache/file_data_provider/countries-AZ.txt", "cache/file_data_provider/countries-BE.txt", "cache/file_data_provider/countries-BG.txt", "cache/file_data_provider/countries-BN.txt", "cache/file_data_provider/countries-BR.txt", "cache/file_data_provider/countries-BS.txt", "cache/file_data_provider/countries-CA.txt", "cache/file_data_provider/countries-CS.txt", "cache/file_data_provider/countries-CY.txt", "cache/file_data_provider/countries-DA.txt", "cache/file_data_provider/countries-DE.txt", "cache/file_data_provider/countries-DZ.txt", "cache/file_data_provider/countries-EL.txt", "cache/file_data_provider/countries-EN.txt", "cache/file_data_provider/countries-EO.txt", "cache/file_data_provider/countries-ES.txt", "cache/file_data_provider/countries-ET.txt", "cache/file_data_provider/countries-EU.txt", "cache/file_data_provider/countries-FA.txt", "cache/file_data_provider/countries-FI.txt", "cache/file_data_provider/countries-FO.txt", "cache/file_data_provider/countries-FR.txt", "cache/file_data_provider/countries-GA.txt", "cache/file_data_provider/countries-GL.txt", "cache/file_data_provider/countries-GU.txt", "cache/file_data_provider/countries-HE.txt", "cache/file_data_provider/countries-HI.txt", "cache/file_data_provider/countries-HR.txt", "cache/file_data_provider/countries-HU.txt", "cache/file_data_provider/countries-HY.txt", "cache/file_data_provider/countries-ID.txt", "cache/file_data_provider/countries-IS.txt", "cache/file_data_provider/countries-IT.txt", "cache/file_data_provider/countries-JA.txt", "cache/file_data_provider/countries-KA.txt", "cache/file_data_provider/countries-KK.txt", "cache/file_data_provider/countries-KM.txt", "cache/file_data_provider/countries-KN.txt", "cache/file_data_provider/countries-KO.txt", "cache/file_data_provider/countries-KU.txt", "cache/file_data_provider/countries-LT.txt", "cache/file_data_provider/countries-LV.txt", "cache/file_data_provider/countries-MI.txt", "cache/file_data_provider/countries-MK.txt", "cache/file_data_provider/countries-ML.txt", "cache/file_data_provider/countries-MN.txt", "cache/file_data_provider/countries-MR.txt", "cache/file_data_provider/countries-MS.txt", "cache/file_data_provider/countries-MT.txt", "cache/file_data_provider/countries-NB.txt", "cache/file_data_provider/countries-NE.txt", "cache/file_data_provider/countries-NL.txt", "cache/file_data_provider/countries-NN.txt", "cache/file_data_provider/countries-OC.txt", "cache/file_data_provider/countries-PA.txt", "cache/file_data_provider/countries-PL.txt", "cache/file_data_provider/countries-PS.txt", "cache/file_data_provider/countries-PT.txt", "cache/file_data_provider/countries-RO.txt", "cache/file_data_provider/countries-RU.txt", "cache/file_data_provider/countries-RW.txt", "cache/file_data_provider/countries-SK.txt", "cache/file_data_provider/countries-SL.txt", "cache/file_data_provider/countries-SO.txt", "cache/file_data_provider/countries-SQ.txt", "cache/file_data_provider/countries-SR.txt", "cache/file_data_provider/countries-SV.txt", "cache/file_data_provider/countries-SW.txt", "cache/file_data_provider/countries-TA.txt", "cache/file_data_provider/countries-TH.txt", "cache/file_data_provider/countries-TI.txt", "cache/file_data_provider/countries-TK.txt", "cache/file_data_provider/countries-TL.txt", "cache/file_data_provider/countries-TR.txt", "cache/file_data_provider/countries-TT.txt", "cache/file_data_provider/countries-UK.txt", "cache/file_data_provider/countries-VE.txt", "cache/file_data_provider/countries-VI.txt", "cache/file_data_provider/countries-WA.txt", "cache/file_data_provider/countries-WO.txt", "cache/file_data_provider/countries-XH.txt", "cache/file_data_provider/countries-ZU.txt", "cache/file_data_provider/languages-AF.txt", "cache/file_data_provider/languages-AM.txt", "cache/file_data_provider/languages-AR.txt", "cache/file_data_provider/languages-AZ.txt", "cache/file_data_provider/languages-BE.txt", "cache/file_data_provider/languages-BG.txt", "cache/file_data_provider/languages-BR.txt", "cache/file_data_provider/languages-BS.txt", "cache/file_data_provider/languages-CA.txt", "cache/file_data_provider/languages-CS.txt", "cache/file_data_provider/languages-CY.txt", "cache/file_data_provider/languages-DA.txt", "cache/file_data_provider/languages-DE.txt", "cache/file_data_provider/languages-EL.txt", "cache/file_data_provider/languages-EN.txt", "cache/file_data_provider/languages-EO.txt", "cache/file_data_provider/languages-ES.txt", "cache/file_data_provider/languages-ET.txt", "cache/file_data_provider/languages-EU.txt", "cache/file_data_provider/languages-FA.txt", "cache/file_data_provider/languages-FI.txt", "cache/file_data_provider/languages-FR.txt", "cache/file_data_provider/languages-GA.txt", "cache/file_data_provider/languages-GL.txt", "cache/file_data_provider/languages-HE.txt", "cache/file_data_provider/languages-HI.txt", "cache/file_data_provider/languages-HR.txt", "cache/file_data_provider/languages-HU.txt", "cache/file_data_provider/languages-ID.txt", "cache/file_data_provider/languages-IS.txt", "cache/file_data_provider/languages-IT.txt", "cache/file_data_provider/languages-JA.txt", "cache/file_data_provider/languages-KO.txt", "cache/file_data_provider/languages-LT.txt", "cache/file_data_provider/languages-LV.txt", "cache/file_data_provider/languages-MI.txt", "cache/file_data_provider/languages-MK.txt", "cache/file_data_provider/languages-MN.txt", "cache/file_data_provider/languages-MR.txt", "cache/file_data_provider/languages-MS.txt", "cache/file_data_provider/languages-MT.txt", "cache/file_data_provider/languages-NB.txt", "cache/file_data_provider/languages-NL.txt", "cache/file_data_provider/languages-NN.txt", "cache/file_data_provider/languages-OC.txt", "cache/file_data_provider/languages-PL.txt", "cache/file_data_provider/languages-PS.txt", "cache/file_data_provider/languages-PT.txt", "cache/file_data_provider/languages-RO.txt", "cache/file_data_provider/languages-RU.txt", "cache/file_data_provider/languages-RW.txt", "cache/file_data_provider/languages-SK.txt", "cache/file_data_provider/languages-SL.txt", "cache/file_data_provider/languages-SR.txt", "cache/file_data_provider/languages-SV.txt", "cache/file_data_provider/languages-TA.txt", "cache/file_data_provider/languages-TH.txt", "cache/file_data_provider/languages-TI.txt", "cache/file_data_provider/languages-TR.txt", "cache/file_data_provider/languages-TT.txt", "cache/file_data_provider/languages-UK.txt", "cache/file_data_provider/languages-VE.txt", "cache/file_data_provider/languages-VI.txt", "cache/file_data_provider/languages-WA.txt", "cache/file_data_provider/languages-XH.txt", "cache/file_data_provider/languages-ZU.txt", "lib/i18n_data", "lib/i18n_data.rb", "lib/i18n_data/file_data_provider.rb", "lib/i18n_data/live_data_provider.rb", "spec/i18n_data", "spec/i18n_data/file_data_provider_spec.rb", "spec/i18n_data/live_data_provider_spec.rb", "spec/i18n_data_spec.rb", "spec/spec_helper.rb"]
12
- s.has_rdoc = true
13
- s.homepage = %q{http://github.com/grosser/i18n_data}
14
- s.rdoc_options = ["--inline-source", "--charset=UTF-8"]
15
- s.require_paths = ["lib"]
16
- s.rubygems_version = %q{1.3.1}
17
- s.summary = %q{country/language names and 2-letter-code pairs, in 85 languages}
18
-
19
- if s.respond_to? :specification_version then
20
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
21
- s.specification_version = 2
22
-
23
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
24
- s.add_runtime_dependency(%q<activesupport>, [">= 0"])
25
- else
26
- s.add_dependency(%q<activesupport>, [">= 0"])
27
- end
28
- else
29
- s.add_dependency(%q<activesupport>, [">= 0"])
30
- end
31
- end
@@ -1,34 +0,0 @@
1
- require 'activesupport'
2
-
3
- module I18nData
4
- VERSION = File.read( File.join(File.dirname(__FILE__),'..','VERSION') ).strip
5
-
6
- extend self
7
-
8
- def languages(language_code='EN')
9
- data_provider.codes(:languages,language_code.to_s.upcase)
10
- end
11
-
12
- def countries(language_code='EN')
13
- data_provider.codes(:countries,language_code.to_s.upcase)
14
- end
15
-
16
- def data_provider
17
- if @data_provider
18
- @data_provider
19
- else
20
- require 'i18n_data/file_data_provider'
21
- FileDataProvider
22
- end
23
- end
24
-
25
- def data_provider=(provider)
26
- @data_provider = provider
27
- end
28
-
29
- class NoTranslationAvailable < Exception
30
- def to_s
31
- "NoTranslationAvailable -- #{super}"
32
- end
33
- end
34
- end
@@ -1,56 +0,0 @@
1
- module I18nData
2
- module FileDataProvider
3
- DATA_SEPERATOR = ";;"
4
- extend self
5
-
6
- def codes(type,language_code)
7
- unless data = read_from_file(type,language_code)
8
- raise NoTranslationAvailable.new("#{type}-#{language_code}")
9
- end
10
- data
11
- end
12
-
13
- def write_cache(provider)
14
- languages = provider.codes(:languages,'EN').keys
15
- languages.each{|language_code|
16
- [:languages,:countries].each {|type|
17
- begin
18
- data = provider.send(:codes,type,language_code)
19
- write_to_file(data,type,language_code)
20
- rescue NoTranslationAvailable
21
- end
22
- }
23
- }
24
- end
25
-
26
- private
27
-
28
- def read_from_file(type,language_code)
29
- file = cache_for(type,language_code)
30
- return nil unless File.exist?(file)
31
- data = {}
32
- IO.read(file).split("\n").each{|line|
33
- code, translation = line.split(DATA_SEPERATOR)
34
- data[code] = translation
35
- }
36
- data
37
- end
38
-
39
- def write_to_file(data,type,language_code)
40
- return if data.empty?
41
- file = cache_for(type,language_code)
42
- FileUtils.mkdir_p(File.dirname(file))
43
- File.open(file,'w') do |f|
44
- f.puts data.map{|code,translation|"#{code}#{DATA_SEPERATOR}#{translation}"} * "\n"
45
- end
46
- end
47
-
48
- def cache_for(type,language_code)
49
- cache("#{type}-#{language_code}")
50
- end
51
-
52
- def cache(file)
53
- File.join(File.dirname(__FILE__),'..','..','cache','file_data_provider',"#{file}.txt")
54
- end
55
- end
56
- end
@@ -1,97 +0,0 @@
1
- require 'open-uri'
2
- require 'rexml/document'
3
- gem 'activesupport', '> 2.2'
4
- require 'activesupport'
5
-
6
- module I18nData
7
- # fetches data online from debian svn
8
- module LiveDataProvider
9
- extend ActiveSupport::Memoizable
10
- extend self
11
-
12
- XML_CODES = {
13
- :countries => 'http://svn.debian.org/viewsvn/*checkout*/pkg-isocodes/trunk/iso-codes/iso_3166/iso_3166.xml',
14
- :languages => 'http://svn.debian.org/viewsvn/*checkout*/pkg-isocodes/trunk/iso-codes/iso_639/iso_639.xml'
15
- }
16
- TRANSLATIONS = {
17
- :languages => 'http://svn.debian.org/viewsvn/*checkout*/pkg-isocodes/trunk/iso-codes/iso_639/',
18
- :countries => 'http://svn.debian.org/viewsvn/*checkout*/pkg-isocodes/trunk/iso-codes/iso_3166/'
19
- }
20
-
21
- def codes(type,language_code)
22
- language_code = language_code.upcase
23
- if language_code == 'EN'
24
- send("english_#{type}")
25
- else
26
- translated(type,language_code)
27
- end
28
- end
29
-
30
- private
31
-
32
- def translate(type,language,to_language_code)
33
- translated = translations(type,to_language_code)[language]
34
- translated.to_s.empty? ? nil : translated
35
- end
36
-
37
- def translated(type,language_code)
38
- translations = {}
39
- send("english_#{type}").each do |code,name|
40
- translation = translate(type,name,language_code)
41
- translations[code] = translation ? translation : name
42
- end
43
- translations
44
- end
45
- memoize :translated
46
-
47
- def translations(type,language_code)
48
- begin
49
- data = open(TRANSLATIONS[type]+"#{language_code.downcase}.po").readlines
50
- rescue
51
- raise NoTranslationAvailable.new("for #{type} and language code = #{language_code}")
52
- end
53
-
54
- po_to_hash(data)
55
- end
56
- memoize :translations
57
-
58
- def english_languages
59
- codes = {}
60
- xml(:languages).elements.each('*/iso_639_entry') do |entry|
61
- name = entry.attributes['name'].to_s.gsub("'","\\'")
62
- code = entry.attributes['iso_639_1_code'].to_s.upcase
63
- next if code.empty? or name.empty?
64
- codes[code]=name
65
- end
66
- codes
67
- end
68
- memoize :english_languages
69
-
70
- def english_countries
71
- codes = {}
72
- xml(:countries).elements.each('*/iso_3166_entry') do |entry|
73
- name = entry.attributes['name'].to_s.gsub("'","\\'")
74
- code = entry.attributes['alpha_2_code'].to_s.upcase
75
- codes[code]=name
76
- end
77
- codes
78
- end
79
- memoize :english_countries
80
-
81
- def po_to_hash(data)
82
- names = data.select{|l| l =~ /^msgid/}.map{|line| line.match(/^msgid "(.*?)"/)[1]}
83
- translations = data.select{|l| l =~ /^msgstr/}.map{|line| line.match(/^msgstr "(.*?)"/)[1]}
84
-
85
- translated = {}
86
- names.each_with_index do |name,index|
87
- translated[name]=translations[index]
88
- end
89
- translated
90
- end
91
-
92
- def xml(type)
93
- xml = open(XML_CODES[type]).read
94
- REXML::Document.new(xml)
95
- end
96
- end
97
- end
@@ -1,23 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'..',"spec_helper")
2
- require 'i18n_data/file_data_provider'
3
-
4
- describe I18nData::FileDataProvider do
5
- before do
6
- `rm -f #{I18nData::FileDataProvider.send(:cache_for,"XX","YY")}`
7
- end
8
-
9
- def read(x,y)
10
- I18nData::FileDataProvider.codes(x,y)
11
- end
12
-
13
- it "preserves data when writing and then reading" do
14
- data = {"x"=>"y","z"=>"w"}
15
- I18nData::FileDataProvider.send(:write_to_file,data,"XX","YY")
16
- read("XX","YY").should == data
17
- end
18
-
19
- it "does not write empty data sets" do
20
- I18nData::FileDataProvider.send(:write_to_file,{},"XX","YY")
21
- lambda{read("XX","YY")}.should raise_error I18nData::NoTranslationAvailable
22
- end
23
- end
@@ -1,44 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'..',"spec_helper")
2
- require 'i18n_data/live_data_provider'
3
-
4
- describe I18nData::LiveDataProvider do
5
- describe :po_to_hash do
6
- def po_to_hash(text)
7
- I18nData::LiveDataProvider.send(:po_to_hash,text)
8
- end
9
-
10
- it "parses po file into translations" do
11
- text = <<EOF
12
- # come comment msgstr
13
- msgid "one"
14
- msgstr "1"
15
- EOF
16
- po_to_hash(text).should == {"one"=>"1"}
17
- end
18
-
19
- it "keeps order of translations" do
20
- text = <<EOF
21
- msgid "one"
22
- msgstr "1"
23
- msgid "two"
24
- msgstr ""
25
- msgid "three"
26
- msgstr "3"
27
- EOF
28
- po_to_hash(text).should == {"one"=>"1","two"=>"","three"=>"3"}
29
- end
30
-
31
- it "finds x-line long translations" do
32
- pending
33
- text = <<EOF
34
- #. name for chu, cu
35
- msgid ""
36
- "Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church "
37
- "Slavonic"
38
- msgstr "Kirchenslavisch"
39
- EOF
40
- long_name = "Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic"
41
- po_to_hash(text)[long_name].should == "Kirchenslavisch"
42
- end
43
- end
44
- end
@@ -1,101 +0,0 @@
1
- require File.expand_path("spec_helper", File.dirname(__FILE__))
2
-
3
- NUM_2_LETTER_LANGUAGES = 185
4
- NUM_COUNTRIES = 246
5
-
6
- describe I18nData do
7
- require "i18n_data/live_data_provider"
8
- require "i18n_data/file_data_provider"
9
-
10
- [I18nData::LiveDataProvider,I18nData::FileDataProvider].each do |provider|
11
- describe "using #{provider}" do
12
- before :all do
13
- I18nData.data_provider = provider
14
- end
15
-
16
- describe :languages do
17
- it "raises NoTranslationAvailable for unavailable languages" do
18
- lambda{I18nData.languages('XX')}.should raise_error(I18nData::NoTranslationAvailable)
19
- end
20
-
21
- describe :english do
22
- it "does not contain blanks" do
23
- I18nData.languages.detect {|k,v| k.blank? or v.blank?}.should == nil
24
- end
25
-
26
- it "has english as default" do
27
- I18nData.languages['DE'].should == 'German'
28
- end
29
-
30
- it "contains all languages" do
31
- I18nData.languages.size.should == NUM_2_LETTER_LANGUAGES
32
- end
33
- end
34
-
35
- describe :translated do
36
- it "is translated" do
37
- I18nData.languages('DE')['DE'].should == 'Deutsch'
38
- end
39
-
40
- it "contains all languages" do
41
- I18nData.languages('DE').size.should == NUM_2_LETTER_LANGUAGES
42
- end
43
-
44
- it "has english names for not-translateable languages" do
45
- I18nData.languages('IS')['HA'].should == I18nData.languages['HA']
46
- end
47
-
48
- it "does not contain blanks" do
49
- I18nData.languages('GL').detect {|k,v| k.blank? or v.blank?}.should == nil
50
- end
51
-
52
- it "is written in unicode" do
53
- I18nData.languages('DE')['DA'].should == 'Dänisch'
54
- end
55
- end
56
- end
57
-
58
- describe :countries do
59
- describe :english do
60
- it "has english as default" do
61
- I18nData.countries['DE'].should == 'Germany'
62
- end
63
-
64
- it "does not contain blanks" do
65
- I18nData.countries.detect {|k,v| k.blank? or v.blank?}.should == nil
66
- end
67
-
68
- it "contains all countries" do
69
- I18nData.countries.size.should == NUM_COUNTRIES
70
- end
71
- end
72
-
73
- describe :translated do
74
- it "is translated" do
75
- I18nData.countries('DE')['DE'].should == 'Deutschland'
76
- end
77
-
78
- it "contains all countries" do
79
- I18nData.countries('DE').size.should == NUM_COUNTRIES
80
- end
81
-
82
- it "has english names for not-translateable countries" do
83
- I18nData.countries('IS')['PK'].should == I18nData.countries['PK']
84
- end
85
-
86
- it "does not contain blanks" do
87
- I18nData.countries('GL').detect {|k,v| k.blank? or v.blank?}.should == nil
88
- end
89
-
90
- it "is written in unicode" do
91
- I18nData.countries('DE')['DK'].should == 'Dänemark'
92
- end
93
- end
94
- end
95
- end
96
- end
97
-
98
- it "has a VERSION" do
99
- I18nData::VERSION.should =~ /^\d+\.\d+\.\d+$/
100
- end
101
- end