# File lib/rspec/matchers/built_in/be.rb, line 136 def initialize(*args, &block) @expected = parse_expected(args.shift) @args = args @block = block end
# File lib/rspec/matchers/built_in/be.rb, line 167 def description "#{prefix_to_sentence}#{expected_to_sentence}#{args_to_sentence}" end
# File lib/rspec/matchers/built_in/be.rb, line 159 def failure_message_for_should "expected #{predicate}#{args_to_s} to return true, got #{@result.inspect}" end
# File lib/rspec/matchers/built_in/be.rb, line 163 def failure_message_for_should_not "expected #{predicate}#{args_to_s} to return false, got #{@result.inspect}" end
# File lib/rspec/matchers/built_in/be.rb, line 142 def matches?(actual) @actual = actual begin return @result = actual.__send__(predicate, *@args, &@block) rescue NameError => predicate_missing_error "this needs to be here or rcov will not count this branch even though it's executed in a code example" end begin return @result = actual.__send__(present_tense_predicate, *@args, &@block) rescue NameError raise predicate_missing_error end end
# File lib/rspec/matchers/built_in/be.rb, line 181 def parse_expected(expected) @prefix, expected = prefix_and_expected(expected) expected end
# File lib/rspec/matchers/built_in/be.rb, line 173 def predicate "#{@expected}?".to_sym end
# File lib/rspec/matchers/built_in/be.rb, line 186 def prefix_and_expected(symbol) symbol.to_s =~ /^(be_(an?_)?)(.*)/ return $1, $3 end
# File lib/rspec/matchers/built_in/be.rb, line 191 def prefix_to_sentence split_words(@prefix) end
# File lib/rspec/matchers/built_in/be.rb, line 177 def present_tense_predicate "#{@expected}s?".to_sym end