1 #!/usr/local/bin/ruby
2 # encoding: utf-8
3 require "erb"
4
5 def get_klasses(obj)
6 klasses = obj.constants.sort.map{ |c| eval(c.to_s) }.select{ |c| c.class.to_s =~ /^(Class|Module)$/ }
7 normal_class, module_class, error_class = [],[],[]
8 klasses.each do |klass|
9 case
10 when klass.to_s =~ /Error/
11 error_class << klass
12 when klass.class == Module
13 module_class << klass
14 else
15 normal_class << klass
16 end
17 end
18 return normal_class, module_class, error_class
19 end
20
21 def get_methods(klass)
22 result = []
23 meths = %w(public_methods protected_methods private_methods
24 public_instance_methods protected_instance_methods
25 private_instance_methods singleton_methods)
26 begin
27 meths.each do |m|
28 meth = klass.send(m,false)
29 result << {m => meth.sort} unless meth.empty?
30 end
31 rescue Exception => e
32
33 end
34 result
35 end
36
37 klasses, modules, errors = get_klasses(Object)
38 all_klasses = klasses + modules + errors
39
40 file_name = "/Users/keyes/Desktop/ruby_class.html"
41 File.open(file_name, "w+") do |f|
42 f.puts ERB.new(DATA.read).result(binding)
43 end
44
45 __END__
46 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
47 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
48 <html>
49 <head>
50 <meta http-equiv="Content-type" content="text/html; charset=utf-8">
51 <title>Ruby 1.9 Class List</title>
52 <style type="text/css" media="screen">
53 h1 {color:#eed; background:#149; padding-left:10px;}
54 h3 {color:#833;}
55 p.list {padding-left:15px;}
56 div#meths {padding-left:15px;}
57 span#top_link {font-size:18px; float:right; margin:8px 20px;}
58 a:link {color:;}
59 </style>
60 </head>
61 <body id="main" style='background:#eed'>
62 <p class='list'>
63 <% klasses.each do |klass| %>
64 <span><a href="#<%= klass %>"><%= klass %></a></span>
65 <% end %>
66 </p>
67 <p class='list'>
68 <% modules.each do |mod| %>
69 <span><a href="#<%= mod %>"><%= mod %></a></span>
70 <% end %>
71 </p>
72 <p class='list'>
73 <% errors.each do |error| %>
74 <span><a href="#<%= error %>"><%= error %></a></span>
75 <% end %>
76 </p>
77 <% all_klasses.each do |klass| %>
78 <h1 id="<%= klass %>"><%= klass %>:<%= klass.class %><span id="top_link"><a href=<%= File.basename(file_name) %> style="color:#883">top</a></span></h1>
79 <div id='meths'>
80 <% meths = get_methods(klass) %>
81 <% meths.each do |method| %>
82 <% method.each do |title, meths| %>
83 <h3><%= title %></h3>
84 <% meths.each do |meth| %>
85 <span><a href="http://www.ruby-lang.org/ja/man/html/<%= klass %>.html#<%= meth %>"><%= meth %></a> </span>
86 <% end %>
87 <% end %>
88 <% end %>
89 </div>
90 <% end %>
91 </body>
92 </html>
No comments:
Post a Comment