* io.c (rb_open_file): encoding in mode string was ignored if perm is
[ruby-svn.git] / lib / rdoc / stats.rb
blobe18e3c23d71947f284ed65a91cfd9432dd90bbb0
1 require 'rdoc'
3 ##
4 # Simple stats collector
6 class RDoc::Stats
8   attr_reader :num_classes
9   attr_reader :num_files
10   attr_reader :num_methods
11   attr_reader :num_modules
13   def initialize(verbosity = 1)
14     @num_classes = 0
15     @num_files   = 0
16     @num_methods = 0
17     @num_modules = 0
19     @start = Time.now
21     @display = case verbosity
22                when 0 then Quiet.new
23                when 1 then Normal.new
24                else        Verbose.new
25                end
26   end
28   def add_alias(as)
29     @display.print_alias as
30     @num_methods += 1
31   end
33   def add_class(klass)
34     @display.print_class klass
35     @num_classes += 1
36   end
38   def add_file(file)
39     @display.print_file file
40     @num_files += 1
41   end
43   def add_method(method)
44     @display.print_method method
45     @num_methods += 1
46   end
48   def add_module(mod)
49     @display.print_module mod
50     @num_modules += 1
51   end
53   def print
54     puts "Files:   #@num_files"
55     puts "Classes: #@num_classes"
56     puts "Modules: #@num_modules"
57     puts "Methods: #@num_methods"
58     puts "Elapsed: " + sprintf("%0.1fs", Time.now - @start)
59   end
61   class Quiet
62     def print_alias(*) end
63     def print_class(*) end
64     def print_file(*) end
65     def print_method(*) end
66     def print_module(*) end
67   end
69   class Normal
70     def print_alias(as)
71       print 'a'
72     end
74     def print_class(klass)
75       print 'C'
76     end
78     def print_file(file)
79       print "\n#{file}: "
80     end
82     def print_method(method)
83       print 'm'
84     end
86     def print_module(mod)
87       print 'M'
88     end
89   end
91   class Verbose
92     def print_alias(as)
93       puts "\t\talias #{as.new_name} #{as.old_name}"
94     end
96     def print_class(klass)
97       puts "\tclass #{klass.full_name}"
98     end
100     def print_file(file)
101       puts file
102     end
104     def print_method(method)
105       puts "\t\t#{method.singleton ? '::' : '#'}#{method.name}"
106     end
108     def print_module(mod)
109       puts "\tmodule #{mod.full_name}"
110     end
111   end