Module: Transpec::Syntax::Dispatcher
- Included in:
- Converter, Transpec::SpecSuite
- Defined in:
- lib/transpec/syntax.rb
Instance Method Summary collapse
- #dispatch_node(node, source_rewriter = nil, runtime_data = nil, report = nil) ⇒ Object
- #dispatch_syntax(syntax) ⇒ Object
- #handler_names ⇒ Object
- #invoke_handler(klass, syntax) ⇒ Object
Instance Method Details
#dispatch_node(node, source_rewriter = nil, runtime_data = nil, report = nil) ⇒ Object
56 57 58 59 60 61 |
# File 'lib/transpec/syntax.rb', line 56 def dispatch_node(node, source_rewriter = nil, runtime_data = nil, report = nil) Syntax.standalone_syntaxes.find do |syntax_class| syntax = syntax_class.new(node, source_rewriter, runtime_data, report) dispatch_syntax(syntax) end end |
#dispatch_syntax(syntax) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/transpec/syntax.rb', line 63 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
85 86 87 88 89 90 |
# File 'lib/transpec/syntax.rb', line 85 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
80 81 82 83 |
# File 'lib/transpec/syntax.rb', line 80 def invoke_handler(klass, syntax) handler_name = handler_names[klass] send(handler_name, syntax) if respond_to?(handler_name, true) end |