class Minitest::RubyGolfMetrics::CharacterCounter

Public Class Methods

new(method_name, previous_method_stack = []) click to toggle source
# File lib/minitest/ruby_golf_metrics/character_counter.rb, line 10
def initialize(method_name, previous_method_stack = [])
  @method_name = method_name.to_sym
  method_stack = previous_method_stack + [@method_name]
  source = RubyGolf.method(method_name).to_raw_source(strip_enclosure: true)
  @size = source.strip.gsub(/\s+/, "").size
  parser = MethodParser.new(source)
  @children = (RubyGolf.methods(false) - method_stack).map do |method|
    CharacterCounter.new(method, method_stack) if parser.is_method_called?(method)
  end.compact
end

Public Instance Methods

called_method_sizes() click to toggle source
# File lib/minitest/ruby_golf_metrics/character_counter.rb, line 29
def called_method_sizes
  ["#{@method_name}: #{@size}", @children.map(&:called_method_sizes)].flatten.compact
end
cumulative_size() click to toggle source
# File lib/minitest/ruby_golf_metrics/character_counter.rb, line 21
def cumulative_size
  @size + @children.map(&:cumulative_size).inject(0, &:+)
end
self_contained?() click to toggle source
# File lib/minitest/ruby_golf_metrics/character_counter.rb, line 25
def self_contained?
  @children.empty?
end