tater 2.0.3 → 2.0.4
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 +27 -44
- data/test/tater_test.rb +4 -2
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51644f41d80e87d20ed43b9e8c6b4797fb7aeb4258c94d5d9f9d7a50eb5ee5c6
|
4
|
+
data.tar.gz: 1fe43b99fbc2f24cdc342ec4278ff7140ee6b9579dd51d236fcc713907f1455d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4c059fdc696d39c489e61d3e53954fe921feaba78055bd5e62c944d45daf10dfa178b76e4e836d326ba61be0dbf7bbec13b63f52b95e13f23da9ca5be4d3b8c
|
7
|
+
data.tar.gz: 6b12ffa8f2a1186f2de92c9c16bb5c2e1027f93ab5ee2c877dbad297777274b9f4f38882255490db3c555a0dafb129ed876bd784d3a872e07a4e7e9f6e0e24ec
|
data/lib/tater.rb
CHANGED
@@ -109,7 +109,6 @@ class Tater
|
|
109
109
|
# @param path [String]
|
110
110
|
# A path to search for YAML or Ruby files to load messages from.
|
111
111
|
def initialize(cascade: false, locale: nil, messages: nil, path: nil)
|
112
|
-
@cache = {}
|
113
112
|
@cascade = cascade
|
114
113
|
@locale = locale
|
115
114
|
@messages = {}
|
@@ -167,8 +166,10 @@ class Tater
|
|
167
166
|
|
168
167
|
# Not only does this clear our cache but it establishes the basic structure
|
169
168
|
# that we rely on in other methods.
|
169
|
+
@cache = {}
|
170
|
+
|
170
171
|
@messages.each_key do |key|
|
171
|
-
@cache[key] = {
|
172
|
+
@cache[key] = { false => {}, true => {} }
|
172
173
|
end
|
173
174
|
end
|
174
175
|
|
@@ -223,37 +224,45 @@ class Tater
|
|
223
224
|
|
224
225
|
# Lookup a key in the messages hash, using the current locale or an override.
|
225
226
|
#
|
227
|
+
# @example Using the default locale, look up a key's value.
|
228
|
+
# i18n = Tater.new(locale: 'en', messages: { 'en' => { 'greeting' => { 'world' => 'Hello, world!' } } })
|
229
|
+
# i18n.lookup('greeting.world') # => "Hello, world!"
|
230
|
+
#
|
226
231
|
# @param key [String]
|
232
|
+
# The period-separated key path to look for within our messages.
|
227
233
|
# @param locale [String]
|
228
|
-
# A locale to use instead of our current one.
|
234
|
+
# A locale to use instead of our current one, if any.
|
229
235
|
# @param cascade [Boolean]
|
230
236
|
# A boolean to forcibly set the cascade option for this lookup.
|
231
237
|
#
|
232
238
|
# @return
|
233
239
|
# Basically anything that can be stored in your messages Hash.
|
234
240
|
def lookup(key, locale: nil, cascade: nil)
|
235
|
-
locale =
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
241
|
+
locale =
|
242
|
+
if locale.nil?
|
243
|
+
@locale
|
244
|
+
else
|
245
|
+
locale.to_s
|
246
|
+
end
|
240
247
|
|
241
|
-
|
248
|
+
cascade = @cascade if cascade.nil?
|
242
249
|
|
243
|
-
|
244
|
-
|
245
|
-
while path.length >= 2
|
246
|
-
attempt = @messages.dig(*path)
|
250
|
+
@cache[locale][cascade][key] ||= begin
|
251
|
+
path = key.split(SEPARATOR)
|
247
252
|
|
248
|
-
|
253
|
+
message = @messages[locale].dig(*path)
|
249
254
|
|
255
|
+
if message.nil? && cascade
|
256
|
+
message =
|
257
|
+
while path.length > 1
|
250
258
|
path.delete_at(path.length - 2)
|
259
|
+
attempt = @messages[locale].dig(*path)
|
260
|
+
|
261
|
+
break attempt unless attempt.nil?
|
251
262
|
end
|
252
|
-
|
253
|
-
@messages.dig(*path)
|
254
|
-
end
|
263
|
+
end
|
255
264
|
|
256
|
-
|
265
|
+
message
|
257
266
|
end
|
258
267
|
end
|
259
268
|
|
@@ -338,32 +347,6 @@ class Tater
|
|
338
347
|
|
339
348
|
private
|
340
349
|
|
341
|
-
# @param key [String]
|
342
|
-
# The cache key, often in the form "something.nested.like.this"
|
343
|
-
# @param locale [String]
|
344
|
-
# The locale to store the value for.
|
345
|
-
# @param cascade [Boolean]
|
346
|
-
# Was this a cascading lookup?
|
347
|
-
# @param message [String]
|
348
|
-
# The message being cached, often a String.
|
349
|
-
# @return [String]
|
350
|
-
# Whatever value is being cached, often a String.
|
351
|
-
def cache(key, locale, cascade, message)
|
352
|
-
@cache[locale][cascade][key] = message
|
353
|
-
end
|
354
|
-
|
355
|
-
# @param key [String]
|
356
|
-
# The cache key, often in the form "something.nested.like.this"
|
357
|
-
# @param locale [String]
|
358
|
-
# The locale to store the value for.
|
359
|
-
# @param cascade [Boolean]
|
360
|
-
# Was this a cascading lookup?
|
361
|
-
# @return [String, nil]
|
362
|
-
# The cached message or nil.
|
363
|
-
def cached(key, locale, cascade)
|
364
|
-
@cache.dig(locale, cascade, key)
|
365
|
-
end
|
366
|
-
|
367
350
|
# Localize an Array object.
|
368
351
|
#
|
369
352
|
# @param object [Array<String>]
|
data/test/tater_test.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
2
|
+
$LOAD_PATH.unshift File.expand_path('lib', __dir__)
|
3
|
+
|
4
4
|
require 'date'
|
5
|
+
require 'minitest/autorun'
|
6
|
+
require 'tater'
|
5
7
|
|
6
8
|
describe Tater do
|
7
9
|
describe Tater::Utils do
|
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: 2.0.
|
4
|
+
version: 2.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evan Lecklider
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubocop-packaging
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: rubocop-performance
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -144,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
144
158
|
- !ruby/object:Gem::Version
|
145
159
|
version: '2.0'
|
146
160
|
requirements: []
|
147
|
-
rubygems_version: 3.2.
|
161
|
+
rubygems_version: 3.2.22
|
148
162
|
signing_key:
|
149
163
|
specification_version: 4
|
150
164
|
summary: Minimal internationalization and localization library.
|