remarkable 3.0.4 → 3.0.5

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.
@@ -119,9 +119,14 @@ module Remarkable
119
119
  methods.each do |method|
120
120
  bool, hash = send(method)
121
121
 
122
- unless bool
123
- @expectation ||= Remarkable.t "expectations.#{method.to_s.gsub(/(\?|\!)$/, '')}",
124
- default_i18n_options.merge(hash || {})
122
+ unless bool
123
+ parent_scope = matcher_i18n_scope.split('.')
124
+ matcher_name = parent_scope.pop
125
+ lookup = :"expectations.#{method.to_s.gsub(/(\?|\!)$/, '')}"
126
+
127
+ hash = { :scope => parent_scope, :default => lookup }.merge(hash || {})
128
+ @expectation ||= Remarkable.t "#{matcher_name}.#{lookup}", default_i18n_options.merge(hash)
129
+
125
130
  return false
126
131
  end
127
132
  end
@@ -116,25 +116,38 @@ module Remarkable
116
116
  message.strip!
117
117
 
118
118
  optionals = self.class.matcher_optionals.map do |optional|
119
- scope = matcher_i18n_scope + ".optionals.#{optional}"
120
-
121
119
  if @options.key?(optional)
122
120
  value = @options[optional]
123
121
  defaults = [ (value ? :positive : :negative) ]
124
122
 
125
123
  # If optional is a symbol and it's not any to any of the reserved symbols, search for it also
126
- defaults.unshift(value) if value.is_a?(Symbol) && !OPTIONAL_KEYS.include?(value)
127
-
128
- Remarkable.t defaults.shift, :default => defaults, :raise => true, :scope => scope,
129
- :inspect => value.inspect, :value => value.to_s
130
- else
131
- Remarkable.t :not_given, :raise => true, :scope => scope
132
- end rescue nil
124
+ defaults.unshift(value) if value.is_a?(Symbol) && !OPTIONAL_KEYS.include?(value)
125
+ defaults << ''
126
+
127
+ options = { :default => defaults, :inspect => value.inspect, :value => value.to_s }
128
+ translate_optionals_with_namespace(optional, defaults.shift, options)
129
+ else
130
+ translate_optionals_with_namespace(optional, :not_given, :default => '')
131
+ end
133
132
  end.compact
134
133
 
135
134
  message << ' ' << array_to_sentence(optionals)
136
135
  message.strip!
137
136
  message
137
+ end
138
+
139
+ def translate_optionals_with_namespace(optional, key, options={}) #:nodoc:
140
+ scope = "#{matcher_i18n_scope}.optionals.#{optional}"
141
+
142
+ translation = Remarkable.t key, options.merge!(:scope => scope)
143
+ return translation unless translation.empty?
144
+
145
+ parent_scope = scope.split('.')
146
+ parent_scope.delete_at(-3)
147
+ translation = Remarkable.t key, options.merge!(:scope => parent_scope)
148
+ return translation unless translation.empty?
149
+
150
+ nil
138
151
  end
139
152
 
140
153
  end
@@ -1,3 +1,3 @@
1
1
  module Remarkable
2
- VERSION = '3.0.4' unless self.const_defined?('VERSION')
2
+ VERSION = '3.0.5' unless self.const_defined?('VERSION')
3
3
  end
@@ -38,5 +38,16 @@ describe Remarkable::DSL::Optionals do
38
38
 
39
39
  @matcher.allow_nil(false)
40
40
  @matcher.description.should == 'contain 1 not allowing nil and with blank equal true'
41
+ end
42
+
43
+ it 'should provide a description with optionals through namespace lookup' do
44
+ @matcher = Remarkable::Specs::Matchers::CollectionContainMatcher.new(1)
45
+ @matcher.description.should == 'contain 1'
46
+
47
+ @matcher.allow_nil(true)
48
+ @matcher.description.should == 'contain 1 allowing nil'
49
+
50
+ @matcher.allow_nil(false)
51
+ @matcher.description.should == 'contain 1 not allowing nil'
41
52
  end
42
53
  end
@@ -1,11 +1,15 @@
1
1
  en:
2
2
  remarkable:
3
- specs:
3
+ specs:
4
+ optionals:
5
+ allow_nil:
6
+ positive: "allowing nil"
7
+ negative: "not allowing nil"
4
8
  contain:
5
9
  description: "contain the given values"
6
10
  single_contain:
7
11
  description: "contain {{value}}"
8
- optionals:
12
+ optionals:
9
13
  allow_nil:
10
14
  positive: "allowing nil"
11
15
  negative: "not allowing nil"
@@ -4,7 +4,7 @@ module Remarkable
4
4
  class CollectionContainMatcher < Remarkable::Base
5
5
  arguments :collection => :values, :as => :value
6
6
 
7
- optional :working
7
+ optional :working, :allow_nil
8
8
  default_options :working => true
9
9
 
10
10
  assertion :is_array? do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remarkable
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.4
4
+ version: 3.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Brando
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-04-18 00:00:00 +02:00
13
+ date: 2009-04-20 00:00:00 +02:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency