Module: Transpec::Syntax::Mixin::MatcherOwner::ClassMethods
- Defined in:
- lib/transpec/syntax/mixin/matcher_owner.rb
Instance Method Summary collapse
-
#add_matcher(matcher_class) ⇒ Object
rubocop:disable MethodLength.
Instance Method Details
#add_matcher(matcher_class) ⇒ Object
rubocop:disable MethodLength
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/transpec/syntax/mixin/matcher_owner.rb', line 12 def add_matcher(matcher_class) # rubocop:disable MethodLength matcher_accessor_name = "#{matcher_class.snake_case_name}_matcher" matcher_ivar_name = "@#{matcher_accessor_name}" matcher_creator_name = "create_#{matcher_class.snake_case_name}" define_dynamic_analysis_request do |rewriter| if matcher_class.dynamic_analysis_target_node?(matcher_node) send(matcher_creator_name).register_request_for_dynamic_analysis(rewriter) end end define_method(matcher_accessor_name) do if instance_variable_defined?(matcher_ivar_name) return instance_variable_get(matcher_ivar_name) end if matcher_class.conversion_target_node?(matcher_node, @runtime_data) instance_variable_set(matcher_ivar_name, send(matcher_creator_name)) else instance_variable_set(matcher_ivar_name, nil) end end define_method(matcher_creator_name) do matcher_class.new(matcher_node, self, @source_rewriter, @runtime_data, @report) end end |