i18nliner 0.0.9 → 0.0.10

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.
@@ -8,7 +8,7 @@ module I18nliner
8
8
  REQUIRED_PLURALIZATION_KEYS = [:one, :other]
9
9
 
10
10
  def normalize_key(key, scope, inferred, i18n_scope)
11
- scope.normalize_key(key.to_s, inferred, i18n_scope)
11
+ scope.normalize_key(key, inferred, i18n_scope)
12
12
  end
13
13
 
14
14
  def normalize_default(default, translate_options = {}, options = {})
@@ -77,8 +77,8 @@ module I18nliner
77
77
  # default_hash, options
78
78
  def key_provided?(key_or_default = nil, default_or_options = nil, maybe_options = nil, *others)
79
79
  return false if key_or_default.is_a?(Hash)
80
- return true if key_or_default.is_a?(Symbol)
81
- raise ArgumentError.new("invalid key_or_default argument. expected String, Symbol or Hash, got #{key_or_default.class}") unless key_or_default.is_a?(String)
80
+ return true if key_or_default.is_a?(Symbol) || key_or_default.nil? || key_or_default.is_a?(Array)
81
+ raise ArgumentError.new("invalid key_or_default argument. expected String, Symbol, Array, Hash or nil, got #{key_or_default.class}") unless key_or_default.is_a?(String)
82
82
  return true if default_or_options.is_a?(String)
83
83
  return true if maybe_options
84
84
  return true if key_or_default =~ /\A\.?(\w+\.)+\w+\z/
@@ -34,11 +34,15 @@ module I18nliner
34
34
  end
35
35
 
36
36
  def translations
37
- return [] unless @default
38
- return [[@key, @default]] if @default.is_a?(String)
39
- @default.map { |key, value|
40
- ["#{@key}.#{key}", value]
41
- }
37
+ return [] unless default
38
+ keys = Array(key)
39
+ keys.inject([]) do |result, key|
40
+ if default.is_a?(String)
41
+ result << [key, default]
42
+ else
43
+ result.concat default.map { |dk, dv| ["#{key}.#{dk}", dv] }
44
+ end
45
+ end
42
46
  end
43
47
 
44
48
  def validate_key
@@ -79,6 +83,8 @@ module I18nliner
79
83
  def normalize_arguments(args)
80
84
  @key, @options = infer_arguments(args)
81
85
  @default = @options.delete(:default)
86
+ @default = nil if @default.is_a?(Symbol)
87
+ @default = @default.detect { |d| d.is_a?(String) } if @default.is_a?(Array)
82
88
  raise InvalidSignatureError.new(@line, args) unless @default.nil? || @default.is_a?(String) || @default.is_a?(Hash)
83
89
  rescue ArgumentError
84
90
  raise InvalidSignatureError.new(@line, args)
@@ -15,7 +15,13 @@ module I18nliner
15
15
  end
16
16
 
17
17
  def normalize_key(key, inferred, i18n_scope)
18
- if allow_relative? && (key = key.dup) && key.sub!(/\A\./, '')
18
+ return key if key.nil?
19
+ if key.is_a?(Array)
20
+ return key.map { |k| normalize_key(k, inferred, i18n_scope) }
21
+ end
22
+
23
+ key = key.to_s.dup
24
+ if allow_relative? && key.sub!(/\A\./, '')
19
25
  scope + key
20
26
  else
21
27
  key
@@ -33,6 +33,16 @@ describe I18nliner::Extensions::Core do
33
33
  i18n.translate("light", :count => 1)
34
34
  end
35
35
 
36
+ it "should not stringify nil keys" do
37
+ expect(i18n).to receive(:simple_translate).with(nil, {:default => [:foo, :bar]})
38
+ i18n.translate(nil, {:default => [:foo, :bar]})
39
+ end
40
+
41
+ it "should stringify array keys, but not the array itself" do
42
+ expect(i18n).to receive(:simple_translate).with(["bar", "baz"], {})
43
+ i18n.translate([:bar, :baz])
44
+ end
45
+
36
46
  context "with wrappers" do
37
47
  it "should apply a single wrapper" do
38
48
  result = i18n.translate("Hello *bob*.", :wrapper => '<b>\1</b>')
@@ -50,6 +50,16 @@ describe I18nliner::Extractors::TranslateCall do
50
50
  call.default.should == "foo"
51
51
  end
52
52
 
53
+ it "should not extract symbol defaults" do
54
+ call = call(no_scope, :key, :default => :bar_key)
55
+ call.default.should be_nil
56
+ end
57
+
58
+ it "should extract the first string default" do
59
+ call = call(no_scope, :key, :default => [:foo_key, :bar_key, "baz"])
60
+ call.default.should == "baz"
61
+ end
62
+
53
63
  it "should ensure options is a hash, if provided" do
54
64
  expect {
55
65
  call(no_scope, :key, "value", Object.new)
@@ -103,6 +113,7 @@ describe I18nliner::Extractors::TranslateCall do
103
113
  describe "normalization" do
104
114
  it "should make keys absolute if scoped" do
105
115
  call(scope, '.key', "value").translations[0][0].should =~ /\Afoo\.key/
116
+ call(scope, ['.key1', '.key2'], "value").translations.map(&:first).should == ['foo.key1', 'foo.key2']
106
117
  end
107
118
 
108
119
  it "should strip whitespace from defaults" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: i18nliner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-10-31 00:00:00.000000000 Z
12
+ date: 2014-11-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport