i18n-inflector 2.2.0 → 2.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.
@@ -14,7 +14,7 @@ module I18n
14
14
  # @private
15
15
  EMAIL = 'pw@gnu.org'
16
16
  # @private
17
- VERSION = '2.2.0'
17
+ VERSION = '2.3.0'
18
18
  # @private
19
19
  NAME = 'i18n-inflector'
20
20
  # @private
@@ -194,9 +194,11 @@ class I18nInflectorTest < Test::Unit::TestCase
194
194
  end
195
195
 
196
196
  test "backend inflector translate: falls back to default token for ommited gender option when :inflector_excluded_defaults is true" do
197
- assert_equal 'Dear You!', I18n.t('welcome', :gender => :s, :locale => :xx, :inflector_excluded_defaults => true)
197
+ assert_equal 'Dear You!', I18n.t('welcome', :gender => :s, :locale => :xx, :inflector_excluded_defaults => true)
198
+ assert_equal 'Dear You!', I18n.t('named_welcome', :@gender => :s, :locale => :xx, :inflector_excluded_defaults => true)
198
199
  I18n.inflector.options.excluded_defaults = true
199
- assert_equal 'Dear You!', I18n.t('welcome', :gender => :s, :locale => :xx)
200
+ assert_equal 'Dear You!', I18n.t('welcome', :gender => :s, :locale => :xx)
201
+ assert_equal 'Dear You!', I18n.t('named_welcome', :gender => :s, :locale => :xx)
200
202
  end
201
203
 
202
204
  test "backend inflector translate: falls back to free text for ommited gender option when :inflector_excluded_defaults is false" do
@@ -316,9 +318,20 @@ class I18nInflectorTest < Test::Unit::TestCase
316
318
  end
317
319
  end
318
320
 
321
+ test "backend inflector translate: works with wildcard tokens" do
322
+ store_translations(:xx, 'hi' => 'Dear @{n:You|*:Any|All}!')
323
+ assert_equal 'Dear You!', I18n.t('hi', :gender => :n, :locale => :xx)
324
+ assert_equal 'Dear Any!', I18n.t('hi', :gender => :m, :locale => :xx)
325
+ assert_equal 'Dear Any!', I18n.t('hi', :gender => :f, :locale => :xx)
326
+ assert_equal 'Dear You!', I18n.t('hi', :gender => :xxxxxx, :locale => :xx)
327
+ assert_equal 'Dear You!', I18n.t('hi', :locale => :xx)
328
+ end
329
+
319
330
  test "backend inflector translate: works with loud tokens" do
320
331
  store_translations(:xx, 'hi' => 'Dear @{m:~|n:You|All}!')
321
332
  assert_equal 'Dear male!', I18n.t('hi', :gender => :m, :locale => :xx)
333
+ store_translations(:xx, 'hi' => 'Dear @gender{m:~|n:You|All}!')
334
+ assert_equal 'Dear male!', I18n.t('hi', :gender => :m, :locale => :xx)
322
335
  store_translations(:xx, 'hi' => 'Dear @{masculine:~|n:You|All}!')
323
336
  assert_equal 'Dear male!', I18n.t('hi', :gender => :m, :locale => :xx, :inflector_aliased_patterns => true)
324
337
  store_translations(:xx, 'hi' => 'Dear @{f,m:~|n:You|All}!')
@@ -329,6 +342,23 @@ class I18nInflectorTest < Test::Unit::TestCase
329
342
  assert_equal 'Dear ~!', I18n.t('hi', :gender => :m, :locale => :xx)
330
343
  store_translations(:xx, 'hi' => 'Dear @{!n:\\\\~|n:You|All}!')
331
344
  assert_equal 'Dear \\~!', I18n.t('hi', :gender => :m, :locale => :xx)
