class CodeRay::Encoders::Statistic
Makes a statistic for the given tokens.
Alias: stats
Public Instance Methods
begin_group(kind)
click to toggle source
# File lib/coderay/encoders/statistic.rb, line 70 def begin_group kind block_token ':begin_group', kind end
begin_line(kind)
click to toggle source
# File lib/coderay/encoders/statistic.rb, line 78 def begin_line kind block_token ':begin_line', kind end
block_token(action, kind)
click to toggle source
# File lib/coderay/encoders/statistic.rb, line 86 def block_token action, kind @type_stats['TOTAL'].count += 1 @type_stats[action].count += 1 @type_stats[kind].count += 1 end
end_group(kind)
click to toggle source
# File lib/coderay/encoders/statistic.rb, line 74 def end_group kind block_token ':end_group', kind end
end_line(kind)
click to toggle source
# File lib/coderay/encoders/statistic.rb, line 82 def end_line kind block_token ':end_line', kind end
text_token(text, kind)
click to toggle source
# File lib/coderay/encoders/statistic.rb, line 62 def text_token text, kind @real_token_count += 1 unless kind == :space @type_stats[kind].count += 1 @type_stats[kind].size += text.size @type_stats['TOTAL'].size += text.size @type_stats['TOTAL'].count += 1 end
Protected Instance Methods
finish(options)
click to toggle source
Calls superclass method
CodeRay::Encoders::Encoder#finish
# File lib/coderay/encoders/statistic.rb, line 42 def finish options all = @type_stats['TOTAL'] all_count, all_size = all.count, all.size @type_stats.each do |type, stat| stat.size /= stat.count.to_f end types_stats = @type_stats.sort_by { |k, v| [-v.count, k.to_s] }.map do |k, v| TOKEN_TYPES_ROW % [k, v.count, 100.0 * v.count / all_count, v.size] end.join @out << STATS % [ all_count, @real_token_count, all_size, @type_stats.delete_if { |k, v| k.is_a? String }.size, types_stats ] super end
setup(options)
click to toggle source
Calls superclass method
CodeRay::Encoders::Encoder#setup
# File lib/coderay/encoders/statistic.rb, line 17 def setup options super @type_stats = Hash.new { |h, k| h[k] = TypeStats.new 0, 0 } @real_token_count = 0 end