r18n-rails-api 2.2.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5deefc933007b37a5ba454c480ab0afc23fc9314
4
- data.tar.gz: 52d1e20a21ac85503dbb03e977368cbd1cbcfafe
2
+ SHA256:
3
+ metadata.gz: 4e6b0328797e38e0c254f9cb16d766dba6e25cfec33f159b047962a0d8964b7f
4
+ data.tar.gz: f28b4872106cf2ac7df1fd1af0f8a528154be49fb8f1730fd2d900718df094b1
5
5
  SHA512:
6
- metadata.gz: ff65e2142af36b8acb39a60a20f0096a6fd86c447251d66db261c0c5c8e4bc0b90cf1e6d081ac346c744bcb2c95b232e60e746b7639ee0ca538aa5a6caa69670
7
- data.tar.gz: d9c96fa2bf3d9ec94a91fcf30493a5eeae4b18cdbc2d3a69466e0a3fe9ac9d6ff0d6e131b76b648391fbeb26080b7540e86b411fdb57bb1c78757faa4db61ae9
6
+ metadata.gz: 1c18011d243cde29d90eace25a276c5d2de4a41c3849614c9759921c7c36b9ccf6f3f4b9b0b05b8c70acaa98b9e06ce15fd6d3361e78a3b5662c4c2a98f47e70
7
+ data.tar.gz: 915a2058918ec20875a6aa32fb763afd16cb08353eaa00f0639568d4062668f8f6ddee42f98dca1f68401f6b288251d0d646771b584411ae582d106383ee9d0b
data/.rspec CHANGED
@@ -1 +1 @@
1
- --format documentation --colour
1
+ --format documentation --colour --warnings --require spec_helper
data/Rakefile CHANGED
@@ -1,11 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/setup'
2
4
  Bundler::GemHelper.install_tasks
3
5
 
4
6
  require 'rspec/core/rake_task'
5
7
  RSpec::Core::RakeTask.new
6
- task :default => :spec
8
+ task default: :spec
7
9
 
8
10
  task :clobber_package do
9
- rm_r 'pkg' rescue nil
11
+ rm_rf 'pkg'
10
12
  end
11
- task :clobber => [:clobber_package]
13
+ task clobber: [:clobber_package]
@@ -1,27 +1,25 @@
1
- =begin
2
- Rails I18n compatibility for R18n.
1
+ # frozen_string_literal: true
3
2
 
4
- Copyright (C) 2009 Andrey “A.I.” Sitnik <andrey@sitnik.ru>
3
+ # Rails I18n compatibility for R18n.
4
+ #
5
+ # Copyright (C) 2009 Andrey “A.I.” Sitnik <andrey@sitnik.ru>
6
+ #
7
+ # This program is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Lesser General Public License as published by
9
+ # the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Lesser General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Lesser General Public License
18
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
5
19
 
6
- This program is free software: you can redistribute it and/or modify
7
- it under the terms of the GNU Lesser General Public License as published by
8
- the Free Software Foundation, either version 3 of the License, or
9
- (at your option) any later version.
10
-
11
- This program is distributed in the hope that it will be useful,
12
- but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- GNU Lesser General Public License for more details.
15
-
16
- You should have received a copy of the GNU Lesser General Public License
17
- along with this program. If not, see <http://www.gnu.org/licenses/>.
18
- =end
19
-
20
- require 'pathname'
21
20
  require 'r18n-core'
22
21
 
