Sha256: 479ad488b38a71235f83ee269f510d28a8a9490b6a19918f236d113acf8343e4

Contents?: true

Size: 1.53 KB

Versions: 2

Compression:

Stored size: 1.53 KB

Contents

module RipperRubyParser
  module SexpHandlers
    module MethodCalls
      def process_method_add_arg exp
        _, call, parens = exp.shift 3
        call = process(call)
        unless parens.empty?
          parens = process(parens)
          parens.shift
        end
        parens.each do |arg|
          call << arg
        end
        call
      end

      def process_call exp
        _, receiver, _, ident = exp.shift 4
        with_position_from_node_symbol(ident) do |method|
          s(:call, process(receiver), method)
        end
      end

      def process_command exp
        _, ident, arglist = exp.shift 3
        with_position_from_node_symbol(ident) do |method|
          args = handle_argument_list(arglist)
          s(:call, nil, method, *args)
        end
      end

      def process_command_call exp
        _, receiver, _, ident, arguments = exp.shift 5
        with_position_from_node_symbol(ident) do |method|
          args = handle_argument_list(arguments)
          s(:call, process(receiver), method, *args)
        end
      end

      def process_vcall exp
        _, ident = exp.shift 2
        with_position_from_node_symbol(ident) do |method|
          s(:call, nil, method)
        end
      end

      def process_fcall exp
        _, ident = exp.shift 2
        with_position_from_node_symbol(ident) do |method|
          s(:call, nil, method)
        end
      end

      def process_super exp
        _, args = exp.shift 2
        args = process(args)
        args.shift
        s(:super, *args)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ripper_ruby_parser-1.1.1 lib/ripper_ruby_parser/sexp_handlers/method_calls.rb
ripper_ruby_parser-1.1.0 lib/ripper_ruby_parser/sexp_handlers/method_calls.rb