6
# Amélioration à faire : trouver les méthodes héritées, et de quelle classe
8
def function_str(function, class_name=None):
10
name = function.__name__
11
doc = function.__doc__
12
if not doc.startswith(name+'('):
13
string += name+"(...)"+'\n'
15
strings = string.split('\n')
16
strings[0] = '<div class="attr_name">'+strings[0]+'</div>\n<div class="desc">'
18
for s in strings[1:-1]:
19
string += s + '<br />'
22
if class_name != None:
24
base_class_name = function.__objclass__.__name__
25
if base_class_name != class_name:
26
inherited = '<div class="inherited">Inherited</div>\n'
27
except AttributeError:
29
return string.replace('\t', ' ')+'</div>\n'+inherited
34
f = open("header.htm")
35
self.header = f.read()
37
f = open("footer.htm")
38
self.footer = f.read()
41
def add(self, filename, string):
42
if not self.files.has_key(filename):
43
self.files[filename] = open('../doc/' + filename + '.html', 'w')
44
self.files[filename].write(self.header.replace('TITLE', filename))
45
self.files[filename].write(string)
48
for filename in self.files:
49
self.files[filename].write(self.footer)
50
self.files[filename].close()
57
fm.add('index', '<h1>PySFML index</h1>\n')
59
fm.add('index', '<h2>Classes</h2>\n')
65
if not m.startswith('__'):
71
module_constants += '<div class="attr_name">'+m+'</div>\n<div class="desc">"'+attr+'"</div>\n'
72
elif str(type(attr)) == "<type 'builtin_function_or_method'>" or str(type(attr)) == "<type 'method_descriptor'>":
73
module_methods += function_str(attr)
75
fm.add('index', '<a href="'+m+'.html">'+m+'</a><br />\n')
76
info = {'Attributes':'', 'Constants':'', 'Methods':'', 'Static methods':''}
82
if not n.startswith('__'):
83
attr2 = getattr(attr, n)
84
if str(type(attr2)) == "<type 'member_descriptor'>": # member
85
info['Attributes'] += '<div class="attr_name">'+n+'</div>\n<div class="desc">'+attr2.__doc__+'</div>\n'
86
elif type(attr2) == long:
87
info['Attributes'] += '<div class="attr_name">'+n+'</div>\n'
88
elif type(attr2) == int or type(attr2) == sf.Color: # int or color (constant)
89
info['Constants'] += '<div class="attr_name">'+n+'</div>\n'
90
elif str(type(attr2)) == "<type 'builtin_function_or_method'>": # static method
91
info['Static methods'] += function_str(attr2, m)
92
elif str(type(attr2)) == "<type 'method_descriptor'>": # method
93
info['Methods'] += function_str(attr2, m)
94
elif str(type(attr2)).startswith("<type 'Event."):
95
info['Attributes'] += '<div class="attr_name">'+n+'</div>\n<div class="desc">' + attr2.__doc__+'</div>\n'
97
if not o.startswith('__'):
98
attr3 = getattr(attr2, o)
99
info['Attributes'] += '<div class="event_member"> > ' + o + '</div>\n'
101
print "Warning : unknown type for " + n + " " + str(type(attr2))
102
fm.add(m, '<h1>sf.'+m+' Class Reference</h1>\n')
103
fm.add(m, '<div class="class_desc">'+attr.__doc__.replace('\n', '<br />\n').replace('\t', ' ')+'</div>\n')
105
base = attr.__base__.__name__
107
fm.add(m, '<div class="base_class">Base class: <a href="'+base+'.html">sf.'+base+'</a>.</div>\n')
110
fm.add(m, '<h2>'+t+'</h2>\n'+info[t]+'<br />\n')
111
fm.add(m, '<br />\n<br />\n')
113
fm.add('index', '<h2>Module methods</h2>\n' + module_methods)
115
fm.add('index', '<h2>Module constants</h2>\n' + module_constants)