Class: GraphQL::Upgrader::ResolveProcToMethodTransform::ResolveProcProcessor
- Inherits:
-
Parser::AST::Processor
- Object
- Parser::AST::Processor
- GraphQL::Upgrader::ResolveProcToMethodTransform::ResolveProcProcessor
- Defined in:
- lib/graphql/upgrader/member.rb
Defined Under Namespace
Classes: ResolveProcSection
Instance Attribute Summary collapse
-
#resolve_proc_sections ⇒ Object
readonly
Returns the value of attribute resolve_proc_sections.
Instance Method Summary collapse
-
#initialize ⇒ ResolveProcProcessor
constructor
A new instance of ResolveProcProcessor.
-
#on_block(node) ⇒ Object
-
#on_send(node) ⇒ Object
Constructor Details
#initialize ⇒ ResolveProcProcessor
Returns a new instance of ResolveProcProcessor.
590 591 592 |
# File 'lib/graphql/upgrader/member.rb', line 590 def initialize @resolve_proc_sections = [] end |
Instance Attribute Details
#resolve_proc_sections ⇒ Object (readonly)
Returns the value of attribute resolve_proc_sections.
589 590 591 |
# File 'lib/graphql/upgrader/member.rb', line 589 def resolve_proc_sections @resolve_proc_sections end |
Instance Method Details
#on_block(node) ⇒ Object
620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 |
# File 'lib/graphql/upgrader/member.rb', line 620 def on_block(node) send_node, args_node, body_node = node.children _receiver, method_name, _send_args_node = *send_node # Assume that the first three-argument proc we enter is the resolve if ( method_name == :lambda && args_node.children.size == 3 && !@resolve_proc_sections.empty? && @resolve_proc_sections[-1].proc_arg_names.nil? ) resolve_proc_section = @resolve_proc_sections[-1] source_exp = body_node.loc.expression resolve_proc_section.proc_arg_names = args_node.children.map { |arg_node| arg_node.children[0].to_s } resolve_proc_section.proc_start = source_exp.begin.begin_pos resolve_proc_section.proc_end = source_exp.end.end_pos end super(node) end |
#on_send(node) ⇒ Object
606 607 608 609 610 611 612 613 614 615 616 617 618 |
# File 'lib/graphql/upgrader/member.rb', line 606 def on_send(node) receiver, method_name, _args = *node if method_name == :resolve && receiver.nil? resolve_proc_section = ResolveProcSection.new source_exp = node.loc.expression resolve_proc_section.resolve_start = source_exp.begin.begin_pos resolve_proc_section.resolve_end = source_exp.end.end_pos resolve_proc_section.resolve_indent = source_exp.column @resolve_proc_sections << resolve_proc_section end super(node) end |