i18n-inflector 1.0.0 → 1.0.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+ #
3
+ # Author:: Paweł Wilk (mailto:pw@gnu.org)
4
+ # Copyright:: (c) 2011 by Paweł Wilk
5
+ # License:: This program is licensed under the terms of {file:LGPL-LICENSE GNU Lesser General Public License} or {file:COPYING Ruby License}.
6
+ #
7
+ # This file contains version information.
8
+
9
+ module I18n
10
+ module Inflector
11
+
12
+ # @private
13
+ DEVELOPER = 'Paweł Wilk'
14
+ # @private
15
+ EMAIL = 'pw@gnu.org'
16
+ # @private
17
+ VERSION = '1.0.10'
18
+ # @private
19
+ NAME = 'i18n-inflector'
20
+ # @private
21
+ SUMMARY = 'Simple Inflector backend module for I18n'
22
+ # @private
23
+ URL = 'https://rubygems.org/gems/i18n-inflector/'
24
+ # @private
25
+ DESCRIPTION = 'This backend module for I18n inflects translations using pattern interpolation.'
26
+
27
+ end
28
+ end
@@ -1,5 +1,10 @@
1
+ # encoding: utf-8
2
+
1
3
  require 'i18n'
2
- require 'i18n-inflector/inflector.rb'
3
- require 'i18n-inflector/shortcuts.rb'
4
+ require 'i18n-inflector/version'
5
+ require 'i18n-inflector/errors'
6
+ require 'i18n-inflector/inflector'
4
7
 
5
8
  I18n::Backend::Simple.send(:include, I18n::Backend::Inflector)
9
+
10
+ require 'i18n-inflector/shortcuts'
@@ -50,7 +50,7 @@ class I18nBackendInflectionTest < Test::Unit::TestCase
50
50
  store_translations(:xx, :i18n => { :inflections => { :gender => { :o => 'other' }, :person => { :o => 'o' }}})
51
51
  end
52
52
  end
53
-
53
+
54
54
  test "inflector store_translations: raises I18n::BadInflectionAlias when bad alias is given" do
55
55
  assert_raise I18n::BadInflectionAlias do
56
56
  store_translations(:xx, :i18n => { :inflections => { :gender => { :o => '@nonexistant' }}})
@@ -67,6 +67,18 @@ class I18nBackendInflectionTest < Test::Unit::TestCase
67
67
  end
68
68
  end
69
69
 
70
+ test "inflector translate: allows pattern-only translation data" do
71
+ store_translations(:xx, 'clear_welcome' => '@{f:Lady|m:Sir|n:You|All}')
72
+ assert_equal 'Lady', I18n.t('clear_welcome', :gender => 'f', :locale => :xx)
73
+ end
74
+
75
+ test "inflector translate: allows patterns to be escaped using @@ or \\@" do
76
+ store_translations(:xx, 'escaped_welcome' => '@@{f:AAAAA|m:BBBBB}')
77
+ assert_equal '@{f:AAAAA|m:BBBBB}', I18n.t('escaped_welcome', :gender => 'f', :locale => :xx)
78
+ store_translations(:xx, 'escaped_welcome' => '\@{f:AAAAA|m:BBBBB}')
79
+ assert_equal '@{f:AAAAA|m:BBBBB}', I18n.t('escaped_welcome', :gender => 'f', :locale => :xx)
80
+ end
81
+
70
82
  test "inflector translate: picks Lady for :f gender option" do
71
83
  assert_equal 'Dear Lady!', I18n.t('welcome', :gender => :f, :locale => :xx)
72
84
  end
@@ -74,35 +86,45 @@ class I18nBackendInflectionTest < Test::Unit::TestCase
74
86
  test "inflector translate: picks Lady for f gender option" do
75
87
  assert_equal 'Dear Lady!', I18n.t('welcome', :gender => 'f', :locale => :xx)
76
88
  end
77
-
89
+
78
90
  test "inflector translate: picks Sir for :m gender option" do
79
91
  assert_equal 'Dear Sir!', I18n.t('welcome', :gender => :m, :locale => :xx)
80
92
  end
81
-
93
+
82
94
  test "inflector translate: picks Sir for :masculine gender option" do
83
95
  assert_equal 'Dear Sir!', I18n.t('welcome', :gender => :masculine, :locale => :xx)
84
96
  end
85
-
97
+
86
98
  test "inflector translate: picks Sir for masculine gender option" do
87
99
  assert_equal 'Dear Sir!', I18n.t('welcome', :gender => 'masculine', :locale => :xx)
88
100
  end
