module Transpec::Syntax::Dispatcher
Public Instance Methods
dispatch_node(node, runtime_data = nil, project = nil, source_rewriter = nil, report = nil)
click to toggle source
rubocop:disable LineLength
# 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)
click to toggle source
rubocop:enable LineLength
# 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()
click to toggle source
# 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)
click to toggle source
# 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