Sha256: 582a1fc4a06855748277b11670eb40dc3d353be6e50bce1d891251e5a6f1c063

Contents?: true

Size: 669 Bytes

Versions: 1

Compression:

Stored size: 669 Bytes

Contents

class MethodArgumentsCounter
  def initialize
    reset!
  end

  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

  def reset!
    @count = 0
    @lines = []
  end

  private
  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
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sandi_meter-0.0.1 lib/method_arguments_counter.rb