89
-
101
+
102
+ test "inflector translate: picks an empty string when no default token is present and no free text is there" do
103
+ store_translations(:xx, 'none_welcome' => '@{n:You|f:Lady}')
104
+ assert_equal '', I18n.t('none_welcome', :gender => 'masculine', :locale => :xx)
105
+ end
106
+
107
+ test "inflector translate: allows multiple patterns in the same data" do
108
+ store_translations(:xx, 'multiple_welcome' => '@@{f:AAAAA|m:BBBBB} @{f:Lady|m:Sir|n:You|All} @{f:Lady|All}@{m:Sir|All}@{n:You|All}')
109
+ assert_equal '@{f:AAAAA|m:BBBBB} Sir AllSirAll', I18n.t('multiple_welcome', :gender => 'masculine', :locale => :xx)
110
+ end
111
+
90
112
  test "inflector translate: falls back to default for the unknown gender option" do
91
113
  assert_equal 'Dear You!', I18n.t('welcome', :gender => :unknown, :locale => :xx)
92
114
  end
93
-
115
+
94
116
  test "inflector translate: falls back to default for a gender option set to nil" do
95
117
  assert_equal 'Dear You!', I18n.t('welcome', :gender => nil, :locale => :xx)
96
118
  end
97
-
119
+
98
120
  test "inflector translate: falls back to default for no gender option" do
99
121
  assert_equal 'Dear You!', I18n.t('welcome', :locale => :xx)
100
122
  end
101
-
123
+
102
124
  test "inflector translate: falls back to free text for the proper gender option but not present in pattern" do
103
125
  assert_equal 'Dear All!', I18n.t('welcome', :gender => :s, :locale => :xx)
104
126
  end
105
-
127
+
106
128
  test "inflector translate: falls back to free text when :inflector_unknown_defaults is false" do
107
129
  assert_equal 'Dear All!', I18n.t('welcome', :gender => :unknown, :locale => :xx, :inflector_unknown_defaults => false)
108
130
  assert_equal 'Dear All!', I18n.t('welcome', :gender => :s, :locale => :xx, :inflector_unknown_defaults => false)
@@ -112,12 +134,12 @@ class I18nBackendInflectionTest < Test::Unit::TestCase
112
134
  test "inflector translate: falls back to default for no gender option when :inflector_unknown_defaults is false" do
113
135
  assert_equal 'Dear You!', I18n.t('welcome', :locale => :xx, :inflector_unknown_defaults => false)
114
136
  end
115
-
137
+
116
138
  test "inflector translate: falls back to free text for the unknown gender option when global inflector_unknown_defaults is false" do
117
139
  I18n.backend.inflector_unknown_defaults = false
118
140
  assert_equal 'Dear All!', I18n.t('welcome', :gender => :unknown, :locale => :xx)
119
141
  end
120
-
142
+
121
143
  test "inflector translate: falls back to default for the unknown gender option when global inflector_unknown_defaults is overriden" do
122
144
  I18n.backend.inflector_unknown_defaults = false
123
145
  assert_equal 'Dear You!', I18n.t('welcome', :gender => :unknown, :locale => :xx, :inflector_unknown_defaults => true)
@@ -179,6 +201,35 @@ class I18nBackendInflectionTest < Test::Unit::TestCase
179
201
  assert_equal [:xx], I18n.backend.inflected_locales(:gender)
180
202
  end
181
203
 
204
+ test "inflector inflected_locale?: checks if a language supports inflection" do
205
+ assert_equal true, I18n.backend.inflected_locale?(:xx)
206
+ assert_equal false, I18n.backend.inflected_locale?(:pl)
207
+ I18n.locale = :xx
208
+ assert_equal true, I18n.backend.inflected_locale?
209
+ I18n.locale = :pl
210
+ assert_equal false, I18n.backend.inflected_locale?
211
+ end
212
+
213
+ test "inflector inflection_kind: checks what is the inflection kind of the given token" do
214
+ assert_equal :gender, I18n.backend.inflection_kind(:neuter, :xx)
215
+ assert_equal :gender, I18n.backend.inflection_kind(:f, :xx)
216
+ assert_equal :person, I18n.backend.inflection_kind(:you, :xx)
217
+ I18n.locale = :xx
218
+ assert_equal :gender, I18n.backend.inflection_kind(:neuter)
219
+ assert_equal :gender, I18n.backend.inflection_kind(:f)
220
+ assert_equal :person, I18n.backend.inflection_kind(:you)
221
+ assert_equal nil, I18n.backend.inflection_kind(:faafaffafafa)
222
+ end
223
+
224
+ test "inflector inflection_true_token: gets true token for a given token name" do
225
+ assert_equal :n, I18n.backend.inflection_true_token(:neuter, :xx)
226
+ assert_equal :f, I18n.backend.inflection_true_token(:f, :xx)
227
+ I18n.locale = :xx
228
+ assert_equal :n, I18n.backend.inflection_true_token(:neuter)
229
+ assert_equal :f, I18n.backend.inflection_true_token(:f)
230
+ assert_equal nil, I18n.backend.inflection_true_token(:faafaffafafa)
231
+ end
232
+
182
233
  test "inflector available_inflection_kinds: lists inflection kinds" do
