class Tefil::IndentStatistics

Constants

HISTGRAM_LIMIT

Public Class Methods

new(options = {}) click to toggle source
Calls superclass method Tefil::TextFilterBase::new
# File lib/tefil/indentstatistics.rb, line 5
def initialize(options = {})
  options[:smart_filename] = true
  @minimum = options[:minimum]
  super(options)
end

Public Instance Methods

histgram(frequencies) click to toggle source
# File lib/tefil/indentstatistics.rb, line 34
def histgram(frequencies)
  result = ''
  max = frequencies.values.max
  frequencies.keys.sort.each do |key|
    num = frequencies[key]
    num = num * HISTGRAM_LIMIT / max if max > HISTGRAM_LIMIT
    result += sprintf("%2d|", key)
    result += "*" * num
    result += "\n"
  end
  result
end
process_stream(in_io, out_io) click to toggle source
# File lib/tefil/indentstatistics.rb, line 11
def process_stream(in_io, out_io)
  frequencies = {}
  in_io.readlines.each do |line|
    #/^(\s*)/ =~ line #改行文字が含まれる。
    /^( *)/ =~ line
    width = $1.size
    frequencies[width] ||= 0
    frequencies[width] += 1
  end

  if @minimum
    frequencies.delete(0)
    output = frequencies.keys.min
    output = 0 if frequencies.empty?
  else
    output = ''
    output = "\n" if ARGV.size >= 2
    output += self.histgram(frequencies)
  end

  out_io.puts output
end