23
- dir = Pathname(__FILE__).dirname.expand_path + 'r18n-rails-api'
24
- require dir + 'rails_plural'
25
- require dir + 'filters'
26
- require dir + 'loader'
27
- require dir + 'backend'
22
+ require_relative 'r18n-rails-api/rails_plural'
23
+ require_relative 'r18n-rails-api/filters'
24
+ require_relative 'r18n-rails-api/loader'
25
+ require_relative 'r18n-rails-api/backend'
@@ -1,21 +1,21 @@
1
- =begin
2
- R18n backend for Rails I18n.
3
-
4
- Copyright (C) 2009 Andrey “A.I.” Sitnik <andrey@sitnik.ru>
5
-
6
- This program is free software: you can redistribute it and/or modify
7
- it under the terms of the GNU Lesser General Public License as published by
8
- the Free Software Foundation, either version 3 of the License, or
9
- (at your option) any later version.
10
-
11
- This program is distributed in the hope that it will be useful,
12
- but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- GNU Lesser General Public License for more details.
15
-
16
- You should have received a copy of the GNU Lesser General Public License
17
- along with this program. If not, see <http://www.gnu.org/licenses/>.
18
- =end
1
+ # frozen_string_literal: true
2
+
3
+ # R18n backend for Rails I18n.
4
+ #
5
+ # Copyright (C) 2009 Andrey “A.I.” Sitnik <andrey@sitnik.ru>
6
+ #
7
+ # This program is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Lesser General Public License as published by
9
+ # the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Lesser General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Lesser General Public License
18
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
19
 
20
20
  require 'i18n/backend/transliterator'
21
21
 
@@ -29,7 +29,7 @@ module R18n
29
29
  class Backend
30
30
  include ::I18n::Backend::Transliterator
31
31
 
32
- RESERVED_KEYS = [:scope, :default, :separator]
32
+ RESERVED_KEYS = %i[scope default separator].freeze
33
33
 
34
34
  # Find translation in R18n. It didn’t use +locale+ argument, only current
35
35
  # R18n I18n object. Also it doesn’t support Proc and variables in +default+
@@ -38,12 +38,12 @@ module R18n
38
38
  return key.map { |k| translate(locale, k, options) } if key.is_a?(Array)
39
39
 
40
40
  scope, default, separator = options.values_at(*RESERVED_KEYS)
41
- params = options.reject { |name, value| RESERVED_KEYS.include?(name) }
41
+ params = options.reject { |name, _value| RESERVED_KEYS.include?(name) }
42
42
 
43
43
  result = lookup(locale, scope, key, separator, params)
44
44
 
45
45
  if result.is_a? Untranslated
46
- options = options.reject { |key, value| key == :default }
46
+ options = options.reject { |opts_key, _value| opts_key == :default }
47
47
 
48
48
  default = [] if default.nil?
49
49
  default = [default] unless default.is_a? Array
@@ -73,7 +73,7 @@ module R18n
73
73
  # Support Rails I18n (+:default+, +:short+, +:long+, +:long_ordinal+,
74
74
  # +:only_day+ and +:only_second+) and R18n (+:full+, +:human+, +:standard+
75
75
  # and +:month+) time formatters.
76
- def localize(locale, object, format = :default, options = {})
76
+ def localize(locale, object, format = :default, _options = {})
77
77
  i18n = get_i18n(locale)
78
78
  if format.is_a? Symbol
79
79
  key = format
@@ -117,11 +117,12 @@ module R18n
117
117
 
118
118
  def translation_to_hash(translation)
119
119
  Utils.hash_map(translation.to_hash) do |key, value|
120
- value = if value.is_a? Hash
121
- translation_to_hash(value)
122
- else
123
- format_value(value)
124
- end
120
+ value =
121
+ if value.is_a? Hash
122
+ translation_to_hash(value)
123
+ else
124
+ format_value(value)
125
+ end
125
126
  [key.to_sym, value]
126
127
  end
127
128
  end
@@ -129,23 +130,25 @@ module R18n
129
130
  # Find translation by <tt>scope.key(params)</tt> in current R18n I18n
130
131
  # object.
131
132
  def lookup(locale, scope, key, separator, params)
