has_localization_table 0.3.12 → 0.3.13
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
N2ZlMDQ3ZWRiY2EwYzhmZWU1YmVjYjcwNzk1ZDNlY2VkZDYwNDhjYg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OGFhMjlkZWU0ZTdiMzA3OGEwNTMzYzAxYjkzYTgxNmFkODVmM2RlNg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ODQyMTUzOGY0YjRjNGY0YTY0YzVlMTZhZTQyN2EzMDhiNzZlMmZhZDZmYmE5
|
10
|
+
NmMwOTAyNTMzNWY4NDRkMmZhOGMwMGVlMWJjOWMzZDEyY2ZiNzllOWU1N2Y3
|
11
|
+
NWJhZWJiNGNhMGIzNGRjNmQ2MWE5ZDI1M2ZiZWZlNTBjYTU5NmM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ODQ4MGU3OWE4ZjM5Mjk3OGE5YTJlNDU3NWYyYTg1M2Y0YTIyZmQ5M2NmYjNm
|
14
|
+
MjE3ZmQyMGViMDRkMmFkMWExOWJiNGM2YTBkZDc5NDE1ZDJhYWM2MDg2ZTc1
|
15
|
+
MWU4ZDFkMDhiZmJjYjIyNzI4MGQyMWE4N2EyZDllOWM5NmVmZmQ=
|
@@ -5,12 +5,17 @@ module HasLocalizationTable
|
|
5
5
|
locale ||= HasLocalizationTable.current_locale
|
6
6
|
|
7
7
|
attribute_cache[attribute.to_sym][locale.id] ||= begin
|
8
|
-
attr = localization_association.detect{ |a| a.send(HasLocalizationTable.locale_foreign_key) == locale.id }.send(attribute) rescue
|
9
|
-
if
|
10
|
-
|
8
|
+
attr = localization_association.detect{ |a| a.send(HasLocalizationTable.locale_foreign_key) == locale.id }.send(attribute) rescue ''
|
9
|
+
attr ||= '' # if the attribute somehow is nil, change it to a blank string so we're always dealing with strings
|
10
|
+
|
11
|
+
fallback = options.fetch(:fallback, HasLocalizationTable.config.fallback_locale)
|
12
|
+
|
13
|
+
if fallback && attr.blank?
|
11
14
|
fallback = fallback.call(self) if fallback.respond_to?(:call)
|
12
|
-
|
15
|
+
|
16
|
+
return read_localized_attribute(attribute, fallback) unless fallback == locale
|
13
17
|
end
|
18
|
+
|
14
19
|
attr
|
15
20
|
end
|
16
21
|
end
|
@@ -50,6 +55,7 @@ module HasLocalizationTable
|
|
50
55
|
end
|
51
56
|
|
52
57
|
private
|
58
|
+
|
53
59
|
def attribute_cache
|
54
60
|
@localization_attribute_cache ||= localized_attributes.inject({}) { |memo, attr| memo[attr] = {}; memo }
|
55
61
|
end
|
@@ -41,6 +41,6 @@ module HasLocalizationTable
|
|
41
41
|
config.current_locale = ->{ config.locale_class.constantize.first }
|
42
42
|
config.all_locales = ->{ config.locale_class.constantize.all }
|
43
43
|
config.create_has_one_by_default = true
|
44
|
-
config.fallback_locale =
|
44
|
+
config.fallback_locale = -> * { HasLocalizationTable.primary_locale }
|
45
45
|
end
|
46
46
|
end
|
@@ -6,7 +6,7 @@ describe HasLocalizationTable do
|
|
6
6
|
HasLocalizationTable.configure do |c|
|
7
7
|
c.primary_locale = Locale.first
|
8
8
|
c.current_locale = Locale.first
|
9
|
-
c.all_locales = Locale.all
|
9
|
+
c.all_locales = -> { Locale.all }
|
10
10
|
end
|
11
11
|
|
12
12
|
Object.send(:remove_const, :Article) rescue nil
|
@@ -50,7 +50,7 @@ describe HasLocalizationTable do
|
|
50
50
|
|
51
51
|
it "should use the current locale when setting" do
|
52
52
|
a
|
53
|
-
|
53
|
+
|
54
54
|
HasLocalizationTable.configure do |c|
|
55
55
|
c.current_locale = Locale.last
|
56
56
|
end
|
@@ -145,16 +145,26 @@ describe HasLocalizationTable do
|
|
145
145
|
HasLocalizationTable.config.current_locale = Locale.first
|
146
146
|
end
|
147
147
|
|
148
|
-
it "should return the fallback locale's string" do
|
149
|
-
a.name(fallback:
|
148
|
+
it "should return the fallback locale's string when there isn't a string for the current locale" do
|
149
|
+
a.name(fallback: es).must_equal 'Test'
|
150
|
+
end
|
151
|
+
|
152
|
+
it "should return the fallback locale's string when the string for the current locale is blank" do
|
153
|
+
a.update_attributes!(name: '', description: 'Description')
|
154
|
+
a.name(fallback: es).must_equal 'Test'
|
155
|
+
end
|
156
|
+
|
157
|
+
it 'should return a blank string if neither locale has a string' do
|
158
|
+
HasLocalizationTable.with_options(current_locale: es) { a.update_attributes!(name: '') }
|
159
|
+
a.name(fallback: es).must_be_empty
|
150
160
|
end
|
151
161
|
|
152
162
|
it "should evaluate a proc" do
|
153
|
-
a.name(fallback: -> * {
|
163
|
+
a.name(fallback: -> * { es }).must_equal 'Test'
|
154
164
|
end
|
155
165
|
|
156
166
|
it 'should return a given locale when specified' do
|
157
|
-
a.name(
|
167
|
+
a.name(es).must_equal 'Test'
|
158
168
|
end
|
159
169
|
|
160
170
|
it 'should not evaluate a proc if the fallback is not required' do
|
@@ -163,9 +173,50 @@ describe HasLocalizationTable do
|
|
163
173
|
end
|
164
174
|
|
165
175
|
it 'should use the fallback specified in configuration' do
|
166
|
-
HasLocalizationTable.with_options(fallback_locale: -> * {
|
176
|
+
HasLocalizationTable.with_options(fallback_locale: -> * { es }) do
|
167
177
|
a.name.must_equal 'Test'
|
168
178
|
end
|
169
179
|
end
|
170
180
|
end
|
181
|
+
|
182
|
+
describe 'when a fallback is not provided' do
|
183
|
+
describe 'when the primary locale is the current locale' do
|
184
|
+
it 'should return a blank string when the localization is nil' do
|
185
|
+
a = Article.new(name: nil)
|
186
|
+
a.name.must_be_empty
|
187
|
+
end
|
188
|
+
|
189
|
+
it 'should return a blank string if there is no localization' do
|
190
|
+
a = Article.create!
|
191
|
+
a.name.must_be_empty
|
192
|
+
end
|
193
|
+
|
194
|
+
it 'should return a blank string if the localization is blank' do
|
195
|
+
a.update_attributes!(name: '')
|
196
|
+
a.name.must_be_empty
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
describe 'when the primary locale is different than the current locale' do
|
201
|
+
let(:es) { Locale.create!(name: 'Spanish') }
|
202
|
+
|
203
|
+
before do
|
204
|
+
HasLocalizationTable.config.primary_locale = HasLocalizationTable.config.current_locale = es
|
205
|
+
|
206
|
+
a.save!
|
207
|
+
|
208
|
+
HasLocalizationTable.config.current_locale = Locale.first
|
209
|
+
a.update_attributes!(name: '', description: 'Description')
|
210
|
+
end
|
211
|
+
|
212
|
+
it 'should return the primary locale string if the current locale string is blank' do
|
213
|
+
a.name.must_equal 'Test'
|
214
|
+
end
|
215
|
+
|
216
|
+
it 'should return a blank string if neither locale has a string' do
|
217
|
+
HasLocalizationTable.with_options(current_locale: HasLocalizationTable.primary_locale) { a.update_attributes!(name: '') }
|
218
|
+
a.name.must_be_empty
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
171
222
|
end
|
@@ -21,7 +21,7 @@ describe HasLocalizationTable do
|
|
21
21
|
|
22
22
|
it 'should revert nil values' do
|
23
23
|
HasLocalizationTable.with_options(fallback_locale: -> { }) { }
|
24
|
-
HasLocalizationTable.fallback_locale.
|
24
|
+
HasLocalizationTable.fallback_locale.must_equal HasLocalizationTable.primary_locale
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'should revert values if an exception was raised in the block' do
|
@@ -33,7 +33,7 @@ describe HasLocalizationTable do
|
|
33
33
|
rescue => e
|
34
34
|
end
|
35
35
|
|
36
|
-
HasLocalizationTable.
|
36
|
+
HasLocalizationTable.fallback_locale.must_equal HasLocalizationTable.primary_locale
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: has_localization_table
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Vandersluis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04
|
11
|
+
date: 2015-11-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
type: :runtime
|