Halihallo Simon
Hatte gerade etwas Zeit und habe mal etwas gebastelt:
http://www.emedias.ch/tmp/doc.zipGefällt mir ganz gut.
Nur ein paar Sachen noch:
Immer gerne! Danke.
...
sub getNotes {
my ($self) = @_;
my $desc = $self->getElementsByTagName( 'description' );
...Da müsste 'notes' stehen.
Uha, danke. Zuviel Copy&Paste :-)
<method type="constructor" name="new">
<method type="public" name="parseFile">Ich würde das noch trennen. constructor ist ja eine ganz andere Sache als public. Das eine ist wirklich der Typ der Methode, das andere würde ich (zumindest in Java) unter einem Attribut restriction einbinden. Ich weiß nicht, wie es in Perl ist, aber in Java kann eine Methode Constructor sein und trotzdem noch die Restrictions public/private/protected/nichts haben. Ich weiß auch nicht, welche von diesen Schlüsselwörtern es in Perl gibt, denn Du hast in Doc.pm ja nur eine Methode isPublic().
In Perl gibt es eigentlich gar nichts, die Methoden werden nicht weiter charakterisiert.
Es gibt weder private, noch public oder andere Methodenrestriktionen. Perl war anfänglich
nicht für OOP konzeptioniert und dementsprechend schwach ist die Syntax heute
implementiert. Eine Klasse ist in Perl nichts anderes als ein Modul mit Funktionen und
Prozeduren, welchen eine "geblesste" Referenz übergeben wird. Es gibt demnach eigentlich
gar keine Syntax für Klassen.
Dass Restrictions und Types getrennt implementiert sein sollten stimmt. Das werde ich
noch ändern, stammte noch aus dem Anfang der Planung, wo ich es mir noch einfach gemacht
habe (nicht zuletzt deswegen, dass es das in Perl gar nicht gibt, jedoch möchte ich
schon eine Schnittstelle, die Sprachenunabhängig ist).
Interessant wäre noch, Dein Format mit XSLT zu transformieren. Dann brauchst Du kein kompliziertes Perl-Script mehr dazu. ;-)
Das hab ich mir auch überlegt, jedoch mag ich eine Dokumentationskomponente mehr ;-)
Viele Grüsse
Philipp