132
- keys = (Array(scope) + Array(key)).map { |k|
133
- k.to_s.split(separator || ::I18n.default_separator) }.flatten
133
+ keys = (Array(scope) + Array(key))
134
+ .map { |k| k.to_s.split(separator || ::I18n.default_separator) }
135
+ .flatten
134
136
  last = keys.pop.to_sym
135
137
 
136
- result = keys.inject(get_i18n(locale).t) do |node, key|
138
+ result = keys.inject(get_i18n(locale).t) do |node, iterated_key|
137
139
  if node.is_a? TranslatedString
138
- node.get_untranslated(key)
140
+ node.get_untranslated(iterated_key)
139
141
  else
140
- node[key]
142
+ node[iterated_key]
141
143
  end
142
144
  end
143
145
 
144
- result = if result.is_a? TranslatedString
145
- result.get_untranslated(key)
146
- else
147
- result[last, params]
148
- end
146
+ result =
147
+ if result.is_a? TranslatedString
148
+ result.get_untranslated(key)
149
+ else
150
+ result[last, params]
151
+ end
149
152
 
150
153
  format_value(result)
151
154
  end
@@ -1,21 +1,21 @@
1
- =begin
2
- Filters for Rails I18n compatibility for R18n.
1
+ # frozen_string_literal: true
3
2
 
4
- Copyright (C) 2009 Andrey “A.I.” Sitnik <andrey@sitnik.ru>
5
-
6
- This program is free software: you can redistribute it and/or modify
7
- it under the terms of the GNU Lesser General Public License as published by
8
- the Free Software Foundation, either version 3 of the License, or
9
- (at your option) any later version.
10
-
11
- This program is distributed in the hope that it will be useful,
12
- but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- GNU Lesser General Public License for more details.
15
-
16
- You should have received a copy of the GNU Lesser General Public License
17
- along with this program. If not, see <http://www.gnu.org/licenses/>.
18
- =end
3
+ # Filters for Rails I18n compatibility for R18n.
4
+ #
5
+ # Copyright (C) 2009 Andrey “A.I.” Sitnik <andrey@sitnik.ru>
6
+ #
7
+ # This program is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Lesser General Public License as published by
9
+ # the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Lesser General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Lesser General Public License
18
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
19
 
20
20
  # Filter to use Rails named variables:
21
21
  #
@@ -53,14 +53,16 @@ end
53
53
 
54
54
  # Pluralization by named variable <tt>%{count}</tt>.
55
55
  R18n::Filters.add('pl', :named_pluralization) do |content, config, param|
56
- if param.is_a? Hash and param.has_key? :count
56
+ if param.is_a?(Hash) && param.key?(:count)
57
57
  hash = content.to_hash
58
58
  type = config[:locale].pluralize(param[:count])
59
- type = 'n' if not hash.has_key? type
59
+ type = 'n' unless hash.key?(type)
60
60
  hash[type]
61
61
  elsif content.is_a? R18n::UnpluralizetedTranslation
62
- R18n::RailsUnpluralizetedTranslation.new(config[:locale], config[:path],
63
- locale: config[:locale], translations: content.to_hash)
62
+ R18n::RailsUnpluralizetedTranslation.new(
63
+ config[:locale], config[:path],
64
+ locale: config[:locale], translations: content.to_hash
65
+ )
64
66
  else
65
67
  content
66
68
  end
@@ -1,21 +1,21 @@
1
- =begin
2
- Loader for Rails translations.
1
+ # frozen_string_literal: true
3
2
 
4
- Copyright (C) 2009 Andrey “A.I.” Sitnik <andrey@sitnik.ru>
5
-
6
- This program is free software: you can redistribute it and/or modify
7
- it under the terms of the GNU Lesser General Public License as published by
8
- the Free Software Foundation, either version 3 of the License, or
9
- (at your option) any later version.
10
-
11
- This program is distributed in the hope that it will be useful,
12
- but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- GNU Lesser General Public License for more details.
15
-
16
- You should have received a copy of the GNU Lesser General Public License
17
- along with this program. If not, see <http://www.gnu.org/licenses/>.
18
- =end
3
+ # Loader for Rails translations.
4
+ #
5
+ # Copyright (C) 2009 Andrey “A.I.” Sitnik <andrey@sitnik.ru>
6
+ #
7
+ # This program is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Lesser General Public License as published by
9
+ # the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Lesser General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Lesser General Public License
18
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
19
 
