class SandiMeter::MethodArgumentsCounter

Public Class Methods

new() click to toggle source
# File lib/sandi_meter/method_arguments_counter.rb, line 3
def initialize
  reset!
end

Public Instance Methods

count(args_add_block_sexp) click to toggle source
# File lib/sandi_meter/method_arguments_counter.rb, line 7
def count(args_add_block_sexp)
  reset!

  @count += args_add_block_sexp[1].size
  @count += 1 if args_add_block_sexp.last == true
  bypass_sexp(args_add_block_sexp)

  return [@count, @lines.uniq.sort.first]
end
reset!() click to toggle source
# File lib/sandi_meter/method_arguments_counter.rb, line 17
def reset!
  @count = 0
  @lines = []
end

Private Instance Methods

bypass_sexp(args_add_block_sexp) click to toggle source
# File lib/sandi_meter/method_arguments_counter.rb, line 23
def bypass_sexp(args_add_block_sexp)
  args_add_block_sexp.each do |sexp|
    next unless sexp.kind_of?(Array)

    case sexp.first
    when :bare_assoc_hash
      @count += sexp[1].size - 1
    when :@int, :@ident
      @lines << sexp.last.first
    end

    bypass_sexp(sexp)
  end
end