345
+ store_translations(:xx, 'hi' => 'Dear @{*:~|n:You|All}!')
346
+ assert_equal 'Dear male!', I18n.t('hi', :gender => :m, :locale => :xx)
347
+ store_translations(:xx, 'hi' => 'Dear @{*:~|n:You|All}!')
348
+ assert_equal 'Dear neuter!', I18n.t('hi', :locale => :xx)
349
+ store_translations(:xx, 'hi' => 'Dear @{m:abc|*:~|n:You|All}!')
350
+ assert_equal 'Dear neuter!', I18n.t('hi', :locale => :xx)
351
+ store_translations(:xx, 'hi' => 'Dear @{*:~|All}!')
352
+ assert_equal 'Dear All!', I18n.t('hi', :gender => :unasdasd, :locale => :xx)
353
+ store_translations(:xx, 'hi' => 'Dear @{*:~|All}!')
354
+ assert_equal 'Dear All!', I18n.t('hi', :gender => nil, :locale => :xx)
355
+ store_translations(:xx, 'hi' => 'Dear @{*:~|All}!')
356
+ assert_equal 'Dear neuter!', I18n.t('hi', :gender => :n, :locale => :xx)
357
+ store_translations(:xx, :i18n => { :inflections => { :@tense => { :s => 's', :now => 'now', :past => 'later', :default => 'now' }}})
358
+ store_translations(:xx, 'hi' => 'Dear @gender+tense{*+*:~|All}!')
359
+ assert_equal 'Dear male now!', I18n.t('hi', :gender => :m, :person => :i, :locale => :xx)
360
+ assert_equal 'Dear neuter now!', I18n.t('hi', :locale => :xx)
361
+ assert_equal 'Dear neuter later!', I18n.t('hi', :tense => :past, :locale => :xx)
332
362
  end
333
363
 
334
364
  test "backend inflector translate: works with tokens separated by commas" do
@@ -376,6 +406,31 @@ class I18nInflectorTest < Test::Unit::TestCase
376
406
  assert_equal 'Dear Sir!', I18n.t('hi', :gender => :masculine, :locale => :xx)
377
407
  end
378
408
 
409
+ test "backend inflector translate: works with Method and Proc object given as inflection options" do
410
+ def femme
411
+ kind, locale = yield
412
+ (locale == :xx && kind == :gender) ? :f : :m
413
+ end
414
+ def excluded
415
+ :s
416
+ end
417
+ def bad_method(a,b,c)
418
+ :m
419
+ end
420
+ procek = method(:femme)
421
+ procun = method(:excluded)
422
+ badmet = method(:bad_method)
423
+ assert_equal 'Dear Lady!', I18n.t('welcome', :gender => procek, :locale => :xx, :inflector_raises => true)
424
+ assert_equal 'Dear Lady!', I18n.t('named_welcome', :gender => procek, :locale => :xx, :inflector_raises => true)
425
+ assert_equal 'Dear Sir!', I18n.t('named_welcome', :@gender => procek, :locale => :xx, :inflector_raises => true)
426
+ assert_equal 'Dear You!', I18n.t('named_welcome', :@gender => procun, :locale => :xx, :inflector_excluded_defaults => true)
427
+ assert_equal 'Dear All!', I18n.t('named_welcome', :@gender => procun, :locale => :xx, :inflector_excluded_defaults => false)
428
+ assert_raise(ArgumentError) { I18n.t('named_welcome', :@gender => badmet, :locale => :xx, :inflector_raises => true) }
429
+ assert_equal 'Dear Sir!', I18n.t('named_welcome', :@gender => lambda{|k,l|:m}, :locale => :xx, :inflector_raises => true)
430
+ assert_equal 'Dear Lady!', I18n.t('welcome', :gender => lambda{|k,l| k==:gender ? :f : :s},
431
+ :locale => :xx, :inflector_raises => true)
432
+ end
433
+
379
434
  test "backend inflector translate: recognizes named patterns and strict kinds" do
380
435
  store_translations(:xx, :i18n => { :inflections => { :@gender => { :s => 'sir', :o => 'other', :s => 'a', :n => 'n', :default => 'n' }}})
