tater 1.1.0 → 1.1.1
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.
- checksums.yaml +4 -4
- data/lib/tater.rb +30 -7
- data/test/tater_test.rb +2 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '00580e7b14eb0c1f1bc26b9a8cc2470638aa06f2f9800b4a4c542de913fffcb4'
|
4
|
+
data.tar.gz: f807ce661a2bed8ca9526f309c1548ddf292f034cbcaeae4223a385f89296c86
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ff891fe31f924f41c5bd20aaa0b58c39659a2e0e72cabd4cfd55df79d2e237daaabe2bb717415eca782f814dcd1322737a861f23fd37449e4f8516a71ea197e
|
7
|
+
data.tar.gz: f231dcbca0ca5826a4c99f92afa6c98514985c262a66f473ddb8696d754e849e6c50d371cf82c056e395565b199d6179d665b28b580cade63aa24932c4a378e6
|
data/lib/tater.rb
CHANGED
@@ -91,6 +91,8 @@ class Tater
|
|
91
91
|
load(messages: messages) if messages
|
92
92
|
end
|
93
93
|
|
94
|
+
# Do lookups cascade by default?
|
95
|
+
#
|
94
96
|
# @return [Boolean]
|
95
97
|
def cascades?
|
96
98
|
@cascade
|
@@ -114,7 +116,7 @@ class Tater
|
|
114
116
|
# files or a collection of messages.
|
115
117
|
#
|
116
118
|
# @param path [String]
|
117
|
-
# A path to search for YAML files to load messages from.
|
119
|
+
# A path to search for YAML or Ruby files to load messages from.
|
118
120
|
# @param messages [Hash]
|
119
121
|
# A hash of messages ready to be loaded in.
|
120
122
|
def load(path: nil, messages: nil)
|
@@ -143,6 +145,17 @@ class Tater
|
|
143
145
|
#
|
144
146
|
# @param object [Date, Time, DateTime, Numeric]
|
145
147
|
# The object to localize.
|
148
|
+
# @param options [Hash]
|
149
|
+
# Options to configure localization.
|
150
|
+
#
|
151
|
+
# @option options [String] :format
|
152
|
+
# The key or format string to use for localizing the current object.
|
153
|
+
# @option options [String] :locale
|
154
|
+
# The locale to use in lieu of the current default.
|
155
|
+
# @option options [String] :delimiter
|
156
|
+
# The delimiter to use when localizing numberic values.
|
157
|
+
# @option options [String] :separator
|
158
|
+
# The separator to use when localizing numberic values.
|
146
159
|
#
|
147
160
|
# @return [String]
|
148
161
|
# A localized version of the object passed in.
|
@@ -156,10 +169,10 @@ class Tater
|
|
156
169
|
when Numeric
|
157
170
|
delimiter = options.delete(:delimiter) || lookup('numeric.delimiter', locale_override)
|
158
171
|
separator = options.delete(:separator) || lookup('numeric.separator', locale_override)
|
159
|
-
precision = options.
|
172
|
+
precision = options.delete(:precision) || 2
|
160
173
|
|
161
|
-
raise(MissingLocalizationFormat, "Numeric localization delimiter ('numeric.delimiter') missing") unless delimiter
|
162
|
-
raise(MissingLocalizationFormat, "Numeric localization separator ('numeric.separator') missing") unless separator
|
174
|
+
raise(MissingLocalizationFormat, "Numeric localization delimiter ('numeric.delimiter') missing or not passed as option :delimiter") unless delimiter
|
175
|
+
raise(MissingLocalizationFormat, "Numeric localization separator ('numeric.separator') missing or not passed as option :separator") unless separator
|
163
176
|
|
164
177
|
# Heavily cribbed from Rails.
|
165
178
|
integer, fraction = Utils.string_from_numeric(object).split('.')
|
@@ -205,6 +218,8 @@ class Tater
|
|
205
218
|
# @param key [String]
|
206
219
|
# @param locale_override [String]
|
207
220
|
# A locale to use instead of our current one.
|
221
|
+
# @param cascade_override [Boolean]
|
222
|
+
# A boolean to forcibly set the cascade option for this lookup.
|
208
223
|
#
|
209
224
|
# @return
|
210
225
|
# Basically anything that can be stored in YAML, including nil.
|
@@ -234,23 +249,31 @@ class Tater
|
|
234
249
|
#
|
235
250
|
# @param key [String]
|
236
251
|
# The period-separated key path to look within our messages for.
|
252
|
+
# @param options [Hash]
|
253
|
+
# Options, including values to interpolate to any found string.
|
254
|
+
#
|
237
255
|
# @option options [Boolean] :cascade
|
256
|
+
# Should this lookup cascade or not? Can override @cascade.
|
238
257
|
# @option options [String] :default
|
258
|
+
# A default string to return, should lookup fail.
|
239
259
|
# @option options [String] :locale
|
260
|
+
# A specific locale to lookup within. This will take precedence over the
|
261
|
+
# :locales option.
|
262
|
+
# @option options [Array<String>] :locales
|
263
|
+
# An array of locales to look within.
|
240
264
|
#
|
241
265
|
# @return [String]
|
242
266
|
# The translated and interpreted string, if found, or any data at the
|
243
267
|
# defined key.
|
244
268
|
def translate(key, options = {})
|
245
269
|
cascade_override = options.delete(:cascade)
|
246
|
-
default = options.delete(:default)
|
247
270
|
locale_override = options.delete(:locale)
|
248
271
|
locales = options.delete(:locales)
|
249
272
|
|
250
273
|
message =
|
251
274
|
if locale_override || !locales
|
252
275
|
lookup(key, locale_override, cascade_override)
|
253
|
-
|
276
|
+
else
|
254
277
|
locales.find do |accept|
|
255
278
|
found = lookup(key, accept, cascade_override)
|
256
279
|
|
@@ -263,7 +286,7 @@ class Tater
|
|
263
286
|
message = message.call(key, options)
|
264
287
|
end
|
265
288
|
|
266
|
-
Utils.interpolate(message, options) || default
|
289
|
+
Utils.interpolate(message, options) || options.delete(:default) { "Tater lookup failed: #{ locale_override || locales || locale }.#{ key }" }
|
267
290
|
end
|
268
291
|
alias t translate
|
269
292
|
end
|
data/test/tater_test.rb
CHANGED
@@ -116,6 +116,7 @@ describe Tater do
|
|
116
116
|
it 'cascades' do
|
117
117
|
assert_equal 'Delicious', i18n.lookup('cascade.nope.tacos', nil, true)
|
118
118
|
assert_equal 'Whoaa', i18n.lookup('cascade.another.nope.crazy', nil, true)
|
119
|
+
assert_nil i18n.lookup('cascade.another.nope.crazy', nil, false)
|
119
120
|
assert_nil i18n.lookup('cascade.nahhhhhh')
|
120
121
|
end
|
121
122
|
end
|
@@ -156,6 +157,7 @@ describe Tater do
|
|
156
157
|
end
|
157
158
|
|
158
159
|
it 'cascades lookups' do
|
160
|
+
assert_equal 'Tater lookup failed: en.cascade.another.nope.crazy', i18n.translate('cascade.another.nope.crazy', cascade: false)
|
159
161
|
assert_equal 'Tater lookup failed: en.cascade.nope.tacos', i18n.translate('cascade.nope.tacos')
|
160
162
|
assert_equal 'Delicious', i18n.translate('cascade.nope.tacos', cascade: true)
|
161
163
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tater
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evan Lecklider
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-07-
|
11
|
+
date: 2019-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|