20
20
  require 'i18n'
21
21
 
@@ -56,7 +56,7 @@ module R18n
56
56
 
57
57
  # Reload backend if <tt>I18n.load_path</tt> is changed.
58
58
  def reload!
59
- return if @last_path == ::I18n.load_path
59
+ return if defined?(@last_path) && @last_path == ::I18n.load_path
60
60
  @last_path = ::I18n.load_path.clone
61
61
  @backend.reload!
62
62
  @backend.send(:init_translations)
@@ -69,8 +69,8 @@ module R18n
69
69
  end
70
70
 
71
71
  # Is another +loader+ is also load Rails translations.
72
- def ==(loader)
73
- self.class == loader.class
72
+ def ==(other)
73
+ self.class == other.class
74
74
  end
75
75
 
76
76
  protected
@@ -80,14 +80,17 @@ module R18n
80
80
  if value.is_a? Hash
81
81
  if value.empty?
82
82
  value
83
- elsif value.keys.inject(true) { |a, i| a and RailsPlural.is_rails? i }
84
- Typed.new('pl', R18n::Utils.hash_map(value) { |k, v|
85
- [RailsPlural.to_r18n(k), transform(v)]
86
- })
83
+ elsif value.keys.inject(true) { |a, i| a && RailsPlural.is_rails?(i) }
84
+ Typed.new(
85
+ 'pl',
86
+ R18n::Utils.hash_map(value) do |k, v|
87
+ [RailsPlural.to_r18n(k), transform(v)]
88
+ end
89
+ )
87
90
  else
88
91
  Utils.hash_map(value) { |k, v| [k.to_s, transform(v)] }
89
92
  end
90
- elsif @private_type_class and value.is_a? @private_type_class
93
+ elsif defined?(@private_type_class) && value.is_a?(@private_type_class)
91
94
  Typed.new(value.type_id, value.value)
92
95
  else
93
96
  value
@@ -1,28 +1,28 @@
1
- =begin
2
- Converter between R18n and Rails I18n plural keys.
1
+ # frozen_string_literal: true
3
2
 
4
- Copyright (C) 2009 Andrey “A.I.” Sitnik <andrey@sitnik.ru>
5
-
6
- This program is free software: you can redistribute it and/or modify
7
- it under the terms of the GNU Lesser General Public License as published by
8
- the Free Software Foundation, either version 3 of the License, or
9
- (at your option) any later version.
10
-
11
- This program is distributed in the hope that it will be useful,
12
- but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- GNU Lesser General Public License for more details.
15
-
16
- You should have received a copy of the GNU Lesser General Public License
17
- along with this program. If not, see <http://www.gnu.org/licenses/>.
18
- =end
3
+ # Converter between R18n and Rails I18n plural keys.
4
+ #
5
+ # Copyright (C) 2009 Andrey “A.I.” Sitnik <andrey@sitnik.ru>
6
+ #
7
+ # This program is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Lesser General Public License as published by
9
+ # the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Lesser General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Lesser General Public License
18
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
19
 
20
20
  module R18n
21
21
  # Converter between R18n and Rails I18n plural keys.
22
22
  class RailsPlural
23
23
  # Check, that +key+ is Rails plural key.
24
24
  def self.is_rails?(k)
25
- [:zero, :one, :few, :many, :other].include? k
25
+ %i[zero one few many other].include? k
26
26
  end
27
27
 
28
28
  # Convert Rails I18n plural key to R18n.