381
436
  store_translations(:xx, 'hi' => 'Dear @gender{s:Sir|o:Other|n:You|All}!')
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 2
7
- - 2
7
+ - 3
8
8
  - 0
9
- version: 2.2.0
9
+ version: 2.3.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - "Pawe\xC5\x82 Wilk"
@@ -34,7 +34,7 @@ cert_chain:
34
34
  NK3TIZaPCh1S2/ES6wXNvjQ+5EnEEL9j/pSEop9DYEBPaM2WDVR5i0jJTAaRWw==
35
35
  -----END CERTIFICATE-----
36
36
 
37
- date: 2011-02-09 00:00:00 +01:00
37
+ date: 2011-02-15 00:00:00 +01:00
38
38
  default_executable:
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
@@ -166,8 +166,8 @@ files:
166
166
  - docs/HISTORY
167
167
  - docs/LEGAL
168
168
  - docs/LGPL
169
- - docs/RELATIONS
170
169
  - docs/TODO
170
+ - docs/USAGE
171
171
  - docs/rdoc.css
172
172
  - lib/i18n-inflector.rb
173
173
  - lib/i18n-inflector/api.rb
@@ -202,7 +202,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
202
202
  requirements:
203
203
  - - ">="
204
204
  - !ruby/object:Gem::Version
205
- hash: -1312043178377028386
205
+ hash: 328005108320986089
206
206
  segments:
207
207
  - 0
208
208
  version: "0"
metadata.gz.sig CHANGED
Binary file
data/docs/RELATIONS DELETED
@@ -1,28 +0,0 @@
1
- == This library contains
2
-
3
- * Module {I18n::Inflector} containing everything
4
- * Class {I18n::Inflector::API} used to create inflector object attached to I18n backend (handles regular and strict kinds)
5
- * Class {I18n::Inflector::API_Strict} which instance is attached to {I18n::Inflector::API} and handles strict kinds
6
- * Class {I18n::Inflector::InflectionData} used to store inflection data for regular kinds and tokens
7
- * Class {I18n::Inflector::InflectionData_Strict} used to store inflection data for strict kinds and tokens
8
- * Class {I18n::Inflector::InflectionOptions} used for keeping switches and options
9
- * Class {I18n::Inflector::LazyHashEnumerator} used to manage lazy evaluation of internal data
10
- * Module {I18n::Backend::Inflector} used to alter methods of {I18n::Backend::Simple}
11
- * Several classes for error reporting
12
-
13
- == Relations
14
-
15
- * {I18n.backend} is the currently used backend and the instance of {I18n::Backend::Simple}
16
- * {I18n.backend.inflector} is the instance of {I18n::Inflector::API} attached to backend
17
- * {I18n.inflector} is the proxy module method that calls inflector for currently used backend {I18n.backend.inflector}
18
- * {I18n.backend.inflector.options} is the instance of {I18n::Inflector::InflectionOptions} and
19
- mainly it controls a behavior of interpolation method
20
- * {I18n.backend.inflector.strict} is the instance of {I18n::Inflector::API_Strict} and handles strict kinds
21
- * {I18n.backend.inflector} uses {I18n.backend.inflector.strict} to access strict kinds when it's needed
22
- * {I18n::Inflector::API} has an instance variable @idb that contains database of inflections indexed by locale
23
- * {I18n::Inflector::API_Strict} has an instance variable @idb that contains database of inflections indexed by locale
24
- * Translation databases are kind of {I18n::Inflector::InflectionData} and {I18n::Inflector::InflectionData_Strict}
25
- * When initializing translations a method from {I18n::Backend::Simple} (altered by {I18n::Backend::Inflector})
26
- takes the loaded data, processes their <tt>i18n.inflections</tt> scope for each locale and creates database
27
- objects which are kind of {I18n::Inflector::InflectionData} and {I18n::Inflector::InflectionData_Strict}. That
28
- objects are then attached to instances of {I18n::Inflector::API} and {I18n::Inflector::API_Strict}.