tater 1.1.1 → 1.2.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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/tater.rb +35 -0
  3. data/test/tater_test.rb +25 -0
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '00580e7b14eb0c1f1bc26b9a8cc2470638aa06f2f9800b4a4c542de913fffcb4'
4
- data.tar.gz: f807ce661a2bed8ca9526f309c1548ddf292f034cbcaeae4223a385f89296c86
3
+ metadata.gz: df91dea484a66a6511be668c7738e1970a588f07e3bb71f25687b0472290117d
4
+ data.tar.gz: 97966c5fa1ff9db5f1c42b1ed98720892646e8dce07e49d24e058c79c9fc08a7
5
5
  SHA512:
6
- metadata.gz: 8ff891fe31f924f41c5bd20aaa0b58c39659a2e0e72cabd4cfd55df79d2e237daaabe2bb717415eca782f814dcd1322737a861f23fd37449e4f8516a71ea197e
7
- data.tar.gz: f231dcbca0ca5826a4c99f92afa6c98514985c262a66f473ddb8696d754e849e6c50d371cf82c056e395565b199d6179d665b28b580cade63aa24932c4a378e6
6
+ metadata.gz: e636ba94fb9e1100729adfa4422fa0dc9c0c692bc38915c114a8115c9b711838b448ee49c63653ccdabbbf467c56450aa661240392b61a833061c1e78d1ddd41
7
+ data.tar.gz: 60bfea0ecab01a4d99fd28789c6cfe9d7bc5f919d430d63eb1f651e58e45166384e244868ccae42246a2668ac4eb6d63964f536d6baee4a7f1b24cfd1953ef8c
data/lib/tater.rb CHANGED
@@ -241,6 +241,41 @@ class Tater
241
241
  end
242
242
  end
243
243
 
244
+ # Check that there's a key at the given path.
245
+ #
246
+ # @param key [String]
247
+ # The period-separated key path to look within our messages for.
248
+ # @param options [Hash]
249
+ # Options to pass to the #lookup method, including locale overrides.
250
+ #
251
+ # @option options [Boolean] :cascade
252
+ # Should this lookup cascade or not? Can override @cascade.
253
+ # @option options [String] :locale
254
+ # A specific locale to lookup within. This will take precedence over the
255
+ # :locales option.
256
+ # @option options [Array<String>] :locales
257
+ # An array of locales to look within.
258
+ #
259
+ # @return [Boolean]
260
+ def includes?(key, options = {})
261
+ cascade_override = options.delete(:cascade)
262
+ locale_override = options.delete(:locale)
263
+ locales = options.delete(:locales)
264
+
265
+ message =
266
+ if locale_override || !locales
267
+ lookup(key, locale_override, cascade_override)
268
+ else
269
+ locales.find do |accept|
270
+ found = lookup(key, accept, cascade_override)
271
+
272
+ break found if found
273
+ end
274
+ end
275
+
276
+ !message.nil?
277
+ end
278
+
244
279
  # Translate a key path and optional interpolation arguments into a string.
245
280
  # It's effectively a combination of #lookup and #interpolate.
246
281
  #
data/test/tater_test.rb CHANGED
@@ -334,4 +334,29 @@ describe Tater do
334
334
  assert cascade.cascades?
335
335
  end
336
336
  end
337
+
338
+ describe '#includes?' do
339
+ let :i18n do
340
+ Tater.new(path: File.expand_path('test/fixtures'))
341
+ end
342
+
343
+ it 'tells you if you have a translation' do
344
+ assert i18n.includes?('deep')
345
+ assert i18n.includes?('deep.key')
346
+ refute i18n.includes?('deep.nope')
347
+ refute i18n.includes?('nope')
348
+ end
349
+
350
+ it 'allows overriding the locale' do
351
+ assert i18n.includes?('french', locale: 'fr')
352
+ assert i18n.includes?('french', locales: %w[en fr])
353
+ refute i18n.includes?('french', locales: %w[en])
354
+ refute i18n.includes?('french')
355
+ end
356
+
357
+ it 'allows cascading' do
358
+ assert i18n.includes?('cascade.nope.tacos', cascade: true)
359
+ refute i18n.includes?('cascade.nope.tacos', cascade: false)
360
+ end
361
+ end
337
362
  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.1
4
+ version: 1.2.0
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-14 00:00:00.000000000 Z
11
+ date: 2019-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest