#-*- coding: utf-8 -*-
u"""Prosty pomocnik API
Ten program jest częścią książki "Zanurkuj w Pythonie", podręcznika
o Pythonie dla doświadczonych programistów. Najnowszą wersję można
znaleźć tu: http://pl.wikibooks.org/wiki/Zanurkuj_w_Pythonie.
Program ten został oparty na przykładach zawartych w książce
"Dive Into Python", a dostępnej stąd: http://www.diveintopython.org.
"""
__author__ = "Mark Pilgrim (mark@diveintopython.org)"
__version__ = "$Revision: 1.3 $"
__date__ = "$Date: 2004/05/05 21:57:19 $"
__copyright__ = "Copyright (c) 2001 Mark Pilgrim"
__license__ = "Python"
# Jest to dobry skrypt do nauki introspekcji,
# jednak w prawdziwym świecie lepiej wykorzystywać PyDoc, który jest częścią
# standardowej biblioteki Pythona w wersjach Python 2.1 i nowszych.
#
# Być może twój IDE może już na starcie zaimportował funkcję "help"
# z modułu pydoc, a jeśli nie, zrób to tak:
#
# >>> from pydoc import help
#
# Do funkcja help z tego modułu przekazujemy dowolny obiekt, na którego temat
# chcemy uzyskać pomoc. Możemy do tej funkcji także przekazać
# łańcuch znaków:
#
# >>> help("string") # pomoc na temat modułu string
# >>> help("apihelper.info") # pomoc na temat poniższej funkcji
# >>> help() # włącza interaktywny tryb pomocy
#
# PyDoc może także działać jako serwer HTTP i dynamicznie tworzyć
# dokumentację dowolnego modułu sformatowaną jako HTML.
# Jest to bardzo fajne narzędzie. Więcej na temat PyDoc możemy znaleźć tutaj:
# http://www.onlamp.com/pub/a/python/2001/04/18/pydoc.html
def info(object, spacing=10, collapse=1):
u"""Wypisuje metody i ich notki dokumentacyjne.
Argumentem może być moduł, klasa, lista, słownik, czy też łańcuch znaków."""
methodList = [e for e in dir(object) if callable(getattr(object, e))]
processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)
print "\n".join(["%s %s" %
(method.ljust(spacing),
processFunc(unicode(getattr(object, method).__doc__)))
for method in methodList])
if __name__ == "__main__":
print info.__doc__