mirror of
https://github.com/SFML/SFML.git
synced 2024-11-25 21:01:05 +08:00
119 lines
4.0 KiB
Python
119 lines
4.0 KiB
Python
|
#!/usr/bin/python
|
||
|
# coding=UTF-8
|
||
|
|
||
|
from PySFML import sf
|
||
|
|
||
|
# Amélioration à faire : trouver les méthodes héritées, et de quelle classe
|
||
|
|
||
|
def function_str(function, class_name=None):
|
||
|
string = ''
|
||
|
name = function.__name__
|
||
|
doc = function.__doc__
|
||
|
if not doc.startswith(name+'('):
|
||
|
string += name+"(...)"+'\n'
|
||
|
string += doc+'\n'
|
||
|
strings = string.split('\n')
|
||
|
strings[0] = '<div class="attr_name">'+strings[0]+'</div>\n<div class="desc">'
|
||
|
string = strings[0]
|
||
|
for s in strings[1:-1]:
|
||
|
string += s + '<br />'
|
||
|
string += strings[-1]
|
||
|
inherited = ''
|
||
|
if class_name != None:
|
||
|
try:
|
||
|
base_class_name = function.__objclass__.__name__
|
||
|
if base_class_name != class_name:
|
||
|
inherited = '<div class="inherited">Inherited</div>\n'
|
||
|
except AttributeError:
|
||
|
pass
|
||
|
return string.replace('\t', ' ')+'</div>\n'+inherited
|
||
|
|
||
|
class FilesManager:
|
||
|
def __init__(self):
|
||
|
self.files = {}
|
||
|
f = open("header.htm")
|
||
|
self.header = f.read()
|
||
|
f.close()
|
||
|
f = open("footer.htm")
|
||
|
self.footer = f.read()
|
||
|
f.close()
|
||
|
|
||
|
def add(self, filename, string):
|
||
|
if not self.files.has_key(filename):
|
||
|
self.files[filename] = open('../doc/' + filename + '.html', 'w')
|
||
|
self.files[filename].write(self.header.replace('TITLE', filename))
|
||
|
self.files[filename].write(string)
|
||
|
|
||
|
def __del__(self):
|
||
|
for filename in self.files:
|
||
|
self.files[filename].write(self.footer)
|
||
|
self.files[filename].close()
|
||
|
|
||
|
|
||
|
def Main():
|
||
|
|
||
|
fm = FilesManager()
|
||
|
|
||
|
fm.add('index', '<h1>PySFML index</h1>\n')
|
||
|
|
||
|
fm.add('index', '<h2>Classes</h2>\n')
|
||
|
|
||
|
module_methods = ""
|
||
|
module_constants = ""
|
||
|
|
||
|
for m in dir(sf):
|
||
|
if not m.startswith('__'):
|
||
|
if m == 'Event':
|
||
|
attr = sf.Event()
|
||
|
else:
|
||
|
attr = getattr(sf, m)
|
||
|
if type(attr) == str:
|
||
|
module_constants += '<div class="attr_name">'+m+'</div>\n<div class="desc">"'+attr+'"</div>\n'
|
||
|
elif str(type(attr)) == "<type 'builtin_function_or_method'>" or str(type(attr)) == "<type 'method_descriptor'>":
|
||
|
module_methods += function_str(attr)
|
||
|
else:
|
||
|
fm.add('index', '<a href="'+m+'.html">'+m+'</a><br />\n')
|
||
|
info = {'Attributes':'', 'Constants':'', 'Methods':'', 'Static methods':''}
|
||
|
members = ""
|
||
|
constants = ""
|
||
|
static_methods = ""
|
||
|
methods = ""
|
||
|
for n in dir(attr):
|
||
|
if not n.startswith('__'):
|
||
|
attr2 = getattr(attr, n)
|
||
|
if str(type(attr2)) == "<type 'member_descriptor'>": # member
|
||
|
info['Attributes'] += '<div class="attr_name">'+n+'</div>\n<div class="desc">'+attr2.__doc__+'</div>\n'
|
||
|
elif type(attr2) == long:
|
||
|
info['Attributes'] += '<div class="attr_name">'+n+'</div>\n'
|
||
|
elif type(attr2) == int or type(attr2) == sf.Color: # int or color (constant)
|
||
|
info['Constants'] += '<div class="attr_name">'+n+'</div>\n'
|
||
|
elif str(type(attr2)) == "<type 'builtin_function_or_method'>": # static method
|
||
|
info['Static methods'] += function_str(attr2, m)
|
||
|
elif str(type(attr2)) == "<type 'method_descriptor'>": # method
|
||
|
info['Methods'] += function_str(attr2, m)
|
||
|
elif str(type(attr2)).startswith("<type 'Event."):
|
||
|
info['Attributes'] += '<div class="attr_name">'+n+'</div>\n<div class="desc">' + attr2.__doc__+'</div>\n'
|
||
|
for o in dir(attr2):
|
||
|
if not o.startswith('__'):
|
||
|
attr3 = getattr(attr2, o)
|
||
|
info['Attributes'] += '<div class="event_member"> > ' + o + '</div>\n'
|
||
|
else:
|
||
|
print "Warning : unknown type for " + n + " " + str(type(attr2))
|
||
|
fm.add(m, '<h1>sf.'+m+' Class Reference</h1>\n')
|
||
|
fm.add(m, '<div class="class_desc">'+attr.__doc__.replace('\n', '<br />\n').replace('\t', ' ')+'</div>\n')
|
||
|
if m != 'Event':
|
||
|
base = attr.__base__.__name__
|
||
|
if base != 'object':
|
||
|
fm.add(m, '<div class="base_class">Base class: <a href="'+base+'.html">sf.'+base+'</a>.</div>\n')
|
||
|
for t in info:
|
||
|
if info[t] != '':
|
||
|
fm.add(m, '<h2>'+t+'</h2>\n'+info[t]+'<br />\n')
|
||
|
fm.add(m, '<br />\n<br />\n')
|
||
|
|
||
|
fm.add('index', '<h2>Module methods</h2>\n' + module_methods)
|
||
|
|
||
|
fm.add('index', '<h2>Module constants</h2>\n' + module_constants)
|
||
|
|
||
|
Main()
|
||
|
|