class Fasterer::MethodCall
Attributes
arguments[R]
block_argument_names[R]
block_body[R]
call_element[R]
element[R]
method_name[R]
name[R]
receiver[R]
Public Class Methods
new(element)
click to toggle source
# File lib/fasterer/method_call.rb, line 12 def initialize(element) @element = element set_call_element set_receiver set_method_name set_arguments set_block_presence set_block_body set_block_argument_names end
Public Instance Methods
arguments_element()
click to toggle source
# File lib/fasterer/method_call.rb, line 31 def arguments_element call_element.sexp_body(3) || [] end
has_block?()
click to toggle source
# File lib/fasterer/method_call.rb, line 23 def has_block? @block_present || false end
lambda_literal?()
click to toggle source
# File lib/fasterer/method_call.rb, line 35 def lambda_literal? call_element.sexp_type == :lambda end
receiver_element()
click to toggle source
# File lib/fasterer/method_call.rb, line 27 def receiver_element call_element[1] end
Private Instance Methods
set_arguments()
click to toggle source
# File lib/fasterer/method_call.rb, line 60 def set_arguments @arguments = arguments_element.map { |argument| Argument.new(argument) } end
set_block_argument_names()
click to toggle source
TODO: write specs for lambdas and procs
# File lib/fasterer/method_call.rb, line 75 def set_block_argument_names @block_argument_names = if has_block? && element[2].is_a?(Sexp) # HACK: for lambdas element[2].drop(1).map { |argument| argument } end || [] end
set_block_body()
click to toggle source
# File lib/fasterer/method_call.rb, line 70 def set_block_body @block_body = element[3] if has_block? end
set_block_presence()
click to toggle source
# File lib/fasterer/method_call.rb, line 64 def set_block_presence if element.sexp_type == :iter || (arguments.last && arguments.last.type == :block_pass) @block_present = true end end
set_call_element()
click to toggle source
TODO: explanation
# File lib/fasterer/method_call.rb, line 43 def set_call_element @call_element = case element.sexp_type when :call @element when :iter @element[1] end end
set_method_name()
click to toggle source
# File lib/fasterer/method_call.rb, line 56 def set_method_name @method_name = call_element[2] end
set_receiver()
click to toggle source
# File lib/fasterer/method_call.rb, line 52 def set_receiver @receiver = ReceiverFactory.new(receiver_element) end