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