Module: Transpec::Syntax::Dispatcher
- Included in:
- Converter, Transpec::SpecSuite
- Defined in:
- lib/transpec/syntax.rb
Instance Method Summary collapse
-
#dispatch_node(node, runtime_data = nil, project = nil, source_rewriter = nil, report = nil) ⇒ Object
rubocop:disable LineLength.
-
#dispatch_syntax(syntax) ⇒ Object
rubocop:enable LineLength.
- #handler_names ⇒ Object
- #invoke_handler(klass, syntax) ⇒ Object
Instance Method Details
#dispatch_node(node, runtime_data = nil, project = nil, source_rewriter = nil, report = nil) ⇒ Object
rubocop:disable LineLength
58 59 60 61 62 63 |
# File 'lib/transpec/syntax.rb', line 58 def dispatch_node(node, runtime_data = nil, project = nil, source_rewriter = nil, report = nil) Syntax.standalone_syntaxes.find do |syntax_class| syntax = syntax_class.new(node, runtime_data, project, source_rewriter, report) dispatch_syntax(syntax) end end |
#dispatch_syntax(syntax) ⇒ Object
rubocop:enable LineLength
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/transpec/syntax.rb', line 66 def dispatch_syntax(syntax) return false unless syntax.conversion_target? invoke_handler(syntax.class, syntax) included_mixins = syntax.class.included_modules & Syntax.mixins included_mixins.each do |mixin| invoke_handler(mixin, syntax) end syntax.dependent_syntaxes.each do |dependent_syntax| dispatch_syntax(dependent_syntax) end true end |
#handler_names ⇒ Object
88 89 90 91 92 93 |
# File 'lib/transpec/syntax.rb', line 88 def handler_names @handler_names_cache ||= Hash.new do |hash, klass| class_name = ModuleUtil.snake_case_name(klass.name) hash[klass] = "process_#{class_name}" end end |
#invoke_handler(klass, syntax) ⇒ Object
83 84 85 86 |
# File 'lib/transpec/syntax.rb', line 83 def invoke_handler(klass, syntax) handler_name = handler_names[klass] send(handler_name, syntax) if respond_to?(handler_name, true) end |