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