class PPStats::Modules

Attributes

classes[R]
defines[R]
module_count[R]
types[R]

Public Class Methods

new(options) click to toggle source
# File lib/pp-stats/modules.rb, line 8
def initialize(options)
  @options = options
  @types = ModuleTypes.instance.types
  @procssed_file = false
  @previous_line = nil
  @module_count = 0
  @classes = 0
  @defines = 0
end

Public Instance Methods

filter_file(file, type) click to toggle source
# File lib/pp-stats/modules.rb, line 60
def filter_file(file, type)
  ext = File.extname(file)
  if type.file_exts == '*'
    if ext =~ /\.\d/
      return false
    elsif type.exclude_exts.include? ext
      return false
    else
      return true
    end
  end
  type.file_exts.include? ext
end
process_file(path, index, totfiles) click to toggle source
# File lib/pp-stats/modules.rb, line 74
def process_file(path, index, totfiles)
  @procssed_file = true
  file = Pathname.new(path).basename
  line = "\r    #{file} (#{index}/#{totfiles})"
  STDOUT.write "\r" + " "*@previous_line.length if !@previous_line.nil?
  @previous_line = line
  STDOUT.write line
  STDOUT.flush
  lines = File.new(path).readlines
  commented_lines = lines.select { |line| line =~ /^#/ }
  c = lines.select { |line| line =~ /^class/ }
  d = lines.select { |line| line =~ /^define/ }
  sleep(0.05)
  @classes += 1 if ! c.empty?
  @defines += 1 if ! d.empty?
  return lines.count, commented_lines.count
end
process_module(moddir) click to toggle source
# File lib/pp-stats/modules.rb, line 35
def process_module(moddir)
  puts PPStats::Format.green "module #{moddir}"
  @types.each do |k,v|
    puts PPStats::Format.blue "  #{k.to_s}"
    process_type(moddir, v)
    puts if @procssed_file
  end
  @module_count += 1
end
process_type(moddir, type) click to toggle source
# File lib/pp-stats/modules.rb, line 45
def process_type(moddir, type)
  @procssed_file = false
  return if !File.directory? moddir

  type.dirs.each do |dir|
    files = PPStats::Utils.files_recursive_nodirs(File.join(moddir, dir))
    files.each_with_index do |file, index|
      if filter_file(file, type)
        count, commented_count = process_file(file, index+1, files.length)
        type.counter.adjust(file, count, commented_count)
      end
    end
  end
end
results() click to toggle source
# File lib/pp-stats/modules.rb, line 30
def results
  summary = PPStats::Summary.new(@types, @module_count, @classes, @defines)
  summary.run
end
run() click to toggle source
# File lib/pp-stats/modules.rb, line 18
def run
  if @options[:single_module]
    process_module(@options[:modulepath])
  else
    PPStats::Utils.files_dotless(@options[:modulepath]).each do |file|
      file = File.join(@options[:modulepath], file)
      process_module file if File.directory? file
    end
  end

end