Sha256: 9196bdd54b947ca52f934f51209ceae187acff1c84cd816b81fb81b7b71ad74e
Contents?: true
Size: 1.83 KB
Versions: 1
Compression:
Stored size: 1.83 KB
Contents
module Remarkable # This class is responsable for converting matchers to macros. You shouldn't # worry with what happens here, because it happens automatically. # module Macros protected def method_missing(method_id, *args, &block) #:nodoc: if method_id.to_s =~ /^(should_not|should)_(.+)/ should_or_should_not_method_missing($1, $2, caller, *args, &block) elsif method_id.to_s =~ /^x(should_not|should)_(.+)/ disabled_method_missing($1, $2, *args, &block) else super(method_id, *args, &block) end end def should_or_should_not_method_missing(should_or_should_not, method, calltrace, *args, &block) #:nodoc: it { begin send(should_or_should_not, send(method, *args, &block)) rescue Exception => e trace = e.backtrace.to_a + calltrace.to_a e.set_backtrace(trace) raise e end } end def disabled_method_missing(should_or_should_not, method, *args, &block) #:nodoc: description = get_description_from_matcher(should_or_should_not, method, *args, &block) xexample(description) end # Try to get the description from the matcher. If an error is raised, we # deduct the description from the matcher name, but it will be shown in # english. # def get_description_from_matcher(should_or_should_not, method, *args, &block) #:nodoc: verb = should_or_should_not.to_s.gsub('_', ' ') desc = Remarkable::Matchers.send(method, *args, &block).spec(self).description verb = Remarkable.t("remarkable.core.#{should_or_should_not}", :default => verb) rescue desc = method.to_s.gsub('_', ' ') ensure verb << ' ' << desc end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
remarkable-3.0.9 | lib/remarkable/macros.rb |