183
234
  assert_not_nil I18n.backend.available_inflection_kinds(:xx)
184
235
  assert_equal [:gender,:person], I18n.backend.available_inflection_kinds(:xx).sort{|k,v| k.to_s<=>v.to_s}
@@ -230,7 +281,7 @@ class I18nBackendInflectionTest < Test::Unit::TestCase
230
281
  assert_equal a, I18n.backend.inflection_aliases(:gender)
231
282
  assert_equal a, I18n.backend.inflection_aliases
232
283
  end
233
-
284
+
234
285
  test "inflector inflection_token_description: returns token's description" do
235
286
  assert_equal "male", I18n.backend.inflection_token_description(:m, :xx)
236
287
  I18n.locale = :xx
@@ -238,7 +289,7 @@ class I18nBackendInflectionTest < Test::Unit::TestCase
238
289
  assert_equal nil, I18n.backend.inflection_token_description(:nonexistent, :xx)
239
290
  assert_equal "neuter", I18n.backend.inflection_token_description(:neutral, :xx)
240
291
  end
241
-
292
+
242
293
  test "inflector inflection_is_alias?: tests whether a token is an alias" do
243
294
  assert_equal true, I18n.backend.inflection_is_alias?(:neutral, :xx)
244
295
  assert_equal false, I18n.backend.inflection_is_alias?(:you, :xx)
data/test/test_helper.rb CHANGED
@@ -1,8 +1,6 @@
1
- require 'rubygems'
2
1
  require 'test/unit'
3
- require 'bundler/setup'
4
- require 'i18n-inflector'
5
2
  require 'test_declarative'
3
+ require 'i18n-inflector'
6
4
 
7
5
  class Test::Unit::TestCase
8
6
  def teardown
data.tar.gz.sig CHANGED
Binary file
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
+ - 10
9
+ version: 1.0.10
10
10
  platform: ruby
11
11
  authors:
12
12
  - "Pawe\xC5\x82 Wilk"
@@ -34,12 +34,11 @@ cert_chain:
34
34
  NK3TIZaPCh1S2/ES6wXNvjQ+5EnEEL9j/pSEop9DYEBPaM2WDVR5i0jJTAaRWw==
35
35
  -----END CERTIFICATE-----
36
36
 
37
- date: 2010-12-22 00:00:00 +01:00
37
+ date: 2011-01-10 00:00:00 +01:00
38
38
  default_executable:
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: i18n
42
- prerelease: false
43
42
  requirement: &id001 !ruby/object:Gem::Requirement
44
43
  none: false
45
44
  requirements:
@@ -47,15 +46,30 @@ dependencies:
47
46
  - !ruby/object:Gem::Version
48
47
  segments:
49
48
  - 0
50
- - 5
51
- - 0
52
- version: 0.5.0
49
+ - 4
50
+ - 1
51
+ version: 0.4.1
53
52
  type: :runtime
53
+ prerelease: false
54
54
  version_requirements: *id001
55
55
  - !ruby/object:Gem::Dependency
56
- name: test_declarative
57
- prerelease: false
56
+ name: hoe-yard
58
57
  requirement: &id002 !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ segments:
63
+ - 0
64
+ - 1
65
+ - 2
66
+ version: 0.1.2
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *id002
70
+ - !ruby/object:Gem::Dependency
71
+ name: test_declarative
72
+ requirement: &id003 !ruby/object:Gem::Requirement
59
73
  none: false
60
74
  requirements:
61
75
  - - ">="
@@ -66,11 +80,71 @@ dependencies:
66
80
  - 4
67
81
  version: 0.0.4
68
82
  type: :development
69
- version_requirements: *id002
83
+ prerelease: false
84
+ version_requirements: *id003
70
85
  - !ruby/object:Gem::Dependency
71
- name: hoe
86
+ name: yard
87
+ requirement: &id004 !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ segments:
93
+ - 0
94
+ - 6
95
+ - 4
96
+ version: 0.6.4
97
+ type: :development
72
98
  prerelease: false
