Module: RSpec::ContextLet::ClassMethods
- Defined in:
- lib/rspec/context-let.rb
Defined Under Namespace
Classes: UnevaluatedValue
Instance Method Summary collapse
Instance Method Details
#clet(name, &block) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/rspec/context-let.rb', line 8 def clet(name, &block) raise "#clet called without a block" if block.nil? name = name.to_sym RSpec::Core::MemoizedHelpers.module_for(self).send(:define_method, name, &block) @__context_memo ||= {} @__context_memo[name] = [UnevaluatedValue, block] define_method(name) do klass = self.class until klass.nil? cm = klass.instance_variable_get(:@__context_memo) if cm.is_a?(Hash) and cm.has_key?(name) if cm[name].is_a?(Array) and cm[name][0] == UnevaluatedValue cm[name] = super(&nil) return cm[name] else return cm[name] end else rklass = klass.name.reverse.split("::", 2)[1] klass = rklass.nil? ? nil : eval(rklass.reverse) end end end end |