@@ -1,4 +1,6 @@
1
- require File.expand_path('../../r18n-core/lib/r18n-core/version', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../r18n-core/lib/r18n-core/version'
2
4
 
3
5
  Gem::Specification.new do |s|
4
6
  s.platform = Gem::Platform::RUBY
@@ -7,14 +9,14 @@ Gem::Specification.new do |s|
7
9
  s.date = Time.now.strftime('%Y-%m-%d')
8
10
 
9
11
  s.summary = 'Rails I18n compatibility for R18n'
10
- s.description = <<-EOF
12
+ s.description = <<-DESC
11
13
  R18n backend for Rails I18n and R18n filters and loader to support Rails
12
14
  translation format.
13
15
  R18n has nice Ruby-style syntax, filters, flexible locales, custom loaders,
14
16
  translation support for any classes, time and number localization, several
15
17
  user language support, agnostic core package with out-of-box support for
16
18
  Rails, Sinatra and desktop applications.
17
- EOF
19
+ DESC
18
20
 
19
21
  s.files = `git ls-files`.split("\n")
20
22
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -26,6 +28,6 @@ Gem::Specification.new do |s|
26
28
  s.homepage = 'https://github.com/ai/r18n/tree/master/r18n-rails-api'
27
29
  s.license = 'LGPL-3'
28
30
 
29
- s.add_dependency 'r18n-core', "= #{R18n::VERSION}"
30
31
  s.add_dependency 'i18n'
32
+ s.add_dependency 'r18n-core', "= #{R18n::VERSION}"
31
33
  end
data/spec/backend_spec.rb CHANGED
@@ -1,4 +1,4 @@
1
- require File.expand_path('../spec_helper', __FILE__)
1
+ # frozen_string_literal: true
2
2
 
3
3
  describe R18n::Backend do
4
4
  before do
@@ -8,11 +8,11 @@ describe R18n::Backend do
8
8
  R18n.set('en')
9
9
  end
10
10
 
11
- it "returns available locales" do
12
- expect(I18n.available_locales).to match_array([:en, :ru])
11
+ it 'returns available locales' do
12
+ expect(I18n.available_locales).to match_array(%i[en ru])
13
13
  end
14
14
 
15
- it "localizes objects" do
15
+ it 'localizes objects' do
16
16
  time = Time.at(0).utc
17
17
  date = Date.parse('1970-01-01')
18
18
 
@@ -25,66 +25,67 @@ describe R18n::Backend do
25
25
  expect(I18n.l(-5000.5)).to eq '−5,000.5'
26
26
  end
27
27
 
28
- it "translates by key and scope" do
28
+ it 'translates by key and scope' do
29
29
  expect(I18n.t('in.another.level')).to eq 'Hierarchical'
30
30
  expect(I18n.t(:level, scope: 'in.another')).to eq 'Hierarchical'
31
31
  expect(I18n.t(:'another.level', scope: 'in')).to eq 'Hierarchical'
32
32
  end
33
33
 
34
- it "uses pluralization and variables" do
34
+ it 'uses pluralization and variables' do
35
35
  expect(I18n.t('users', count: 0)).to eq '0 users'
36
36
  expect(I18n.t('users', count: 1)).to eq '1 user'
37
37
  expect(I18n.t('users', count: 5)).to eq '5 users'
38
38
  end
39
39
 
40
- it "uses another separator" do
40
+ it 'uses another separator' do
41
41
  expect(I18n.t('in/another/level', separator: '/')).to eq 'Hierarchical'
42
42
  end
43
43
 
44
- it "translates array" do
44
+ it 'translates array' do
45
45
  expect(I18n.t(['in.another.level', 'in.default'])).to eq(
46
- ['Hierarchical', 'Default'])
46
+ %w[Hierarchical Default]
47
+ )
47
48
  end
48
49
 
49
- it "uses default value" do
50
+ it 'uses default value' do
50
51
  expect(I18n.t(:missed, default: 'Default')).to eq 'Default'
51
52
  expect(I18n.t(:missed, default: :default, scope: :in)).to eq 'Default'
52
- expect(I18n.t(:missed, default: [:also_no, :'in.default'])).to eq 'Default'
53
+ expect(I18n.t(:missed, default: %i[also_no in.default])).to eq 'Default'
53
54
  expect(I18n.t(:missed, default: proc { |key| key.to_s })).to eq 'missed'
54
55
  end
55
56
 
56
- it "raises error on no translation" do
57
- expect(-> {
57
+ it 'raises error on no translation' do
58
+ expect(lambda {
58
59
  I18n.backend.translate(:en, :missed)
59
60
  }).to raise_error(::I18n::MissingTranslationData)
60
61
 
61
- expect(-> {
62
+ expect(lambda {
62
63
  I18n.t(:missed)
63
64
  }).to raise_error(::I18n::MissingTranslationData)
64
65
  end
65
66
 
66
- it "reloads translations" do
67
+ it 'reloads translations' do
67
68
  expect(-> { I18n.t(:other) }).to raise_error(::I18n::MissingTranslationData)
68
69
  I18n.load_path << OTHER
69
70
  I18n.reload!
70
71
  expect(I18n.t(:other)).to eq 'Other'
71
72
  end
72
73
 
73
- it "returns plain classes" do
74
+ it 'returns plain classes' do
74
75
  expect(I18n.t('in.another.level').class).to eq ActiveSupport::SafeBuffer
75
76
  expect(I18n.t('in.another').class).to eq Hash
76
77
  end
77
78
 
78
- it "returns correct unpluralized hash" do
79
- expect(I18n.t('users')).to eq ({ one: '1 user', other: '%{count} users' })
79
+ it 'returns correct unpluralized hash' do
80
+ expect(I18n.t('users')).to eq(one: '1 user', other: '%{count} users')
80
81
  end
81
82
 
82
- it "corrects detect untranslated, whem path is deeper than string" do
83
- expect(-> {
83
+ it 'corrects detect untranslated, whem path is deeper than string' do
84
+ expect(lambda {
84
85
  I18n.t('in.another.level.deeper')
85
86
  }).to raise_error(::I18n::MissingTranslationData)
86
87
 
87
- expect(-> {
88
+ expect(lambda {
88
89
  I18n.t('in.another.level.go.deeper')
89
90
  }).to raise_error(::I18n::MissingTranslationData)
90
91
  end
@@ -94,23 +95,23 @@ describe R18n::Backend do
94
95
  end
95
96
 
96
97
  it "doesn't call object methods" do
97
- expect(-> {
98
+ expect(lambda {
98
99
  I18n.t('in.another.level.to_sym')
99
100
  }).to raise_error(::I18n::MissingTranslationData)
100
101
  end
101
102
 
102
- it "works deeper pluralization" do
103
+ it 'works deeper pluralization' do
103
104
  expect(I18n.t('users.other', count: 5)).to eq '5 users'
104
105
  end
105
106
 
106
- it "returns hash with symbols keys" do
107
- expect(I18n.t('in')).to eq({
107
+ it 'returns hash with symbols keys' do
108
+ expect(I18n.t('in')).to eq(
108
109
  another: { level: 'Hierarchical' },
109
110
  default: 'Default'
110
- })
111
+ )
111
112
  end
112
113
 
113
- it "changes locale in place" do
114
+ it 'changes locale in place' do
114
115
  I18n.load_path << PL
115
116
  expect(I18n.t('users', count: 5)).to eq '5 users'
116
117
  expect(I18n.t('users', count: 5, locale: :ru)).to eq 'Много'
@@ -118,7 +119,7 @@ describe R18n::Backend do
118
119
  expect(I18n.l(Date.parse('1970-01-01'), locale: :ru)).to eq '01.01.1970'
119
120
  end
120
121
 
121
- it "has transliterate method" do
122
+ it 'has transliterate method' do
122
123
  expect(I18n.transliterate('café')).to eq 'cafe'
123
124
  end
124
125
  end
@@ -1 +1,3 @@
1
- { ru: { two: "Два" } }
1
+ # frozen_string_literal: true
2
+
3
+ { ru: { two: 'Два' } }
data/spec/filters_spec.rb CHANGED
@@ -1,9 +1,10 @@
1
- require File.expand_path('../spec_helper', __FILE__)
1
+ # frozen_string_literal: true
2
2
 
3
3
  describe 'Rails filters' do
4
- it "uses named variables" do
5
- i18n = R18n::Translation.new(EN, '', locale: EN,
6
- translations: { 'echo' => 'Value is %{value}' })
4
+ it 'uses named variables' do
5
+ i18n = R18n::Translation.new(
6
+ EN, '', locale: EN, translations: { 'echo' => 'Value is %{value}' }
7
+ )
7
8
 
8
9
  expect(i18n.echo(value: 'R18n')).to eq 'Value is R18n'
9
10
  expect(i18n.echo(value: -5.5)).to eq 'Value is −5.5'
@@ -12,21 +13,24 @@ describe 'Rails filters' do
12
13
  expect(i18n.echo).to eq 'Value is %{value}'
13
14
  end
14
15
 
15
- it "uses old variables syntax" do
16
- i18n = R18n::Translation.new(EN, '', locale: EN,
17
- translations: { 'echo' => 'Value is {{value}}' })
16
+ it 'uses old variables syntax' do
17
+ i18n = R18n::Translation.new(
18
+ EN, '', locale: EN, translations: { 'echo' => 'Value is {{value}}' }
19
+ )
18
20
  expect(i18n.echo(value: 'Old')).to eq 'Value is Old'
19
21
  end
20
22
 
21
- it "pluralizes by variable %{count}" do
22
- i18n = R18n::Translation.new(EN, '', locale: EN,
23
- translations: {
24
- 'users' => R18n::Typed.new('pl', {
23
+ it 'pluralizes by variable %{count}' do
24
+ i18n = R18n::Translation.new(
25
+ EN, '', locale: EN, translations: {
26
+ 'users' => R18n::Typed.new(
27
+ 'pl',
25
28
  0 => 'no users',
26
29
  1 => '1 user',
27
30
  'n' => '%{count} users'
28
- })
29
- })
31
+ )
32
+ }
33
+ )
30
34
 
31
35
  expect(i18n.users(count: 0)).to eq 'no users'
32
36
  expect(i18n.users(count: 1)).to eq '1 user'
data/spec/loader_spec.rb CHANGED
@@ -1,4 +1,4 @@
1
- require File.expand_path('../spec_helper', __FILE__)
1
+ # frozen_string_literal: true
2
2
 
3
3
  describe R18n::Loader::Rails do
4
4
  before do
@@ -6,51 +6,53 @@ describe R18n::Loader::Rails do
6
6
  @loader = R18n::Loader::Rails.new
7
7
  end
8
8
 
9
- it "returns available locales" do
9
+ it 'returns available locales' do
10
10
  expect(@loader.available).to match_array([DECH, EN, RU])
11
11
  end
12
12
 
13
- it "loads translation" do
14
- expect(@loader.load(RU)).to eq({ 'one' => 'Один', 'two' => 'Два' })
13
+ it 'loads translation' do
14
+ expect(@loader.load(RU)).to eq('one' => 'Один', 'two' => 'Два')
15
15
  end
16
16
 
17
- it "loads translation for dialects" do
18
- expect(@loader.load(DECH)).to eq({ 'a' => 1 })
17
+ it 'loads translation for dialects' do
18
+ expect(@loader.load(DECH)).to eq('a' => 1)
19
19
  end
20
20
 
21
- it "changes pluralization" do
22
- expect(@loader.load(EN)).to eq({
23
- 'users' => R18n::Typed.new('pl', {
21
+ it 'changes pluralization' do
22
+ expect(@loader.load(EN)).to eq(
23
+ 'users' => R18n::Typed.new(
24
+ 'pl',
24
25
  0 => 'Zero',
25
26
  1 => 'One',
26
27
  2 => 'Few',
27
28
  'n' => 'Other'
28
- })
29
- })
29
+ )
30
+ )
30
31
  end
31
32
 
32
- it "changes Russian pluralization" do
33
+ it 'changes Russian pluralization' do
33
34
  I18n.load_path = [PL]
34
- expect(@loader.load(RU)).to eq({
35
- 'users' => R18n::Typed.new('pl', {\
35
+ expect(@loader.load(RU)).to eq(
36
+ 'users' => R18n::Typed.new(
37
+ 'pl',
36
38
  0 => 'Ноль',
37
39
  1 => 'Один',
38
40
  2 => 'Несколько',
39
41
  'n' => 'Много'
40
- })
41
- })
42
+ )
43
+ )
42
44
  end
43
45
 
44
- it "reloads translations on load_path changes" do
46
+ it 'reloads translations on load_path changes' do
45
47
  I18n.load_path << OTHER
46
- expect(@loader.load(RU)).to eq({
48
+ expect(@loader.load(RU)).to eq(
47
49
  'one' => 'Один',
48
50
  'two' => 'Два',
49
51
  'three' => 'Три'
50
- })
52
+ )
51
53
  end
52
54
 
53
- it "changes hash on load_path changes" do
55
+ it 'changes hash on load_path changes' do
54
56
  before = @loader.hash
55
57
  I18n.load_path << OTHER
56
58
  expect(@loader.hash).not_to eq before
data/spec/spec_helper.rb CHANGED
@@ -1,16 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'pp'
2
4
  require 'i18n'
3
5
  require 'active_support'
4
6
 
5
7
  I18n.enforce_available_locales = true
6
8
 
7
- require File.join(File.dirname(__FILE__), '../lib/r18n-rails-api')
9
+ require_relative '../lib/r18n-rails-api'
8
10
 
9
11
  EN = R18n.locale(:en)
10
12
  RU = R18n.locale(:ru)
11
13
  DECH = R18n.locale(:'de-CH')
12
14
 
13
- GENERAL = Dir.glob(File.join(File.dirname(__FILE__), 'data/general/*'))
14
- SIMPLE = Dir.glob(File.join(File.dirname(__FILE__), 'data/simple/*'))
15
- OTHER = Dir.glob(File.join(File.dirname(__FILE__), 'data/other/*'))
16
- PL = Dir.glob(File.join(File.dirname(__FILE__), 'data/pl/*'))
15
+ GENERAL = Dir.glob(File.join(__dir__, 'data', 'general', '*'))
16
+ SIMPLE = Dir.glob(File.join(__dir__, 'data', 'simple', '*'))
17
+ OTHER = Dir.glob(File.join(__dir__, 'data', 'other', '*'))
18
+ PL = Dir.glob(File.join(__dir__, 'data', 'pl', '*'))
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: r18n-rails-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrey Sitnik
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-22 00:00:00.000000000 Z
11
+ date: 2018-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: r18n-core
14
+ name: i18n
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 2.2.0
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 2.2.0
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: i18n
28
+ name: r18n-core
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 3.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 3.0.0
41
41
  description: |2
42
42
  R18n backend for Rails I18n and R18n filters and loader to support Rails
43
43
  translation format.
@@ -95,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
95
  version: '0'
96
96
  requirements: []
97
97
  rubyforge_project:
98
- rubygems_version: 2.5.2.2
98
+ rubygems_version: 2.7.6
99
99
  signing_key:
100
100
  specification_version: 4
101
101
  summary: Rails I18n compatibility for R18n