73
- requirement: &id003 !ruby/object:Gem::Requirement
99
+ version_requirements: *id004
100
+ - !ruby/object:Gem::Dependency
101
+ name: bundler
102
+ requirement: &id005 !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ segments:
108
+ - 1
109
+ - 0
110
+ - 7
111
+ version: 1.0.7
112
+ type: :development
113
+ prerelease: false
114
+ version_requirements: *id005
115
+ - !ruby/object:Gem::Dependency
116
+ name: hoe-bundler
117
+ requirement: &id006 !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ segments:
123
+ - 1
124
+ - 0
125
+ - 0
126
+ version: 1.0.0
127
+ type: :development
128
+ prerelease: false
129
+ version_requirements: *id006
130
+ - !ruby/object:Gem::Dependency
131
+ name: hoe-yard
132
+ requirement: &id007 !ruby/object:Gem::Requirement
133
+ none: false
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ segments:
138
+ - 0
139
+ - 1
140
+ - 2
141
+ version: 0.1.2
142
+ type: :development
143
+ prerelease: false
144
+ version_requirements: *id007
145
+ - !ruby/object:Gem::Dependency
146
+ name: hoe
147
+ requirement: &id008 !ruby/object:Gem::Requirement
74
148
  none: false
75
149
  requirements:
76
150
  - - ">="
@@ -81,8 +155,9 @@ dependencies:
81
155
  - 0
82
156
  version: 2.8.0
83
157
  type: :development
84
- version_requirements: *id003
85
- description: This backend module for I18n allows you to inflect translations by interpolating patterns.
158
+ prerelease: false
159
+ version_requirements: *id008
160
+ description: This backend module for I18n inflects translations using pattern interpolation.
86
161
  email:
87
162
  - pw@gnu.org
88
163
  executables: []
@@ -91,42 +166,38 @@ extensions: []
91
166
 
92
167
  extra_rdoc_files:
93
168
  - Manifest.txt
94
- - docs/README
95
- - docs/LGPL-LICENSE
96
- - docs/LEGAL
97
- - docs/HISTORY
98
- - docs/COPYING
99
169
  files:
170
+ - .yardopts
100
171
  - ChangeLog
101
172
  - Gemfile
102
173
  - LGPL-LICENSE
103
174
  - Manifest.txt
104
- - README.textile
175
+ - README.rdoc
105
176
  - Rakefile
177
+ - ci/i18n-inflector.gemspec
106
178
  - docs/COPYING
107
179
  - docs/HISTORY
108
180
  - docs/LEGAL
109
181
  - docs/LGPL-LICENSE
110
- - docs/README
182
+ - docs/TODO
111
183
  - docs/rdoc.css
112
184
  - lib/i18n-inflector.rb
185
+ - lib/i18n-inflector/errors.rb
113
186
  - lib/i18n-inflector/inflector.rb
114
187
  - lib/i18n-inflector/long_comments.rb
115
188
  - lib/i18n-inflector/shortcuts.rb
116
- - test/all.rb
117
- - test/backend/inflection_test.rb
118
- - test/run_all.rb
189
+ - lib/i18n-inflector/version.rb
190
+ - test/inflector_test.rb
119
191
  - test/test_helper.rb
120
- has_rdoc: true
192
+ has_rdoc: yard
121
193
  homepage: https://rubygems.org/gems/i18n-inflector/
122
194
  licenses: []
123
195
 
124
196
  post_install_message:
125
197
  rdoc_options:
126
- - --main
127
- - docs/README
128
198
  - --title
129
- - Simple Inflector for I18n
199
+ - I18nInflector Documentation
200
+ - --quiet
130
201
  require_paths:
131
202
  - lib
132
203
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -134,6 +205,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
134
205
  requirements:
135
206
  - - ">="
136
207
  - !ruby/object:Gem::Version
208
+ hash: 315809163009900176
137
209
  segments:
138
210
  - 0
139
211
  version: "0"
@@ -142,6 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
214
  requirements:
143
215
  - - ">="
144
216
  - !ruby/object:Gem::Version
217
+ hash: 315809163009900176
145
218
  segments:
146
219
  - 0
147
220
  version: "0"
@@ -153,4 +226,4 @@ signing_key:
153
226
  specification_version: 3
154
227
  summary: Simple Inflector backend module for I18n
155
228
  test_files:
156
- - test/test_helper.rb
229
+ - test/inflector_test.rb
metadata.gz.sig CHANGED
Binary file
data/README.textile DELETED
@@ -1,27 +0,0 @@
1
- h1. Ruby I18n-inflector
2
-
3
- Simple inflection support for Ruby's I18n.
4
-
5
- h2. Installation
6
-
7
- gem install i18n-inflector
8
-
9
- h2. Tests
10
-
11
- You can run tests both with
12
-
13
- * `rake test` or just `rake`
14
- * run any test file directly, e.g. `ruby -Ilib -Itest test/backend/inflection_test.rb`
15
- * run all tests with `ruby -Ilib -Itest test/all.rb`
16
-
17
- You can run all tests against all Gemfiles with
18
-
19
- * `ruby test/run_all.rb`
20
-
21
- h2. Authors
22
-
23
- * "Paweł Wilk":http://randomseed.pl
24
-
25
- h2. License
26
-
27
- LGPL License. See the included docs/LGPL-LICENSE file.