ar_serialized_array 0.2.4 → 0.3.0

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.
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